diff --git a/Makefile.am b/Makefile.am index 0306747b68c7f72b1105398c974ff68754cafc6e..c8fe559da802149c46205ffb37901af073883ba5 100644 --- a/Makefile.am +++ b/Makefile.am @@ -6,18 +6,23 @@ AM_CPPFLAGS = $(AM_CFLAGS) INCLUDES = -I$(top_srcdir)/src_FLP -I$(top_srcdir)/src_SigProc_FIX -I$(top_srcdir)/src_SigProc_FLP -I$(top_srcdir)/src_common -I$(top_srcdir)/interface -I$(top_srcdir)/../celt/libcelt EXTRA_DIST = Silk_FLP.sln \ Silk_FLP.sln \ -src_FIX/Silk_FIX.vcproj \ -src_FLP/Silk_FLP.vcproj \ -src_common/Silk_Common.vcproj \ -src_common/Silk_CommonFLP.vcproj \ +src_FIX/src_FIX.vcxproj \ +src_FIX/src_FIX.vcxproj.filters \ +src_FLP/src_FLP.vcxproj \ +src_FLP/src_FLP.vcxproj.filters \ +src_common/src_common.vcxproj \ +src_common/src_common.vcxproj.filters \ test/Encoder.c \ -test/Enc_SDK.vcproj \ test/Decoder.c \ -test/Dec_SDK.vcproj \ test/signalCompare.c \ -test/SignalCompare.vcproj \ -src_SigProc_FLP/SigProc_FLP.vcproj \ -src_SigProc_FIX/SigProc_FIX.vcproj +src_SigProc_FLP/src_SigProc_FLP.vcxproj \ +src_SigProc_FLP/src_SigProc_FLP.vcxproj.filters \ +src_SigProc_FIX/src_SigProc_FIX.vcxproj \ +src_SigProc_FIX/src_SigProc_FIX.vcxproj.filters \ +test_silk_dec/test_silk_dec.vcxproj \ +test_silk_dec/test_silk_dec.vcxproj.filters \ +test_silk_enc/test_silk_enc.vcxproj \ +test_silk_enc/test_silk_enc.vcxproj.filters lib_LTLIBRARIES = libSKP_SILK_SDK.la libSKP_SILK_SDK_la_SOURCES = src_common/SKP_Silk_CNG.c \ @@ -56,9 +61,10 @@ src_common/SKP_Silk_tables_other.c \ src_common/SKP_Silk_tables_pitch_lag.c \ src_common/SKP_Silk_tables_pulses_per_block.c \ src_common/SKP_Silk_tables_sign.c \ -src_common/SKP_Silk_tables_type_offset.c \ src_common/SKP_Silk_VAD.c \ src_common/SKP_Silk_control_audio_bandwidth.c \ +src_common/SKP_Silk_quant_LTP_gains.c \ +src_common/SKP_Silk_VQ_WMat_EC.c \ src_FLP/SKP_Silk_apply_sine_window_FLP.c \ src_FLP/SKP_Silk_control_codec_FLP.c \ src_FLP/SKP_Silk_corrMatrix_FLP.c \ @@ -81,16 +87,9 @@ src_FLP/SKP_Silk_noise_shape_analysis_FLP.c \ src_FLP/SKP_Silk_prefilter_FLP.c \ src_FLP/SKP_Silk_process_gains_FLP.c \ src_FLP/SKP_Silk_process_NLSFs_FLP.c \ -src_FLP/SKP_Silk_quant_LTP_gains_FLP.c \ src_FLP/SKP_Silk_regularize_correlations_FLP.c \ src_FLP/SKP_Silk_residual_energy_FLP.c \ src_FLP/SKP_Silk_solve_LS_FLP.c \ -src_FLP/SKP_Silk_tables_NLSF_CB0_10_FLP.c \ -src_FLP/SKP_Silk_tables_NLSF_CB0_16_FLP.c \ -src_FLP/SKP_Silk_tables_NLSF_CB1_10_FLP.c \ -src_FLP/SKP_Silk_tables_NLSF_CB1_16_FLP.c \ -src_FLP/SKP_Silk_tables_other_FLP.c \ -src_FLP/SKP_Silk_VQ_nearest_neighbor_FLP.c \ src_FLP/SKP_Silk_warped_autocorrelation_FLP.c \ src_FLP/SKP_Silk_wrappers_FLP.c \ src_SigProc_FIX/SKP_Silk_A2NLSF.c \ @@ -177,21 +176,14 @@ src_common/SKP_Silk_perceptual_parameters.h \ src_common/SKP_Silk_PLC.h \ src_common/SKP_Silk_structs.h \ src_common/SKP_Silk_tables.h \ -src_common/SKP_Silk_tables_NLSF_CB0_10.h \ -src_common/SKP_Silk_tables_NLSF_CB0_16.h \ -src_common/SKP_Silk_tables_NLSF_CB1_10.h \ -src_common/SKP_Silk_tables_NLSF_CB1_16.h \ +src_common/SKP_Silk_tables_NLSF_CB.h \ src_common/SKP_Silk_tuning_parameters.h \ src_common/SKP_Silk_setup_complexity.h \ -src_FIX/SKP_Silk_define_FIX.h \ src_FIX/SKP_Silk_main_FIX.h \ -src_FIX/SKP_Silk_perceptual_parameters_FIX.h \ src_FIX/SKP_Silk_structs_FIX.h \ src_FLP/SKP_Silk_assembler_FLP.h \ -src_FLP/SKP_Silk_define_FLP.h \ src_FLP/SKP_Silk_main_FLP.h \ src_FLP/SKP_Silk_structs_FLP.h \ -src_FLP/SKP_Silk_tables_FLP.h \ src_SigProc_FIX/SKP_Silk_common_pitch_est_defines.h \ src_SigProc_FIX/SKP_Silk_Inlines.h \ src_SigProc_FIX/SKP_Silk_MacroCount.h \ @@ -202,19 +194,18 @@ src_SigProc_FIX/SKP_Silk_resampler_private.h \ src_SigProc_FIX/SKP_Silk_resampler_rom.h \ src_SigProc_FIX/SKP_Silk_resampler_structs.h \ src_SigProc_FIX/SKP_Silk_SigProc_FIX.h \ -src_SigProc_FLP/SKP_Silk_pitch_est_defines_FLP.h \ src_SigProc_FLP/SKP_Silk_SigProc_FLP.h bin_PROGRAMS = Encoder Decoder signalCompare -Encoder_SOURCES = test/Encoder.c test/SKP_debug.c $(top_builddir)/interface/SKP_Silk_SDK_API.h +Encoder_SOURCES = test/Encoder.c $(top_builddir)/interface/SKP_Silk_SDK_API.h Encoder_LDADD = $(lib_LTLIBRARIES) Encoder_LDFLAGS = $(LIBS) -Decoder_SOURCES = test/Decoder.c test/SKP_debug.c $(top_builddir)/interface/SKP_Silk_SDK_API.h +Decoder_SOURCES = test/Decoder.c $(top_builddir)/interface/SKP_Silk_SDK_API.h Decoder_LDADD = $(lib_LTLIBRARIES) Decoder_LDFLAGS = $(LIBS) -signalCompare_SOURCES = test/signalCompare.c test/SKP_debug.c $(top_builddir)/interface/SKP_Silk_SDK_API.h +signalCompare_SOURCES = test/signalCompare.c $(top_builddir)/interface/SKP_Silk_SDK_API.h signalCompare_LDADD = $(lib_LTLIBRARIES) signalCompare_LDFLAGS = $(LIBS) diff --git a/interface/SKP_Silk_SDK_API.h b/interface/SKP_Silk_SDK_API.h index 8a83520d8a26fa1b0902c120cd6e27cc909d359a..f263c0ac3051baa1b1343ae1efb2700814a17379 100644 --- a/interface/SKP_Silk_SDK_API.h +++ b/interface/SKP_Silk_SDK_API.h @@ -118,7 +118,7 @@ SKP_int SKP_Silk_SDK_Decode( /* O: Returns error co ec_dec *psRangeDec, /* I/O Compressor data structure */ const SKP_int nBytesIn, /* I: Number of input bytes */ SKP_int16 *samplesOut, /* O: Decoded output speech vector */ - SKP_int32 *nSamplesOut /* I/O: Number of samples (vector/decoded) */ + SKP_int32 *nSamplesOut /* O: Number of samples decoded */ ); /***************************************************************/ diff --git a/interface/SKP_debug.h b/interface/SKP_debug.h index d55ca95697098104f1f03e0535f06b326bc0d584..8694bb006bb2ade14f6bb8ed65e37f0e869bdef0 100644 --- a/interface/SKP_debug.h +++ b/interface/SKP_debug.h @@ -254,24 +254,50 @@ extern SKP_int64 SKP_Timer_depth[SKP_NUM_TIMERS_MAX]; /************************************/ /* opens an empty file if this file has not yet been open, then writes to the file and closes it */ /* if file has been open previously it is opened again and the fwrite is appending, finally it is closed */ -#define SAVE_DATA(FILE_NAME, DATA_PTR, N_BYTES) { static SKP_int32 init = 0;FILE *fp;if (init == 0) {init = 1;fp = fopen(#FILE_NAME, "wb");}else {fp = fopen(#FILE_NAME, "ab+");} fwrite((DATA_PTR), (N_BYTES), 1, fp);fclose(fp);} +#define SAVE_DATA( FILE_NAME, DATA_PTR, N_BYTES ) { \ + static SKP_int32 init = 0; \ + FILE *fp; \ + if (init == 0) { \ + init = 1; \ + fp = fopen(#FILE_NAME, "wb"); \ + } else { \ + fp = fopen(#FILE_NAME, "ab+"); \ + } \ + fwrite((DATA_PTR), (N_BYTES), 1, fp); \ + fclose(fp); \ +} /* Example: DEBUG_STORE_DATA(testfile.pcm, &RIN[0], 160*sizeof(SKP_int16)); */ #if 0 /* Ensure that everything is written to files when an assert breaks */ #define DEBUG_STORE_DATA(FILE_NAME, DATA_PTR, N_BYTES) SAVE_DATA(FILE_NAME, DATA_PTR, N_BYTES) +#define DEBUG_STORE_CLOSE_FILES + #else + +#define SKP_NUM_STORES_MAX 100 +extern FILE *SKP_debug_store_fp[ SKP_NUM_STORES_MAX ]; +extern int SKP_debug_store_count; + /* Faster way of storing the data */ -#define DEBUG_STORE_DATA(FILE_NAME, DATA_PTR, N_BYTES) { \ - static SKP_int32 init = 0; \ - static FILE *fp; \ - if (init == 0) \ - { \ - init = 1; \ - fp = fopen(#FILE_NAME, "wb"); \ - } \ - fwrite((DATA_PTR), (N_BYTES), 1, fp); \ +#define DEBUG_STORE_DATA( FILE_NAME, DATA_PTR, N_BYTES ) { \ + static SKP_int init = 0, cnt = 0; \ + static FILE **fp; \ + if (init == 0) { \ + init = 1; \ + cnt = SKP_debug_store_count++; \ + SKP_debug_store_fp[ cnt ] = fopen(#FILE_NAME, "wb"); \ + } \ + fwrite((DATA_PTR), (N_BYTES), 1, SKP_debug_store_fp[ cnt ]); \ +} + +/* Call this at the end of main() */ +#define DEBUG_STORE_CLOSE_FILES { \ + SKP_int i; \ + for( i = 0; i < SKP_debug_store_count; i++ ) { \ + fclose( SKP_debug_store_fp[ i ] ); \ + } \ } #endif @@ -283,6 +309,7 @@ extern SKP_int64 SKP_Timer_depth[SKP_NUM_TIMERS_MAX]; /* define macros as empty strings */ #define DEBUG_STORE_DATA(FILE_NAME, DATA_PTR, N_BYTES) #define SAVE_DATA(FILE_NAME, DATA_PTR, N_BYTES) +#define DEBUG_STORE_CLOSE_FILES #endif /* SKP_DEBUG */ diff --git a/src_FIX/SKP_Silk_control_codec_FIX.c b/src_FIX/SKP_Silk_control_codec_FIX.c index 073a66ba457c5fb918c5019241e12bb1d067d789..63ddd76d762290bfcc1b358cb700052690b558f2 100644 --- a/src_FIX/SKP_Silk_control_codec_FIX.c +++ b/src_FIX/SKP_Silk_control_codec_FIX.c @@ -34,11 +34,6 @@ SKP_INLINE SKP_int SKP_Silk_setup_resamplers( SKP_int fs_kHz /* I */ ); -SKP_INLINE SKP_int SKP_Silk_setup_packetsize( - SKP_Silk_encoder_state_FIX *psEnc, /* I/O */ - SKP_int PacketSize_ms /* I */ -); - SKP_INLINE SKP_int SKP_Silk_setup_fs( SKP_Silk_encoder_state_FIX *psEnc, /* I/O */ SKP_int fs_kHz, /* I */ @@ -141,40 +136,6 @@ void SKP_Silk_LBRR_ctrl_FIX( } } -SKP_INLINE SKP_int SKP_Silk_setup_packetsize( - SKP_Silk_encoder_state_FIX *psEnc, /* I/O */ - SKP_int PacketSize_ms /* I */ -) -{ - SKP_int ret = SKP_SILK_NO_ERROR; - if( ( PacketSize_ms != 10 ) && - ( PacketSize_ms != 20 ) && - ( PacketSize_ms != 40 ) && - ( PacketSize_ms != 60 ) ) { - ret = SKP_SILK_ENC_PACKET_SIZE_NOT_SUPPORTED; - } else { - if( PacketSize_ms != psEnc->sCmn.PacketSize_ms ) { - if( PacketSize_ms == 10 ) { - /* Only allowed when the payload buffer is empty */ - psEnc->sCmn.nb_subfr = MAX_NB_SUBFR >> 1; - psEnc->sCmn.PacketSize_ms = PacketSize_ms; - psEnc->sPred.pitch_LPC_win_length = SKP_SMULBB( FIND_PITCH_LPC_WIN_MS_2_SF, psEnc->sCmn.fs_kHz ); - /* Packet length changes. Reset LBRR buffer */ - SKP_Silk_LBRR_reset( &psEnc->sCmn ); - } else{ - psEnc->sCmn.nb_subfr = MAX_NB_SUBFR; - psEnc->sCmn.PacketSize_ms = PacketSize_ms; - psEnc->sPred.pitch_LPC_win_length = SKP_SMULBB( FIND_PITCH_LPC_WIN_MS, psEnc->sCmn.fs_kHz ); - /* Packet length changes. Reset LBRR buffer */ - SKP_Silk_LBRR_reset( &psEnc->sCmn ); - } - } - psEnc->sCmn.frame_length = SKP_SMULBB( psEnc->sCmn.subfr_length, psEnc->sCmn.nb_subfr ); - } - - return(ret); -} - SKP_INLINE SKP_int SKP_Silk_setup_resamplers( SKP_Silk_encoder_state_FIX *psEnc, /* I/O */ SKP_int fs_kHz /* I */ @@ -235,16 +196,37 @@ SKP_INLINE SKP_int SKP_Silk_setup_fs( { SKP_int ret = SKP_SILK_NO_ERROR; + /* Set packet size */ + if( PacketSize_ms != psEnc->sCmn.PacketSize_ms ) { + if( ( PacketSize_ms != 10 ) && + ( PacketSize_ms != 20 ) && + ( PacketSize_ms != 40 ) && + ( PacketSize_ms != 60 ) ) { + ret = SKP_SILK_ENC_PACKET_SIZE_NOT_SUPPORTED; + } + if( PacketSize_ms == 10 ) { + /* Only allowed when the payload buffer is empty */ + psEnc->sCmn.nb_subfr = MAX_NB_SUBFR >> 1; + psEnc->sPred.pitch_LPC_win_length = SKP_SMULBB( FIND_PITCH_LPC_WIN_MS_2_SF, fs_kHz ); + } else { + psEnc->sCmn.nb_subfr = MAX_NB_SUBFR; + psEnc->sPred.pitch_LPC_win_length = SKP_SMULBB( FIND_PITCH_LPC_WIN_MS, fs_kHz ); + } + /* Packet length changes. Reset LBRR buffer */ + SKP_Silk_LBRR_reset( &psEnc->sCmn ); + psEnc->sCmn.PacketSize_ms = PacketSize_ms; + } + /* Set internal sampling frequency */ if( psEnc->sCmn.fs_kHz != fs_kHz ) { /* reset part of the state */ - SKP_memset( &psEnc->sShape, 0, sizeof( SKP_Silk_shape_state_FIX ) ); - SKP_memset( &psEnc->sPrefilt, 0, sizeof( SKP_Silk_prefilter_state_FIX ) ); - SKP_memset( &psEnc->sNSQ, 0, sizeof( SKP_Silk_nsq_state ) ); - SKP_memset( &psEnc->sPred, 0, sizeof( SKP_Silk_predict_state_FIX ) ); - SKP_memset( psEnc->sNSQ.xq, 0, ( 2 * MAX_FRAME_LENGTH ) * sizeof( SKP_int16 ) ); - SKP_memset( psEnc->sNSQ_LBRR.xq, 0, ( 2 * MAX_FRAME_LENGTH ) * sizeof( SKP_int16 ) ); - SKP_memset( psEnc->sCmn.LBRR_buffer, 0, MAX_LBRR_DELAY * sizeof( SKP_SILK_LBRR_struct ) ); + SKP_memset( &psEnc->sShape, 0, sizeof( SKP_Silk_shape_state_FIX ) ); + SKP_memset( &psEnc->sPrefilt, 0, sizeof( SKP_Silk_prefilter_state_FIX ) ); + SKP_memset( &psEnc->sNSQ, 0, sizeof( SKP_Silk_nsq_state ) ); + SKP_memset( &psEnc->sPred, 0, sizeof( SKP_Silk_predict_state_FIX ) ); + SKP_memset( psEnc->sNSQ.xq, 0, 2 * MAX_FRAME_LENGTH * sizeof( SKP_int16 ) ); + SKP_memset( psEnc->sNSQ_LBRR.xq, 0, 2 * MAX_FRAME_LENGTH * sizeof( SKP_int16 ) ); + SKP_memset( psEnc->sCmn.LBRR_buffer, 0, MAX_LBRR_DELAY * sizeof( SKP_SILK_LBRR_struct ) ); #if SWITCH_TRANSITION_FILTERING SKP_memset( psEnc->sCmn.sLP.In_LP_State, 0, 2 * sizeof( SKP_int32 ) ); if( psEnc->sCmn.sLP.mode == 1 ) { @@ -278,46 +260,68 @@ SKP_INLINE SKP_int SKP_Silk_setup_fs( psEnc->sCmn.predictLPCOrder = MIN_LPC_ORDER; psEnc->sCmn.psNLSF_CB[ 0 ] = &SKP_Silk_NLSF_CB0_10; psEnc->sCmn.psNLSF_CB[ 1 ] = &SKP_Silk_NLSF_CB1_10; + if( psEnc->sCmn.nb_subfr == MAX_NB_SUBFR ){ + psEnc->sCmn.pitch_contour_iCDF = SKP_Silk_pitch_contour_NB_iCDF; + } else if( psEnc->sCmn.nb_subfr == MAX_NB_SUBFR / 2 ){ + psEnc->sCmn.pitch_contour_iCDF = SKP_Silk_pitch_contour_10_ms_NB_iCDF; + } else { + /* Unsupported number of frames */ + SKP_assert( 0 ); + } } else { psEnc->sCmn.predictLPCOrder = MAX_LPC_ORDER; psEnc->sCmn.psNLSF_CB[ 0 ] = &SKP_Silk_NLSF_CB0_16; psEnc->sCmn.psNLSF_CB[ 1 ] = &SKP_Silk_NLSF_CB1_16; + if( psEnc->sCmn.nb_subfr == MAX_NB_SUBFR ){ + psEnc->sCmn.pitch_contour_iCDF = SKP_Silk_pitch_contour_iCDF; + } else if( psEnc->sCmn.nb_subfr == MAX_NB_SUBFR / 2 ){ + psEnc->sCmn.pitch_contour_iCDF = SKP_Silk_pitch_contour_10_ms_iCDF; + } else { + /* Unsupported number of frames */ + SKP_assert( 0 ); + } } - psEnc->sCmn.subfr_length = SKP_SMULBB( SUB_FRAME_LENGTH_MS, fs_kHz ); + psEnc->sCmn.subfr_length = SUB_FRAME_LENGTH_MS * fs_kHz; + psEnc->sCmn.frame_length = SKP_SMULBB( psEnc->sCmn.subfr_length, psEnc->sCmn.nb_subfr ); psEnc->sCmn.ltp_mem_length = SKP_SMULBB( LTP_MEM_LENGTH_MS, fs_kHz ); psEnc->sCmn.la_pitch = SKP_SMULBB( LA_PITCH_MS, fs_kHz ); psEnc->sPred.min_pitch_lag = SKP_SMULBB( 3, fs_kHz ); psEnc->sPred.max_pitch_lag = SKP_SMULBB( 18, fs_kHz ); if( psEnc->sCmn.nb_subfr == MAX_NB_SUBFR ){ psEnc->sPred.pitch_LPC_win_length = SKP_SMULBB( FIND_PITCH_LPC_WIN_MS, fs_kHz ); - } else { + } else if( psEnc->sCmn.nb_subfr == MAX_NB_SUBFR / 2 ){ psEnc->sPred.pitch_LPC_win_length = SKP_SMULBB( FIND_PITCH_LPC_WIN_MS_2_SF, fs_kHz ); + } else { + /* Unsupported number of frames */ + SKP_assert( 0 ); } if( psEnc->sCmn.fs_kHz == 24 ) { - psEnc->mu_LTP_Q8 = SKP_FIX_CONST( MU_LTP_QUANT_SWB, 8 ); - psEnc->sCmn.bitrate_threshold_up = SKP_int32_MAX; - psEnc->sCmn.bitrate_threshold_down = SWB2WB_BITRATE_BPS; + psEnc->sCmn.mu_LTP_Q10 = SKP_FIX_CONST( MU_LTP_QUANT_SWB, 10 ); + psEnc->sCmn.bitrate_threshold_up = SKP_int32_MAX; + psEnc->sCmn.bitrate_threshold_down = SWB2WB_BITRATE_BPS; + psEnc->sCmn.pitch_lag_low_bits_iCDF = SKP_Silk_uniform12_iCDF; } else if( psEnc->sCmn.fs_kHz == 16 ) { - psEnc->mu_LTP_Q8 = SKP_FIX_CONST( MU_LTP_QUANT_WB, 8 ); - psEnc->sCmn.bitrate_threshold_up = WB2SWB_BITRATE_BPS; - psEnc->sCmn.bitrate_threshold_down = WB2MB_BITRATE_BPS; + psEnc->sCmn.mu_LTP_Q10 = SKP_FIX_CONST( MU_LTP_QUANT_WB, 10 ); + psEnc->sCmn.bitrate_threshold_up = WB2SWB_BITRATE_BPS; + psEnc->sCmn.bitrate_threshold_down = WB2MB_BITRATE_BPS; + psEnc->sCmn.pitch_lag_low_bits_iCDF = SKP_Silk_uniform8_iCDF; } else if( psEnc->sCmn.fs_kHz == 12 ) { - psEnc->mu_LTP_Q8 = SKP_FIX_CONST( MU_LTP_QUANT_MB, 8 ); - psEnc->sCmn.bitrate_threshold_up = MB2WB_BITRATE_BPS; - psEnc->sCmn.bitrate_threshold_down = MB2NB_BITRATE_BPS; + psEnc->sCmn.mu_LTP_Q10 = SKP_FIX_CONST( MU_LTP_QUANT_MB, 10 ); + psEnc->sCmn.bitrate_threshold_up = MB2WB_BITRATE_BPS; + psEnc->sCmn.bitrate_threshold_down = MB2NB_BITRATE_BPS; + psEnc->sCmn.pitch_lag_low_bits_iCDF = SKP_Silk_uniform6_iCDF; + } else if( psEnc->sCmn.fs_kHz == 8 ) { + psEnc->sCmn.mu_LTP_Q10 = SKP_FIX_CONST( MU_LTP_QUANT_NB, 10 ); + psEnc->sCmn.bitrate_threshold_up = NB2MB_BITRATE_BPS; + psEnc->sCmn.bitrate_threshold_down = 0; + psEnc->sCmn.pitch_lag_low_bits_iCDF = SKP_Silk_uniform4_iCDF; } else { - psEnc->mu_LTP_Q8 = SKP_FIX_CONST( MU_LTP_QUANT_NB, 8 ); - psEnc->sCmn.bitrate_threshold_up = NB2MB_BITRATE_BPS; - psEnc->sCmn.bitrate_threshold_down = 0; + /* unsupported sampling rate */ + SKP_assert( 0 ); } psEnc->sCmn.fs_kHz_changed = 1; } - /********************************************/ - /* Set packet size */ - /********************************************/ - ret += SKP_Silk_setup_packetsize( psEnc, PacketSize_ms ); - /* Check that settings are valid */ SKP_assert( ( psEnc->sCmn.subfr_length * psEnc->sCmn.nb_subfr ) == psEnc->sCmn.frame_length ); @@ -329,9 +333,9 @@ SKP_INLINE SKP_int SKP_Silk_setup_rate( SKP_int TargetRate_bps /* I */ ) { - SKP_int k, ret = 0; + SKP_int k, ret = SKP_SILK_NO_ERROR; SKP_int32 frac_Q6; - const SKP_int32 *rateTable; + const SKP_uint16 *rateTable; /* Set bitrate/coding quality */ if( TargetRate_bps != psEnc->sCmn.TargetRate_bps ) { diff --git a/src_FIX/SKP_Silk_define_FIX.h b/src_FIX/SKP_Silk_define_FIX.h deleted file mode 100644 index 183b6aa741ed27b080d6364d4b2d588b54d103ec..0000000000000000000000000000000000000000 --- a/src_FIX/SKP_Silk_define_FIX.h +++ /dev/null @@ -1,92 +0,0 @@ -/*********************************************************************** -Copyright (c) 2006-2010, Skype Limited. All rights reserved. -Redistribution and use in source and binary forms, with or without -modification, (subject to the limitations in the disclaimer below) -are permitted provided that the following conditions are met: -- Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. -- Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -- Neither the name of Skype Limited, nor the names of specific -contributors, may be used to endorse or promote products derived from -this software without specific prior written permission. -NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED -BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, -BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -***********************************************************************/ - -#ifndef SKP_SILK_DEFINE_FIX_H -#define SKP_SILK_DEFINE_FIX_H - -#ifdef __cplusplus -extern "C" -{ -#endif - -/* Head room for correlations */ -#define LTP_CORRS_HEAD_ROOM 2 -#define LPC_CORRS_HEAD_ROOM 10 - -#define WB_DETECT_ACTIVE_SPEECH_LEVEL_THRES_Q8 179 // 179.2_Q8 = 0.7f required speech activity for counting frame as active - -/* DTX settings */ -#define SPEECH_ACTIVITY_DTX_THRES_Q8 26 // 25.60_Q8 = 0.1f - -#define LBRR_SPEECH_ACTIVITY_THRES_Q8 128 - -/* level of noise floor for whitening filter LPC analysis in pitch analysis */ -#define FIND_PITCH_WHITE_NOISE_FRACTION_Q16 66 - -/* bandwdith expansion for whitening filter in pitch analysis */ -#define FIND_PITCH_BANDWITH_EXPANSION_Q16 64881 - -/* Threshold used by pitch estimator for early escape */ -#define FIND_PITCH_CORRELATION_THRESHOLD_Q16_HC_MODE 45875 // 0.7 -#define FIND_PITCH_CORRELATION_THRESHOLD_Q16_MC_MODE 49152 // 0.75 -#define FIND_PITCH_CORRELATION_THRESHOLD_Q16_LC_MODE 52429 // 0.8 - -/* Regualarization factor for correlation matrix. Equivalent to adding noise at -50 dB */ -#define FIND_LTP_COND_FAC_Q31 21475 -#define FIND_LPC_COND_FAC_Q32 257698 // 6e-5 - -/* Find Pred Coef defines */ -#define INACTIVE_BWExp_Q16 64225 // 0.98 -#define ACTIVE_BWExp_Q16 65470 // 0.999 -#define LTP_DAMPING_Q16 66 -#define LTP_SMOOTHING_Q26 6710886 - -/* LTP quantization settings */ -#define MU_LTP_QUANT_NB_Q8 8 -#define MU_LTP_QUANT_MB_Q8 6 -#define MU_LTP_QUANT_WB_Q8 5 -#define MU_LTP_QUANT_SWB_Q8 4 - -/***********************/ -/* High pass filtering */ -/***********************/ -/* Smoothing parameters for low end of pitch frequency range estimation */ -#define VARIABLE_HP_SMTH_COEF1_Q16 6554 // 0.1 -#define VARIABLE_HP_SMTH_COEF2_Q16 983 // 0.015 - -/* Min and max values for low end of pitch frequency range estimation */ -#define VARIABLE_HP_MIN_FREQ_Q0 80 -#define VARIABLE_HP_MAX_FREQ_Q0 150 - -/* Max absolute difference between log2 of pitch frequency and smoother state, to enter the smoother */ -#define VARIABLE_HP_MAX_DELTA_FREQ_Q7 51 // 0.4 in Q7 - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/src_FIX/SKP_Silk_encode_frame_FIX.c b/src_FIX/SKP_Silk_encode_frame_FIX.c index e4b726d1e110c841b8f34ce1221b089e2fb7968f..e3d8789e690221e85d7c89d108026358874660c1 100644 --- a/src_FIX/SKP_Silk_encode_frame_FIX.c +++ b/src_FIX/SKP_Silk_encode_frame_FIX.c @@ -46,7 +46,6 @@ SKP_int SKP_Silk_encode_frame_FIX( SKP_int16 pIn_HP[ MAX_FRAME_LENGTH ]; SKP_int16 res_pitch[ 2 * MAX_FRAME_LENGTH + LA_PITCH_MAX ]; SKP_int LBRR_idx, frame_terminator, SNR_dB_Q7; - const SKP_uint16 *FrameTermination_CDF; /* Low bitrate redundancy parameters */ SKP_uint8 LBRRpayload[ MAX_ARITHM_BYTES ]; @@ -115,7 +114,7 @@ TOC(PREFILTER) /* Find linear prediction coefficients (LPC + LTP) */ /***************************************************/ TIC(FIND_PRED_COEF) - SKP_Silk_find_pred_coefs_FIX( psEnc, &sEncCtrl, res_pitch ); + SKP_Silk_find_pred_coefs_FIX( psEnc, &sEncCtrl, res_pitch, x_frame ); TOC(FIND_PRED_COEF) /****************************************/ @@ -133,7 +132,7 @@ TOC(PROCESS_GAINS) /****************************************/ nBytesLBRR = MAX_ARITHM_BYTES; TIC(LBRR) - SKP_Silk_LBRR_encode_FIX( psEnc, &sEncCtrl, LBRRpayload, &nBytesLBRR, xfw ); + //SKP_Silk_LBRR_encode_FIX( psEnc, &sEncCtrl, LBRRpayload, &nBytesLBRR, xfw ); TOC(LBRR) /*****************************************/ @@ -186,7 +185,6 @@ TOC(NSQ) /****************************************/ TIC(ENCODE_PARAMS) SKP_Silk_encode_parameters( &psEnc->sCmn, &sEncCtrl.sCmn, psRangeEnc ); - FrameTermination_CDF = SKP_Silk_FrameTermination_CDF; TOC(ENCODE_PARAMS) /****************************************/ @@ -220,8 +218,7 @@ TOC(ENCODE_PARAMS) frame_terminator = SKP_SILK_NO_LBRR; /* Add the frame termination info to stream */ - ec_encode_bin( psRangeEnc, FrameTermination_CDF[ frame_terminator ], - FrameTermination_CDF[ frame_terminator + 1 ], 16 ); + ec_enc_icdf( psRangeEnc, frame_terminator, SKP_Silk_FrameTermination_iCDF, 8 ); /* Code excitation signal */ for( i = 0; i < psEnc->sCmn.nFramesInPayloadBuf; i++ ) { @@ -316,7 +313,6 @@ TOC(ENCODE_FRAME) int i; DEBUG_STORE_DATA( xf.dat, x_frame + LA_SHAPE_MS * psEnc->sCmn.fs_kHz, psEnc->sCmn.frame_length * sizeof( SKP_int16 ) ); DEBUG_STORE_DATA( xfw.dat, xfw, psEnc->sCmn.frame_length * sizeof( SKP_int16 ) ); - // DEBUG_STORE_DATA( q.dat, &psEnc->sCmn.q[ ( psEnc->sCmn.nFramesInPayloadBuf - 1)*psEnc->sCmn.frame_length ], psEnc->sCmn.frame_length * sizeof( SKP_int8 ) ); DEBUG_STORE_DATA( pitchL.dat, sEncCtrl.sCmn.pitchL, psEnc->sCmn.nb_subfr * sizeof( SKP_int ) ); for( i = 0; i < psEnc->sCmn.nb_subfr * LTP_ORDER; i++ ) { tmp[ i ] = (SKP_float)sEncCtrl.LTPCoef_Q14[ i ] / 16384.0f; @@ -471,8 +467,7 @@ void SKP_Silk_LBRR_encode_FIX( frame_terminator = SKP_SILK_LAST_FRAME; /* Add the frame termination info to stream */ - ec_encode_bin( psRangeEnc_LBRR, FrameTermination_CDF[ frame_terminator ], - FrameTermination_CDF[ frame_terminator + 1 ], 16 ); + ec_enc_icdf( psRangeEnc, frame_terminator, SKP_Silk_FrameTermination_iCDF, 8 ); /*********************************************/ /* Encode quantization indices of excitation */ @@ -512,8 +507,7 @@ void SKP_Silk_LBRR_encode_FIX( /* Encode that more frames follows */ frame_terminator = SKP_SILK_MORE_FRAMES; - ec_encode_bin( psRangeEnc_LBRR, FrameTermination_CDF[ frame_terminator ], - FrameTermination_CDF[ frame_terminator + 1 ], 16 ); + ec_enc_icdf( psRangeEnc, frame_terminator, SKP_Silk_FrameTermination_iCDF, 8 ); } /* Restore original Gains */ diff --git a/src_FIX/SKP_Silk_find_pitch_lags_FIX.c b/src_FIX/SKP_Silk_find_pitch_lags_FIX.c index ab136565155db779e13e22314b23f03e2fc7656b..876403eb95040f3e7e8c2dc9bc628eb0273e5e03 100644 --- a/src_FIX/SKP_Silk_find_pitch_lags_FIX.c +++ b/src_FIX/SKP_Silk_find_pitch_lags_FIX.c @@ -82,7 +82,7 @@ void SKP_Silk_find_pitch_lags_FIX( SKP_Silk_autocorr( auto_corr, &scale, Wsig, psPredSt->pitch_LPC_win_length, psEnc->sCmn.pitchEstimationLPCOrder + 1 ); /* Add white noise, as fraction of energy */ - auto_corr[ 0 ] = SKP_SMLAWB( auto_corr[ 0 ], auto_corr[ 0 ], SKP_FIX_CONST( FIND_PITCH_WHITE_NOISE_FRACTION, 16 ) ); + auto_corr[ 0 ] = SKP_SMLAWB( auto_corr[ 0 ], auto_corr[ 0 ], SKP_FIX_CONST( FIND_PITCH_WHITE_NOISE_FRACTION, 16 ) ) + 1; /* Calculate the reflection coefficients using schur */ res_nrg = SKP_Silk_schur( rc_Q15, auto_corr, psEnc->sCmn.pitchEstimationLPCOrder ); diff --git a/src_FIX/SKP_Silk_find_pred_coefs_FIX.c b/src_FIX/SKP_Silk_find_pred_coefs_FIX.c index a82775c9c36ac1cf1fcdb189267d2678ce3d6edf..9fa696b0ec1685d77279f18a432303e65d1696a4 100644 --- a/src_FIX/SKP_Silk_find_pred_coefs_FIX.c +++ b/src_FIX/SKP_Silk_find_pred_coefs_FIX.c @@ -54,10 +54,16 @@ double SKP_Silk_energy_FLP( /* integer to floating-point conversion */ SKP_INLINE void SKP_short2float_array( - SKP_float *out, - const SKP_int16 *in, - SKP_int32 length -); + SKP_float *out, + const SKP_int16 *in, + SKP_int32 length +) +{ + SKP_int32 k; + for (k = length-1; k >= 0; k--) { + out[k] = (SKP_float)in[k]; + } +} SKP_INLINE SKP_float SKP_Silk_log2( double x ) { return ( SKP_float )( 3.32192809488736 * log10( x ) ); } @@ -66,7 +72,8 @@ SKP_INLINE SKP_float SKP_Silk_log2( double x ) { return ( SKP_float )( 3.3219280 void SKP_Silk_find_pred_coefs_FIX( SKP_Silk_encoder_state_FIX *psEnc, /* I/O encoder state */ SKP_Silk_encoder_control_FIX *psEncCtrl, /* I/O encoder control */ - const SKP_int16 res_pitch[] /* I Residual from pitch analysis */ + const SKP_int16 res_pitch[], /* I Residual from pitch analysis */ + const SKP_int16 x[] /* I Speech signal */ ) { SKP_int i; @@ -126,8 +133,8 @@ void SKP_Silk_find_pred_coefs_FIX( #endif /* Quantize LTP gain parameters */ - SKP_Silk_quant_LTP_gains_FIX( psEncCtrl->LTPCoef_Q14, psEncCtrl->sCmn.LTPIndex, &psEncCtrl->sCmn.PERIndex, - WLTP, psEnc->mu_LTP_Q8, psEnc->sCmn.LTPQuantLowComplexity, psEnc->sCmn.nb_subfr); + SKP_Silk_quant_LTP_gains( psEncCtrl->LTPCoef_Q14, psEncCtrl->sCmn.LTPIndex, &psEncCtrl->sCmn.PERIndex, + WLTP, psEnc->sCmn.mu_LTP_Q10, psEnc->sCmn.LTPQuantLowComplexity, psEnc->sCmn.nb_subfr); /* Control LTP scaling */ SKP_Silk_LTP_scale_ctrl_FIX( psEnc, psEncCtrl ); @@ -141,7 +148,7 @@ void SKP_Silk_find_pred_coefs_FIX( /* UNVOICED */ /************/ /* Create signal with prepended subframes, scaled by inverse gains */ - x_ptr = psEnc->x_buf + psEnc->sCmn.ltp_mem_length - psEnc->sCmn.predictLPCOrder; + x_ptr = x - psEnc->sCmn.predictLPCOrder; x_pre_ptr = LPC_in_pre; for( i = 0; i < psEnc->sCmn.nb_subfr; i++ ) { SKP_Silk_scale_copy_vector16( x_pre_ptr, x_ptr, invGains_Q16[ i ], diff --git a/src_FIX/SKP_Silk_main_FIX.h b/src_FIX/SKP_Silk_main_FIX.h index c4573e17d9edd37c6e5271205c7f1bb09afabfee..577f2b88fe06df434d585879666d6d6602069e4e 100644 --- a/src_FIX/SKP_Silk_main_FIX.h +++ b/src_FIX/SKP_Silk_main_FIX.h @@ -144,7 +144,8 @@ void SKP_Silk_find_pitch_lags_FIX( void SKP_Silk_find_pred_coefs_FIX( SKP_Silk_encoder_state_FIX *psEnc, /* I/O encoder state */ SKP_Silk_encoder_control_FIX *psEncCtrl, /* I/O encoder control */ - const SKP_int16 res_pitch[] /* I Residual from pitch analysis */ + const SKP_int16 res_pitch[], /* I Residual from pitch analysis */ + const SKP_int16 x[] /* I Speech signal */ ); /* LPC analysis */ @@ -197,17 +198,6 @@ void SKP_Silk_residual_energy_FIX( const SKP_int LPC_order /* I LPC order */ ); -/* LTP tap quantizer */ -void SKP_Silk_quant_LTP_gains_FIX( - SKP_int16 B_Q14[], /* I/O (un)quantized LTP gains */ - SKP_int cbk_index[], /* O Codebook Index */ - SKP_int *periodicity_index, /* O Periodicity Index */ - const SKP_int32 W_Q18[], /* I Error Weights in Q18 */ - SKP_int mu_Q8, /* I Mu value (R/D tradeoff) */ - SKP_int lowComplexity, /* I Flag for low complexity */ - const SKP_int nb_subfr /* I number of subframes */ -); - /******************/ /* NLSF Quantizer */ /******************/ @@ -265,18 +255,6 @@ SKP_int32 SKP_Silk_residual_energy16_covar_FIX( SKP_int cQ /* I Q value for c vector 0 - 15 */ ); -/* Entropy constrained MATRIX-weighted VQ, for a single input data vector */ -void SKP_Silk_VQ_WMat_EC_FIX( - SKP_int *ind, /* O index of best codebook vector */ - SKP_int32 *rate_dist_Q14, /* O best weighted quantization error + mu * rate*/ - const SKP_int16 *in_Q14, /* I input vector to be quantized */ - const SKP_int32 *W_Q18, /* I weighting matrix */ - const SKP_int16 *cb_Q14, /* I codebook */ - const SKP_int16 *cl_Q6, /* I code length for each codebook vector */ - const SKP_int mu_Q8, /* I tradeoff between weighted error and rate */ - SKP_int L /* I number of vectors in codebook */ -); - /* Processing of gains */ void SKP_Silk_process_gains_FIX( SKP_Silk_encoder_state_FIX *psEnc, /* I/O Encoder state */ diff --git a/src_FIX/SKP_Silk_noise_shape_analysis_FIX.c b/src_FIX/SKP_Silk_noise_shape_analysis_FIX.c index 05cbd2baf45f465f4988d881de46a484e212b922..6c4e074baba36ea3478e07731d9ca0e819951a14 100644 --- a/src_FIX/SKP_Silk_noise_shape_analysis_FIX.c +++ b/src_FIX/SKP_Silk_noise_shape_analysis_FIX.c @@ -161,13 +161,14 @@ void SKP_Silk_noise_shape_analysis_FIX( /****************/ /* CONTROL SNR */ /****************/ -#if DEACTIVATE_SNR_FEEDBACK - psEncCtrl->current_SNR_dB_Q7 = psEnc->SNR_dB_Q7; -#else /* Reduce SNR_dB values if recent bitstream has exceeded TargetRate */ psEncCtrl->current_SNR_dB_Q7 = psEnc->SNR_dB_Q7 - SKP_SMULWB( SKP_LSHIFT( ( SKP_int32 )psEnc->BufferedInChannel_ms, 7 ), - SKP_FIX_CONST( 0.05, 16 ) ); -#endif + SKP_FIX_CONST( 0.1, 16 ) ); + + /* Reduce SNR for 10 ms frames */ + if( psEnc->sCmn.nb_subfr == 2 ) { + psEncCtrl->current_SNR_dB_Q7 -= SKP_FIX_CONST( 1.5, 7 ); + } /* Reduce SNR_dB if inband FEC used */ if( psEnc->speech_activity_Q8 > SKP_FIX_CONST( LBRR_SPEECH_ACTIVITY_THRES, 8 ) ) { @@ -186,11 +187,14 @@ void SKP_Silk_noise_shape_analysis_FIX( SKP_FIX_CONST( 18.0, 7 ), 4 ) ), 1 ); /* Reduce coding SNR during low speech activity */ - b_Q8 = SKP_FIX_CONST( 1.0, 8 ) - psEnc->speech_activity_Q8; - b_Q8 = SKP_SMULWB( SKP_LSHIFT( b_Q8, 8 ), b_Q8 ); - SNR_adj_dB_Q7 = SKP_SMLAWB( psEncCtrl->current_SNR_dB_Q7, - SKP_SMULBB( SKP_FIX_CONST( -BG_SNR_DECR_dB, 7 ) >> ( 4 + 1 ), b_Q8 ), // Q11 - SKP_SMULWB( SKP_FIX_CONST( 1.0, 14 ) + psEncCtrl->input_quality_Q14, psEncCtrl->coding_quality_Q14 ) ); // Q12 + SNR_adj_dB_Q7 = psEncCtrl->current_SNR_dB_Q7; + if( psEnc->sCmn.useCBR == 0 ) { + b_Q8 = SKP_FIX_CONST( 1.0, 8 ) - psEnc->speech_activity_Q8; + b_Q8 = SKP_SMULWB( SKP_LSHIFT( b_Q8, 8 ), b_Q8 ); + SNR_adj_dB_Q7 = SKP_SMLAWB( SNR_adj_dB_Q7, + SKP_SMULBB( SKP_FIX_CONST( -BG_SNR_DECR_dB, 7 ) >> ( 4 + 1 ), b_Q8 ), // Q11 + SKP_SMULWB( SKP_FIX_CONST( 1.0, 14 ) + psEncCtrl->input_quality_Q14, psEncCtrl->coding_quality_Q14 ) ); // Q12 + } if( psEncCtrl->sCmn.sigtype == SIG_TYPE_VOICED ) { /* Reduce gains for periodic signals */ @@ -356,31 +360,17 @@ void SKP_Silk_noise_shape_analysis_FIX( /* Gain tweaking */ /*****************/ /* Increase gains during low speech activity and put lower limit on gains */ - gain_mult_Q16 = SKP_Silk_log2lin( -SKP_SMLAWB( -SKP_FIX_CONST( 16.0, 7 ), SNR_adj_dB_Q7, SKP_FIX_CONST( 0.16, 16 ) ) ); - gain_add_Q16 = SKP_Silk_log2lin( SKP_SMLAWB( SKP_FIX_CONST( 16.0, 7 ), SKP_FIX_CONST( NOISE_FLOOR_dB, 7 ), SKP_FIX_CONST( 0.16, 16 ) ) ); - tmp32 = SKP_Silk_log2lin( SKP_SMLAWB( SKP_FIX_CONST( 16.0, 7 ), SKP_FIX_CONST( RELATIVE_MIN_GAIN_dB, 7 ), SKP_FIX_CONST( 0.16, 16 ) ) ); - tmp32 = SKP_SMULWW( psEnc->avgGain_Q16, tmp32 ); - gain_add_Q16 = SKP_ADD_SAT32( gain_add_Q16, tmp32 ); - SKP_assert( gain_mult_Q16 >= 0 ); - + gain_mult_Q16 = SKP_Silk_log2lin( -SKP_SMLAWB( -SKP_FIX_CONST( 16.0, 7 ), SNR_adj_dB_Q7, SKP_FIX_CONST( 0.16, 16 ) ) ); + gain_add_Q16 = SKP_Silk_log2lin( SKP_SMLAWB( SKP_FIX_CONST( 16.0, 7 ), SKP_FIX_CONST( MIN_QGAIN_DB, 7 ), SKP_FIX_CONST( 0.16, 16 ) ) ); + SKP_assert( gain_mult_Q16 > 0 ); for( k = 0; k < psEnc->sCmn.nb_subfr; k++ ) { psEncCtrl->Gains_Q16[ k ] = SKP_SMULWW( psEncCtrl->Gains_Q16[ k ], gain_mult_Q16 ); SKP_assert( psEncCtrl->Gains_Q16[ k ] >= 0 ); - } - - for( k = 0; k < psEnc->sCmn.nb_subfr; k++ ) { psEncCtrl->Gains_Q16[ k ] = SKP_ADD_POS_SAT32( psEncCtrl->Gains_Q16[ k ], gain_add_Q16 ); - psEnc->avgGain_Q16 = SKP_ADD_SAT32( - psEnc->avgGain_Q16, - SKP_SMULWB( - psEncCtrl->Gains_Q16[ k ] - psEnc->avgGain_Q16, - SKP_RSHIFT_ROUND( SKP_SMULBB( psEnc->speech_activity_Q8, SKP_FIX_CONST( GAIN_SMOOTHING_COEF, 10 ) ), 2 ) - ) ); } gain_mult_Q16 = SKP_FIX_CONST( 1.0, 16 ) + SKP_RSHIFT_ROUND( SKP_MLA( SKP_FIX_CONST( INPUT_TILT, 26 ), psEncCtrl->coding_quality_Q14, SKP_FIX_CONST( HIGH_RATE_INPUT_TILT, 12 ) ), 10 ); - for( k = 0; k < psEnc->sCmn.nb_subfr; k++ ) { psEncCtrl->GainsPre_Q14[ k ] = SKP_SMULWB( gain_mult_Q16, psEncCtrl->GainsPre_Q14[ k ] ); } @@ -389,8 +379,15 @@ void SKP_Silk_noise_shape_analysis_FIX( /* Control low-frequency shaping and noise tilt */ /************************************************/ /* Less low frequency shaping for noisy inputs */ +#if 1 strength_Q16 = SKP_MUL( SKP_FIX_CONST( LOW_FREQ_SHAPING, 0 ), SKP_FIX_CONST( 1.0, 16 ) + SKP_SMULBB( SKP_FIX_CONST( LOW_QUALITY_LOW_FREQ_SHAPING_DECR, 1 ), psEncCtrl->input_quality_bands_Q15[ 0 ] - SKP_FIX_CONST( 1.0, 15 ) ) ); +#else +// TODO: CHECK THAT BELOW WORKS FINE AND REPLACE + strength_Q16 = SKP_MUL( SKP_FIX_CONST( LOW_FREQ_SHAPING, 4 ), SKP_SMLAWB( SKP_FIX_CONST( 1.0, 12 ), + SKP_FIX_CONST( LOW_QUALITY_LOW_FREQ_SHAPING_DECR, 13 ), psEncCtrl->input_quality_bands_Q15[ 0 ] - SKP_FIX_CONST( 1.0, 15 ) ) ); +#endif + strength_Q16 = SKP_RSHIFT( SKP_MUL( strength_Q16, psEnc->speech_activity_Q8 ), 8 ); if( psEncCtrl->sCmn.sigtype == SIG_TYPE_VOICED ) { /* Reduce low frequencies quantization noise for periodic signals, depending on pitch lag */ /*f = 400; freqz([1, -0.98 + 2e-4 * f], [1, -0.97 + 7e-4 * f], 2^12, Fs); axis([0, 1000, -10, 1])*/ diff --git a/src_FIX/SKP_Silk_perceptual_parameters_FIX.h b/src_FIX/SKP_Silk_perceptual_parameters_FIX.h deleted file mode 100644 index 2df96505c56d23ad38a4a0f4a7d4d131f1e18719..0000000000000000000000000000000000000000 --- a/src_FIX/SKP_Silk_perceptual_parameters_FIX.h +++ /dev/null @@ -1,117 +0,0 @@ -/*********************************************************************** -Copyright (c) 2006-2010, Skype Limited. All rights reserved. -Redistribution and use in source and binary forms, with or without -modification, (subject to the limitations in the disclaimer below) -are permitted provided that the following conditions are met: -- Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. -- Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -- Neither the name of Skype Limited, nor the names of specific -contributors, may be used to endorse or promote products derived from -this software without specific prior written permission. -NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED -BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, -BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -***********************************************************************/ - -#ifndef SKP_SILK_PERCEPTUAL_PARAMETERS_FIX_H -#define SKP_SILK_PERCEPTUAL_PARAMETERS_FIX_H - -#include "SKP_Silk_perceptual_parameters.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -/* reduction in coding SNR during low speech activity */ -#define BG_SNR_DECR_dB_Q7 SKP_FIX_CONST( BG_SNR_DECR_dB, 7 ) - -/* factor for reducing quantization noise during voiced speech */ -#define HARM_SNR_INCR_dB_Q7 SKP_FIX_CONST( HARM_SNR_INCR_dB, 7 ) - -/* factor for reducing quantization noise for unvoiced sparse signals */ -#define SPARSE_SNR_INCR_dB_Q7 SKP_FIX_CONST( SPARSE_SNR_INCR_dB, 7 ) - -/* threshold for sparseness measure above which to use lower quantization offset during unvoiced */ -#define SPARSENESS_THRESHOLD_QNT_OFFSET_Q8 SKP_FIX_CONST( SPARSENESS_THRESHOLD_QNT_OFFSET, 8 ) - - -/* noise shaping filter chirp factor */ -#define BANDWIDTH_EXPANSION_Q16 SKP_FIX_CONST( BANDWIDTH_EXPANSION, 16 ) - -/* difference between chirp factors for analysis and synthesis noise shaping filters at low bitrates */ -#define LOW_RATE_BANDWIDTH_EXPANSION_DELTA_Q16 SKP_FIX_CONST( LOW_RATE_BANDWIDTH_EXPANSION_DELTA, 16 ) - -/* factor to reduce all bandwidth expansion coefficients for super wideband, relative to wideband */ -#define SWB_BANDWIDTH_EXPANSION_REDUCTION_Q16 SKP_FIX_CONST( SWB_BANDWIDTH_EXPANSION_REDUCTION, 16 ) - -/* gain reduction for fricatives */ -#define DE_ESSER_COEF_SWB_dB_Q7 SKP_FIX_CONST( DE_ESSER_COEF_SWB_dB, 7 ) -#define DE_ESSER_COEF_WB_dB_Q7 SKP_FIX_CONST( DE_ESSER_COEF_WB_dB, 7 ) - -/* extra harmonic boosting (signal shaping) at low bitrates */ -#define LOW_RATE_HARMONIC_BOOST_Q16 SKP_FIX_CONST( LOW_RATE_HARMONIC_BOOST, 16 ) - -/* extra harmonic boosting (signal shaping) for noisy input signals */ -#define LOW_INPUT_QUALITY_HARMONIC_BOOST_Q16 SKP_FIX_CONST( LOW_INPUT_QUALITY_HARMONIC_BOOST, 16 ) - -/* harmonic noise shaping */ -#define HARMONIC_SHAPING_Q16 SKP_FIX_CONST( HARMONIC_SHAPING, 16 ) - -/* extra harmonic noise shaping for high bitrates or noisy input */ -#define HIGH_RATE_OR_LOW_QUALITY_HARMONIC_SHAPING_Q16 SKP_FIX_CONST( HIGH_RATE_OR_LOW_QUALITY_HARMONIC_SHAPING, 16 ) - - -/* parameter for shaping noise towards higher frequencies */ -#define HP_NOISE_COEF_Q16 SKP_FIX_CONST( HP_NOISE_COEF, 16 ) - -/* parameter for shaping noise extra towards higher frequencies during voiced speech */ -#define HARM_HP_NOISE_COEF_Q24 SKP_FIX_CONST( HARM_HP_NOISE_COEF, 24 ) - -/* parameter for applying a high-pass tilt to the input signal */ -#define INPUT_TILT_Q26 SKP_FIX_CONST( INPUT_TILT, 26 ) - -/* parameter for extra high-pass tilt to the input signal at high rates */ -#define HIGH_RATE_INPUT_TILT_Q12 SKP_FIX_CONST( HIGH_RATE_INPUT_TILT, 12 ) - -/* parameter for reducing noise at the very low frequencies */ -#define LOW_FREQ_SHAPING_Q0 SKP_FIX_CONST( LOW_FREQ_SHAPING, 0 ) - -/* less reduction of noise at the very low frequencies for signals with low SNR at low frequencies */ -#define LOW_QUALITY_LOW_FREQ_SHAPING_DECR_Q1 SKP_FIX_CONST( LOW_QUALITY_LOW_FREQ_SHAPING_DECR, 1 ) - -/* fraction added to first autocorrelation value */ -#define SHAPE_WHITE_NOISE_FRACTION_Q20 SKP_FIX_CONST( SHAPE_WHITE_NOISE_FRACTION, 20 ) - -/* fraction of first autocorrelation value added to residual energy value; limits prediction gain */ -#define SHAPE_MIN_ENERGY_RATIO_Q24 SKP_FIX_CONST( SHAPE_MIN_ENERGY_RATIO, 24 ) - -/* noise floor to put a low limit on the quantization step size */ -#define NOISE_FLOOR_dB_Q7 SKP_FIX_CONST( NOISE_FLOOR_dB, 7 ) - -/* noise floor relative to active speech gain level */ -#define RELATIVE_MIN_GAIN_dB_Q7 SKP_FIX_CONST( RELATIVE_MIN_GAIN_dB, 7 ) - -/* subframe smoothing coefficient for determining active speech gain level (lower -> more smoothing) */ -#define GAIN_SMOOTHING_COEF_Q10 SKP_FIX_CONST( GAIN_SMOOTHING_COEF, 10 ) - -/* subframe smoothing coefficient for HarmBoost, HarmShapeGain, Tilt (lower -> more smoothing) */ -#define SUBFR_SMTH_COEF_Q16 SKP_FIX_CONST( SUBFR_SMTH_COEF, 16 ) - -#ifdef __cplusplus -} -#endif - -#endif //SKP_SILK_PERCEPTUAL_PARAMETERS_FIX_H diff --git a/src_FIX/SKP_Silk_structs_FIX.h b/src_FIX/SKP_Silk_structs_FIX.h index 261610cd00a0cb652b2b74e33c073328dc70e69e..f422d93b95e5d6de8344f7e9f7c29777a3d7140a 100644 --- a/src_FIX/SKP_Silk_structs_FIX.h +++ b/src_FIX/SKP_Silk_structs_FIX.h @@ -91,10 +91,7 @@ typedef struct { /* Buffer for find pitch and noise shape analysis */ SKP_DWORD_ALIGN SKP_int16 x_buf[ 2 * MAX_FRAME_LENGTH + LA_SHAPE_MAX ]; SKP_int LTPCorr_Q15; /* Normalized correlation from pitch lag estimator */ - SKP_int mu_LTP_Q8; /* Rate-distortion tradeoff in LTP quantization */ SKP_int32 SNR_dB_Q7; /* Quality setting */ - SKP_int32 avgGain_Q16; /* average gain during active speech */ - SKP_int32 avgGain_Q16_one_bit_per_sample; /* average gain during active speech */ SKP_int BufferedInChannel_ms; /* Simulated number of ms buffer because of exceeded TargetRate_bps */ SKP_int speech_activity_Q8; /* Speech activity in Q8 */ diff --git a/src_FIX/Silk_FIX.vcproj b/src_FIX/Silk_FIX.vcproj deleted file mode 100644 index 2d1cd54b79685dd4972012fffbfb1fca90f37cf7..0000000000000000000000000000000000000000 --- a/src_FIX/Silk_FIX.vcproj +++ /dev/null @@ -1,288 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="8,00" - Name="Silk_FIX" - ProjectGUID="{56B91D01-9150-4BBF-AFA1-5B68AB991B76}" - RootNamespace="Silk" - Keyword="Win32Proj" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory="$(SolutionDir)" - IntermediateDirectory="$(ConfigurationName)" - ConfigurationType="4" - CharacterSet="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - FavorSizeOrSpeed="0" - AdditionalIncludeDirectories=""../../../celt-0.8.0/libcelt";../interface;../src_common;../src_SigProc_FIX" - PreprocessorDefinitions="WIN32;_DEBUG;_LIB;HAVE_CONFIG_H" - MinimalRebuild="true" - BasicRuntimeChecks="3" - RuntimeLibrary="1" - FloatingPointModel="2" - UsePrecompiledHeader="0" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="4" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - OutputFile="SKP_Silk_FIX_Win32_debug.lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - CommandLine="" - /> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory="$(SolutionDir)" - IntermediateDirectory="$(ConfigurationName)" - ConfigurationType="4" - CharacterSet="1" - WholeProgramOptimization="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - InlineFunctionExpansion="0" - FavorSizeOrSpeed="0" - AdditionalIncludeDirectories=""../../../celt-0.8.0/libcelt";../interface;../src_common;../src_SigProc_FIX" - PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_CONFIG_H" - GeneratePreprocessedFile="0" - RuntimeLibrary="0" - FloatingPointModel="2" - UsePrecompiledHeader="0" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - OutputFile="SKP_Silk_FIX_Win32_mt.lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - CommandLine="" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="Source Files" - Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx" - UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" - > - <File - RelativePath=".\SKP_Silk_control_codec_FIX.c" - > - </File> - <File - RelativePath=".\SKP_Silk_corrMatrix_FIX.c" - > - </File> - <File - RelativePath=".\SKP_Silk_encode_frame_FIX.c" - > - </File> - <File - RelativePath=".\SKP_Silk_find_LPC_FIX.c" - > - </File> - <File - RelativePath=".\SKP_Silk_find_LTP_FIX.c" - > - </File> - <File - RelativePath=".\SKP_Silk_find_pitch_lags_FIX.c" - > - </File> - <File - RelativePath=".\SKP_Silk_find_pred_coefs_FIX.c" - > - </File> - <File - RelativePath=".\SKP_Silk_HP_variable_cutoff_FIX.c" - > - </File> - <File - RelativePath=".\SKP_Silk_init_encoder_FIX.c" - > - </File> - <File - RelativePath=".\SKP_Silk_LTP_analysis_filter_FIX.c" - > - </File> - <File - RelativePath=".\SKP_Silk_LTP_scale_ctrl_FIX.c" - > - </File> - <File - RelativePath=".\SKP_Silk_NLSF_MSVQ_encode_FIX.c" - > - </File> - <File - RelativePath=".\SKP_Silk_NLSF_VQ_rate_distortion_FIX.c" - > - </File> - <File - RelativePath=".\SKP_Silk_NLSF_VQ_sum_error_FIX.c" - > - </File> - <File - RelativePath=".\SKP_Silk_noise_shape_analysis_FIX.c" - > - </File> - <File - RelativePath=".\SKP_Silk_prefilter_FIX.c" - > - </File> - <File - RelativePath=".\SKP_Silk_process_gains_FIX.c" - > - </File> - <File - RelativePath=".\SKP_Silk_process_NLSFs_FIX.c" - > - </File> - <File - RelativePath=".\SKP_Silk_quant_LTP_gains_FIX.c" - > - </File> - <File - RelativePath=".\SKP_Silk_regularize_correlations_FIX.c" - > - </File> - <File - RelativePath=".\SKP_Silk_residual_energy16_FIX.c" - > - </File> - <File - RelativePath=".\SKP_Silk_residual_energy_FIX.c" - > - </File> - <File - RelativePath=".\SKP_Silk_solve_LS_FIX.c" - > - </File> - <File - RelativePath=".\SKP_Silk_VQ_nearest_neighbor_FIX.c" - > - </File> - <File - RelativePath=".\SKP_Silk_warped_autocorrelation_FIX.c" - > - </File> - </Filter> - <Filter - Name="Header Files" - Filter="h;hpp;hxx;hm;inl;inc;xsd" - UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}" - > - <File - RelativePath=".\SKP_Silk_define_FIX.h" - > - </File> - <File - RelativePath=".\SKP_Silk_main_FIX.h" - > - </File> - <File - RelativePath=".\SKP_Silk_perceptual_parameters_FIX.h" - > - </File> - <File - RelativePath=".\SKP_Silk_structs_FIX.h" - > - </File> - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/src_FIX/src_FIX.vcxproj b/src_FIX/src_FIX.vcxproj new file mode 100644 index 0000000000000000000000000000000000000000..1b73d8a3953db35c8f5ada447e46e5504e6a4194 --- /dev/null +++ b/src_FIX/src_FIX.vcxproj @@ -0,0 +1,108 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|Win32"> + <Configuration>Debug</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{8484C90D-1561-402F-A91D-2DB10F8C5171}</ProjectGuid> + <Keyword>Win32Proj</Keyword> + <RootNamespace>src_FIX</RootNamespace> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <CharacterSet>Unicode</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <WholeProgramOptimization>true</WholeProgramOptimization> + <CharacterSet>Unicode</CharacterSet> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="ExtensionSettings"> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup /> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <ClCompile> + <PrecompiledHeader> + </PrecompiledHeader> + <WarningLevel>Level3</WarningLevel> + <Optimization>Disabled</Optimization> + <PreprocessorDefinitions>HAVE_CONFIG_H;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>../interface;../src_SigProc_FIX;../src_common;../../celt/libcelt</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Windows</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <PrecompiledHeader> + </PrecompiledHeader> + <Optimization>MaxSpeed</Optimization> + <FunctionLevelLinking>true</FunctionLevelLinking> + <IntrinsicFunctions>true</IntrinsicFunctions> + <PreprocessorDefinitions>HAVE_CONFIG_H;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>../interface;../src_SigProc_FIX;../src_common;../../celt/libcelt</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Windows</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <OptimizeReferences>true</OptimizeReferences> + </Link> + </ItemDefinitionGroup> + <ItemGroup> + <None Include="ReadMe.txt" /> + </ItemGroup> + <ItemGroup> + <ClInclude Include="SKP_Silk_main_FIX.h" /> + <ClInclude Include="SKP_Silk_structs_FIX.h" /> + </ItemGroup> + <ItemGroup> + <ClCompile Include="SKP_Silk_control_codec_FIX.c" /> + <ClCompile Include="SKP_Silk_corrMatrix_FIX.c" /> + <ClCompile Include="SKP_Silk_encode_frame_FIX.c" /> + <ClCompile Include="SKP_Silk_find_LPC_FIX.c" /> + <ClCompile Include="SKP_Silk_find_LTP_FIX.c" /> + <ClCompile Include="SKP_Silk_find_pitch_lags_FIX.c" /> + <ClCompile Include="SKP_Silk_find_pred_coefs_FIX.c" /> + <ClCompile Include="SKP_Silk_HP_variable_cutoff_FIX.c" /> + <ClCompile Include="SKP_Silk_init_encoder_FIX.c" /> + <ClCompile Include="SKP_Silk_LTP_analysis_filter_FIX.c" /> + <ClCompile Include="SKP_Silk_LTP_scale_ctrl_FIX.c" /> + <ClCompile Include="SKP_Silk_NLSF_MSVQ_encode_FIX.c" /> + <ClCompile Include="SKP_Silk_NLSF_VQ_rate_distortion_FIX.c" /> + <ClCompile Include="SKP_Silk_NLSF_VQ_sum_error_FIX.c" /> + <ClCompile Include="SKP_Silk_noise_shape_analysis_FIX.c" /> + <ClCompile Include="SKP_Silk_prefilter_FIX.c" /> + <ClCompile Include="SKP_Silk_process_gains_FIX.c" /> + <ClCompile Include="SKP_Silk_process_NLSFs_FIX.c" /> + <ClCompile Include="SKP_Silk_regularize_correlations_FIX.c" /> + <ClCompile Include="SKP_Silk_residual_energy16_FIX.c" /> + <ClCompile Include="SKP_Silk_residual_energy_FIX.c" /> + <ClCompile Include="SKP_Silk_solve_LS_FIX.c" /> + <ClCompile Include="SKP_Silk_warped_autocorrelation_FIX.c" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project> \ No newline at end of file diff --git a/src_FIX/src_FIX.vcxproj.filters b/src_FIX/src_FIX.vcxproj.filters new file mode 100644 index 0000000000000000000000000000000000000000..ad867d7f5d99eb0ccfab45cde8273e2d2bcaa386 --- /dev/null +++ b/src_FIX/src_FIX.vcxproj.filters @@ -0,0 +1,99 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Source Files"> + <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> + <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> + </Filter> + <Filter Include="Header Files"> + <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> + <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions> + </Filter> + <Filter Include="Resource Files"> + <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> + <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> + </Filter> + </ItemGroup> + <ItemGroup> + <None Include="ReadMe.txt" /> + </ItemGroup> + <ItemGroup> + <ClInclude Include="SKP_Silk_main_FIX.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="SKP_Silk_structs_FIX.h"> + <Filter>Header Files</Filter> + </ClInclude> + </ItemGroup> + <ItemGroup> + <ClCompile Include="SKP_Silk_control_codec_FIX.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_corrMatrix_FIX.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_encode_frame_FIX.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_find_LPC_FIX.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_find_LTP_FIX.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_find_pitch_lags_FIX.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_find_pred_coefs_FIX.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_HP_variable_cutoff_FIX.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_init_encoder_FIX.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_LTP_analysis_filter_FIX.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_LTP_scale_ctrl_FIX.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_NLSF_MSVQ_encode_FIX.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_NLSF_VQ_rate_distortion_FIX.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_NLSF_VQ_sum_error_FIX.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_noise_shape_analysis_FIX.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_prefilter_FIX.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_process_gains_FIX.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_process_NLSFs_FIX.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_regularize_correlations_FIX.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_residual_energy_FIX.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_residual_energy16_FIX.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_solve_LS_FIX.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_warped_autocorrelation_FIX.c"> + <Filter>Source Files</Filter> + </ClCompile> + </ItemGroup> +</Project> \ No newline at end of file diff --git a/src_FLP/SKP_Silk_LPC_analysis_filter_FLP.c b/src_FLP/SKP_Silk_LPC_analysis_filter_FLP.c index 1f716670e8f01ddb9ee1954565252b641c74728c..e3668b9144cd0b76d066473e08b69c1a7e3be53c 100644 --- a/src_FLP/SKP_Silk_LPC_analysis_filter_FLP.c +++ b/src_FLP/SKP_Silk_LPC_analysis_filter_FLP.c @@ -91,22 +91,22 @@ void SKP_Silk_LPC_analysis_filter16_FLP( s_ptr = &s[ix - 1]; /* short-term prediction */ - LPC_pred = s_ptr[ 0 ] * PredCoef[ 0 ] + - s_ptr[-1] * PredCoef[ 1 ] + - s_ptr[-2] * PredCoef[ 2 ] + - s_ptr[-3] * PredCoef[ 3 ] + - s_ptr[-4] * PredCoef[ 4 ] + - s_ptr[-5] * PredCoef[ 5 ] + - s_ptr[-6] * PredCoef[ 6 ] + - s_ptr[-7] * PredCoef[ 7 ] + - s_ptr[-8] * PredCoef[ 8 ] + - s_ptr[-9] * PredCoef[ 9 ] + - s_ptr[-10] * PredCoef[ 10 ] + - s_ptr[-11] * PredCoef[ 11 ] + - s_ptr[-12] * PredCoef[ 12 ] + - s_ptr[-13] * PredCoef[ 13 ] + - s_ptr[-14] * PredCoef[ 14 ] + - s_ptr[-15] * PredCoef[ 15 ]; + LPC_pred = s_ptr[ 0 ] * PredCoef[ 0 ] + + s_ptr[ -1 ] * PredCoef[ 1 ] + + s_ptr[ -2 ] * PredCoef[ 2 ] + + s_ptr[ -3 ] * PredCoef[ 3 ] + + s_ptr[ -4 ] * PredCoef[ 4 ] + + s_ptr[ -5 ] * PredCoef[ 5 ] + + s_ptr[ -6 ] * PredCoef[ 6 ] + + s_ptr[ -7 ] * PredCoef[ 7 ] + + s_ptr[ -8 ] * PredCoef[ 8 ] + + s_ptr[ -9 ] * PredCoef[ 9 ] + + s_ptr[ -10 ] * PredCoef[ 10 ] + + s_ptr[ -11 ] * PredCoef[ 11 ] + + s_ptr[ -12 ] * PredCoef[ 12 ] + + s_ptr[ -13 ] * PredCoef[ 13 ] + + s_ptr[ -14 ] * PredCoef[ 14 ] + + s_ptr[ -15 ] * PredCoef[ 15 ]; /* prediction error */ r_LPC[ix] = s_ptr[ 1 ] - LPC_pred; @@ -129,18 +129,18 @@ void SKP_Silk_LPC_analysis_filter12_FLP( s_ptr = &s[ix - 1]; /* short-term prediction */ - LPC_pred = s_ptr[ 0 ] * PredCoef[ 0 ] + - s_ptr[-1] * PredCoef[ 1 ] + - s_ptr[-2] * PredCoef[ 2 ] + - s_ptr[-3] * PredCoef[ 3 ] + - s_ptr[-4] * PredCoef[ 4 ] + - s_ptr[-5] * PredCoef[ 5 ] + - s_ptr[-6] * PredCoef[ 6 ] + - s_ptr[-7] * PredCoef[ 7 ] + - s_ptr[-8] * PredCoef[ 8 ] + - s_ptr[-9] * PredCoef[ 9 ] + - s_ptr[-10] * PredCoef[ 10 ] + - s_ptr[-11] * PredCoef[ 11 ]; + LPC_pred = s_ptr[ 0 ] * PredCoef[ 0 ] + + s_ptr[ -1 ] * PredCoef[ 1 ] + + s_ptr[ -2 ] * PredCoef[ 2 ] + + s_ptr[ -3 ] * PredCoef[ 3 ] + + s_ptr[ -4 ] * PredCoef[ 4 ] + + s_ptr[ -5 ] * PredCoef[ 5 ] + + s_ptr[ -6 ] * PredCoef[ 6 ] + + s_ptr[ -7 ] * PredCoef[ 7 ] + + s_ptr[ -8 ] * PredCoef[ 8 ] + + s_ptr[ -9 ] * PredCoef[ 9 ] + + s_ptr[ -10 ] * PredCoef[ 10 ] + + s_ptr[ -11 ] * PredCoef[ 11 ]; /* prediction error */ r_LPC[ix] = s_ptr[ 1 ] - LPC_pred; @@ -163,16 +163,16 @@ void SKP_Silk_LPC_analysis_filter10_FLP( s_ptr = &s[ix - 1]; /* short-term prediction */ - LPC_pred = s_ptr[ 0 ] * PredCoef[ 0 ] + - s_ptr[-1] * PredCoef[ 1 ] + - s_ptr[-2] * PredCoef[ 2 ] + - s_ptr[-3] * PredCoef[ 3 ] + - s_ptr[-4] * PredCoef[ 4 ] + - s_ptr[-5] * PredCoef[ 5 ] + - s_ptr[-6] * PredCoef[ 6 ] + - s_ptr[-7] * PredCoef[ 7 ] + - s_ptr[-8] * PredCoef[ 8 ] + - s_ptr[-9] * PredCoef[ 9 ]; + LPC_pred = s_ptr[ 0 ] * PredCoef[ 0 ] + + s_ptr[ -1 ] * PredCoef[ 1 ] + + s_ptr[ -2 ] * PredCoef[ 2 ] + + s_ptr[ -3 ] * PredCoef[ 3 ] + + s_ptr[ -4 ] * PredCoef[ 4 ] + + s_ptr[ -5 ] * PredCoef[ 5 ] + + s_ptr[ -6 ] * PredCoef[ 6 ] + + s_ptr[ -7 ] * PredCoef[ 7 ] + + s_ptr[ -8 ] * PredCoef[ 8 ] + + s_ptr[ -9 ] * PredCoef[ 9 ]; /* prediction error */ r_LPC[ix] = s_ptr[ 1 ] - LPC_pred; @@ -217,7 +217,7 @@ void SKP_Silk_LPC_analysis_filter6_FLP( const SKP_int length /* I Length of input signal */ ) { - SKP_int ix = 8; + SKP_int ix = 6; SKP_float LPC_pred; const SKP_float *s_ptr; diff --git a/src_FLP/SKP_Silk_NLSF_MSVQ_decode_FLP.c b/src_FLP/SKP_Silk_NLSF_MSVQ_decode_FLP.c index 1b7cdc6f69c3864cf705f751a194e485bee1dd02..97747236148f5a844a056b517b76adba3f1bf5bc 100644 --- a/src_FLP/SKP_Silk_NLSF_MSVQ_decode_FLP.c +++ b/src_FLP/SKP_Silk_NLSF_MSVQ_decode_FLP.c @@ -30,65 +30,68 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /* NLSF vector decoder */ void SKP_Silk_NLSF_MSVQ_decode_FLP( SKP_float *pNLSF, /* O Decoded output vector [ LPC_ORDER ] */ - const SKP_Silk_NLSF_CB_FLP *psNLSF_CB_FLP, /* I NLSF codebook struct */ + const SKP_Silk_NLSF_CB_struct *psNLSF_CB, /* I NLSF codebook struct */ const SKP_int *NLSFIndices, /* I NLSF indices [ nStages ] */ const SKP_int LPC_order /* I LPC order used */ ) { - const SKP_float *pCB_element; - SKP_int s; - SKP_int i; + const SKP_int8 *pCB_element; + SKP_int s; + SKP_int i; /* Check that each index is within valid range */ - SKP_assert( 0 <= NLSFIndices[ 0 ] && NLSFIndices[ 0 ] < psNLSF_CB_FLP->CBStages[ 0 ].nVectors ); + SKP_assert( 0 <= NLSFIndices[ 0 ] && NLSFIndices[ 0 ] < psNLSF_CB->CBStages[ 0 ].nVectors ); /* Point to the first vector element */ - pCB_element = &psNLSF_CB_FLP->CBStages[ 0 ].CB[ SKP_MUL( NLSFIndices[ 0 ], LPC_order ) ]; + pCB_element = &psNLSF_CB->CBStages[ 0 ].CB_NLSF_Q8[ SKP_MUL( NLSFIndices[ 0 ], LPC_order ) ]; /* Initialize with the codebook vector from stage 0 */ - SKP_memcpy( pNLSF, pCB_element, LPC_order * sizeof( SKP_float ) ); + for( i = 0; i < LPC_order; i++ ) { + pNLSF[ i ] = ( SKP_float )pCB_element[ i ]; + } - for( s = 1; s < psNLSF_CB_FLP->nStages; s++ ) { + for( s = 1; s < psNLSF_CB->nStages; s++ ) { /* Check that each index is within valid range */ - SKP_assert( 0 <= NLSFIndices[ s ] && NLSFIndices[ s ] < psNLSF_CB_FLP->CBStages[ s ].nVectors ); + SKP_assert( 0 <= NLSFIndices[ s ] && NLSFIndices[ s ] < psNLSF_CB->CBStages[ s ].nVectors ); if( LPC_order == 16 ) { /* Point to the first vector element */ - pCB_element = &psNLSF_CB_FLP->CBStages[ s ].CB[ SKP_LSHIFT( NLSFIndices[ s ], 4 ) ]; + pCB_element = &psNLSF_CB->CBStages[ s ].CB_NLSF_Q8[ SKP_LSHIFT( NLSFIndices[ s ], 4 ) ]; /* Add the codebook vector from the current stage */ - pNLSF[ 0 ] += pCB_element[ 0 ]; - pNLSF[ 1 ] += pCB_element[ 1 ]; - pNLSF[ 2 ] += pCB_element[ 2 ]; - pNLSF[ 3 ] += pCB_element[ 3 ]; - pNLSF[ 4 ] += pCB_element[ 4 ]; - pNLSF[ 5 ] += pCB_element[ 5 ]; - pNLSF[ 6 ] += pCB_element[ 6 ]; - pNLSF[ 7 ] += pCB_element[ 7 ]; - pNLSF[ 8 ] += pCB_element[ 8 ]; - pNLSF[ 9 ] += pCB_element[ 9 ]; - pNLSF[ 10 ] += pCB_element[ 10 ]; - pNLSF[ 11 ] += pCB_element[ 11 ]; - pNLSF[ 12 ] += pCB_element[ 12 ]; - pNLSF[ 13 ] += pCB_element[ 13 ]; - pNLSF[ 14 ] += pCB_element[ 14 ]; - pNLSF[ 15 ] += pCB_element[ 15 ]; + pNLSF[ 0 ] += ( SKP_float )pCB_element[ 0 ]; + pNLSF[ 1 ] += ( SKP_float )pCB_element[ 1 ]; + pNLSF[ 2 ] += ( SKP_float )pCB_element[ 2 ]; + pNLSF[ 3 ] += ( SKP_float )pCB_element[ 3 ]; + pNLSF[ 4 ] += ( SKP_float )pCB_element[ 4 ]; + pNLSF[ 5 ] += ( SKP_float )pCB_element[ 5 ]; + pNLSF[ 6 ] += ( SKP_float )pCB_element[ 6 ]; + pNLSF[ 7 ] += ( SKP_float )pCB_element[ 7 ]; + pNLSF[ 8 ] += ( SKP_float )pCB_element[ 8 ]; + pNLSF[ 9 ] += ( SKP_float )pCB_element[ 9 ]; + pNLSF[ 10 ] += ( SKP_float )pCB_element[ 10 ]; + pNLSF[ 11 ] += ( SKP_float )pCB_element[ 11 ]; + pNLSF[ 12 ] += ( SKP_float )pCB_element[ 12 ]; + pNLSF[ 13 ] += ( SKP_float )pCB_element[ 13 ]; + pNLSF[ 14 ] += ( SKP_float )pCB_element[ 14 ]; + pNLSF[ 15 ] += ( SKP_float )pCB_element[ 15 ]; } else { /* Point to the first vector element */ - pCB_element = &psNLSF_CB_FLP->CBStages[ s ].CB[ NLSFIndices[ s ] * LPC_order ]; + pCB_element = &psNLSF_CB->CBStages[ s ].CB_NLSF_Q8[ NLSFIndices[ s ] * LPC_order ]; /* Add the codebook vector from the current stage */ for( i = 0; i < LPC_order; i++ ) { - pNLSF[ i ] += pCB_element[ i ]; + pNLSF[ i ] += ( SKP_float )pCB_element[ i ]; } } } - /* Add 1/2 */ + /* Add 1/2 in Q8 and convert to Q0 */ for( i = 0; i < LPC_order; i++ ) { - pNLSF[ i ] += 0.5f; + pNLSF[ i ] += 128.0f; + pNLSF[ i ] *= ( 1.0f / 256.0f ); } /* NLSF stabilization */ - SKP_Silk_NLSF_stabilize_FLP( pNLSF, psNLSF_CB_FLP->NDeltaMin, LPC_order ); + SKP_Silk_NLSF_stabilize_FLP( pNLSF, psNLSF_CB->NDeltaMin_Q15, LPC_order ); } diff --git a/src_FLP/SKP_Silk_NLSF_MSVQ_encode_FLP.c b/src_FLP/SKP_Silk_NLSF_MSVQ_encode_FLP.c index e74e03d26a99945738f45c9de7fa3ea2e24f8031..3550778a40f63d30cd9a2e70a0e4abac16674f7d 100644 --- a/src_FLP/SKP_Silk_NLSF_MSVQ_encode_FLP.c +++ b/src_FLP/SKP_Silk_NLSF_MSVQ_encode_FLP.c @@ -33,7 +33,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. void SKP_Silk_NLSF_MSVQ_encode_FLP( SKP_int *NLSFIndices, /* O Codebook path vector [ CB_STAGES ] */ SKP_float *pNLSF, /* I/O Quantized NLSF vector [ LPC_ORDER ] */ - const SKP_Silk_NLSF_CB_FLP *psNLSF_CB_FLP, /* I Codebook object */ + const SKP_Silk_NLSF_CB_struct *psNLSF_CB, /* I Codebook object */ const SKP_float *pNLSF_q_prev, /* I Prev. quantized NLSF vector [LPC_ORDER] */ const SKP_float *pW, /* I NLSF weight vector [ LPC_ORDER ] */ const SKP_float NLSF_mu, /* I Rate weight for the RD optimization */ @@ -44,7 +44,10 @@ void SKP_Silk_NLSF_MSVQ_encode_FLP( ) { SKP_int i, s, k, cur_survivors, prev_survivors, min_survivors, input_index, cb_index, bestIndex; - SKP_float se, wsse, rateDistThreshold, bestRateDist; + SKP_float rateDistThreshold; +#if( NLSF_MSVQ_FLUCTUATION_REDUCTION == 1 ) + SKP_float se, wsse, bestRateDist; +#endif #if( LOW_COMPLEXITY_ONLY == 1 ) SKP_float pRateDist[ NLSF_MSVQ_TREE_SEARCH_MAX_VECTORS_EVALUATED_LC_MODE ]; @@ -53,8 +56,8 @@ void SKP_Silk_NLSF_MSVQ_encode_FLP( SKP_int pTempIndices[ MAX_NLSF_MSVQ_SURVIVORS_LC_MODE ]; SKP_int pPath[ MAX_NLSF_MSVQ_SURVIVORS_LC_MODE * NLSF_MSVQ_MAX_CB_STAGES ]; SKP_int pPath_new[ MAX_NLSF_MSVQ_SURVIVORS_LC_MODE * NLSF_MSVQ_MAX_CB_STAGES ]; - SKP_float pRes[ MAX_NLSF_MSVQ_SURVIVORS_LC_MODE * MAX_LPC_ORDER ]; - SKP_float pRes_new[ MAX_NLSF_MSVQ_SURVIVORS_LC_MODE * MAX_LPC_ORDER ]; + SKP_float pRes_Q8[ MAX_NLSF_MSVQ_SURVIVORS_LC_MODE * MAX_LPC_ORDER ]; + SKP_float pRes_Q8_new[ MAX_NLSF_MSVQ_SURVIVORS_LC_MODE * MAX_LPC_ORDER ]; #else SKP_float pRateDist[ NLSF_MSVQ_TREE_SEARCH_MAX_VECTORS_EVALUATED ]; SKP_float pRate[ MAX_NLSF_MSVQ_SURVIVORS ]; @@ -62,20 +65,27 @@ void SKP_Silk_NLSF_MSVQ_encode_FLP( SKP_int pTempIndices[ MAX_NLSF_MSVQ_SURVIVORS ]; SKP_int pPath[ MAX_NLSF_MSVQ_SURVIVORS * NLSF_MSVQ_MAX_CB_STAGES ]; SKP_int pPath_new[ MAX_NLSF_MSVQ_SURVIVORS * NLSF_MSVQ_MAX_CB_STAGES ]; - SKP_float pRes[ MAX_NLSF_MSVQ_SURVIVORS * MAX_LPC_ORDER ]; - SKP_float pRes_new[ MAX_NLSF_MSVQ_SURVIVORS * MAX_LPC_ORDER ]; + SKP_float pRes_Q8[ MAX_NLSF_MSVQ_SURVIVORS * MAX_LPC_ORDER ]; + SKP_float pRes_Q8_new[ MAX_NLSF_MSVQ_SURVIVORS * MAX_LPC_ORDER ]; #endif const SKP_float *pConstFloat; SKP_float *pFloat; const SKP_int *pConstInt; SKP_int *pInt; - const SKP_float *pCB_element; - const SKP_Silk_NLSF_CBS_FLP *pCurrentCBStage; + const SKP_int8 *pCB_element; + const SKP_Silk_NLSF_CBS *pCurrentCBStage; SKP_assert( NLSF_MSVQ_Survivors <= MAX_NLSF_MSVQ_SURVIVORS ); SKP_assert( ( LOW_COMPLEXITY_ONLY == 0 ) || ( NLSF_MSVQ_Survivors <= MAX_NLSF_MSVQ_SURVIVORS_LC_MODE ) ); +#ifdef SAVE_ALL_INTERNAL_DATA + /* Use sigtype.dat to seperate into signal types */ + DEBUG_STORE_DATA( NLSF.dat, pNLSF, LPC_order * sizeof( SKP_float ) ); + DEBUG_STORE_DATA( WNLSF.dat, pW, LPC_order * sizeof( SKP_float ) ); + DEBUG_STORE_DATA( NLSF_mu.dat, &NLSF_mu, sizeof( SKP_float ) ); +#endif + cur_survivors = NLSF_MSVQ_Survivors; /****************************************************/ @@ -85,9 +95,9 @@ void SKP_Silk_NLSF_MSVQ_encode_FLP( /* Clear accumulated rates */ SKP_memset( pRate, 0, NLSF_MSVQ_Survivors * sizeof( SKP_float ) ); - /* Subtract 1/2 from NLSF input vector to create initial residual */ + /* Subtract 1/2 from NLSF input vector to create initial residual, and scale to Q8 */ for( i = 0; i < LPC_order; i++ ) { - pRes[ i ] = pNLSF[ i ] - 0.5f; + pRes_Q8[ i ] = ( pNLSF[ i ] - 0.5f ) * 256.0f; } /* Set first stage values */ @@ -97,10 +107,10 @@ void SKP_Silk_NLSF_MSVQ_encode_FLP( min_survivors = NLSF_MSVQ_Survivors / 2; /* Loop over all stages */ - for( s = 0; s < psNLSF_CB_FLP->nStages; s++ ) { + for( s = 0; s < psNLSF_CB->nStages; s++ ) { /* Set a pointer to the current stage codebook */ - pCurrentCBStage = &psNLSF_CB_FLP->CBStages[ s ]; + pCurrentCBStage = &psNLSF_CB->CBStages[ s ]; /* Calculate the number of survivors in the current stage */ cur_survivors = SKP_min_32( NLSF_MSVQ_Survivors, prev_survivors * pCurrentCBStage->nVectors ); @@ -108,12 +118,12 @@ void SKP_Silk_NLSF_MSVQ_encode_FLP( #if( NLSF_MSVQ_FLUCTUATION_REDUCTION == 0 ) /* Find a single best survivor in the last stage, if we */ /* do not need candidates for fluctuation reduction */ - if( s == psNLSF_CB_FLP->nStages - 1 ) { + if( s == psNLSF_CB->nStages - 1 ) { cur_survivors = 1; } #endif /* Nearest neighbor clustering for multiple input data vectors */ - SKP_Silk_NLSF_VQ_rate_distortion_FLP( pRateDist, pCurrentCBStage, pRes, pW, pRate, NLSF_mu, prev_survivors, LPC_order ); + SKP_Silk_NLSF_VQ_rate_distortion_FLP( pRateDist, pCurrentCBStage, pRes_Q8, pW, pRate, NLSF_mu, prev_survivors, LPC_order ); /* Sort the rate-distortion errors */ SKP_Silk_insertion_sort_increasing_FLP( pRateDist, pTempIndices, prev_survivors * pCurrentCBStage->nVectors, cur_survivors ); @@ -142,19 +152,19 @@ void SKP_Silk_NLSF_MSVQ_encode_FLP( } /* Subtract new contribution from the previous residual vector for each of 'cur_survivors' */ - pConstFloat = &pRes[ input_index * LPC_order ]; - pCB_element = &pCurrentCBStage->CB[ cb_index * LPC_order ]; - pFloat = &pRes_new[ k * LPC_order ]; + pConstFloat = &pRes_Q8[ input_index * LPC_order ]; + pCB_element = &pCurrentCBStage->CB_NLSF_Q8[ cb_index * LPC_order ]; + pFloat = &pRes_Q8_new[ k * LPC_order ]; for( i = 0; i < LPC_order; i++ ) { pFloat[ i ] = pConstFloat[ i ] - pCB_element[ i ]; } /* Update accumulated rate for stage 1 to the current */ - pRate_new[ k ] = pRate[ input_index ] + pCurrentCBStage->Rates[ cb_index ]; + pRate_new[ k ] = pRate[ input_index ] + 0.0625f * ( SKP_float )pCurrentCBStage->Rates_Q4[ cb_index ]; /* Copy paths from previous matrix, starting with the best path */ - pConstInt = &pPath[ input_index * psNLSF_CB_FLP->nStages ]; - pInt = &pPath_new[ k * psNLSF_CB_FLP->nStages ]; + pConstInt = &pPath[ input_index * psNLSF_CB->nStages ]; + pInt = &pPath_new[ k * psNLSF_CB->nStages ]; for( i = 0; i < s; i++ ) { pInt[ i ] = pConstInt[ i ]; } @@ -162,15 +172,15 @@ void SKP_Silk_NLSF_MSVQ_encode_FLP( pInt[ s ] = cb_index; } - if( s < psNLSF_CB_FLP->nStages - 1 ) { + if( s < psNLSF_CB->nStages - 1 ) { /* Copy NLSF residual matrix for next stage */ - SKP_memcpy(pRes, pRes_new, cur_survivors * LPC_order * sizeof( SKP_float ) ); + SKP_memcpy( pRes_Q8, pRes_Q8_new, cur_survivors * LPC_order * sizeof( SKP_float ) ); /* Copy rate vector for next stage */ - SKP_memcpy(pRate, pRate_new, cur_survivors * sizeof( SKP_float ) ); + SKP_memcpy( pRate, pRate_new, cur_survivors * sizeof( SKP_float ) ); /* Copy best path matrix for next stage */ - SKP_memcpy(pPath, pPath_new, cur_survivors * psNLSF_CB_FLP->nStages * sizeof( SKP_int ) ); + SKP_memcpy( pPath, pPath_new, cur_survivors * psNLSF_CB->nStages * sizeof( SKP_int ) ); } prev_survivors = cur_survivors; @@ -189,7 +199,7 @@ void SKP_Silk_NLSF_MSVQ_encode_FLP( bestRateDist = SKP_float_MAX; for( s = 0; s < cur_survivors; s++ ) { /* Decode survivor to compare with previous quantized NLSF vector */ - SKP_Silk_NLSF_MSVQ_decode_FLP( pNLSF, psNLSF_CB_FLP, &pPath_new[ s * psNLSF_CB_FLP->nStages ], LPC_order ); + SKP_Silk_NLSF_MSVQ_decode_FLP( pNLSF, psNLSF_CB, &pPath_new[ s * psNLSF_CB->nStages ], LPC_order ); /* Compare decoded NLSF vector with the previously quantized vector */ wsse = 0; @@ -216,9 +226,9 @@ void SKP_Silk_NLSF_MSVQ_encode_FLP( #endif /* Copy best path to output argument */ - SKP_memcpy( NLSFIndices, &pPath_new[ bestIndex * psNLSF_CB_FLP->nStages ], psNLSF_CB_FLP->nStages * sizeof( SKP_int ) ); + SKP_memcpy( NLSFIndices, &pPath_new[ bestIndex * psNLSF_CB->nStages ], psNLSF_CB->nStages * sizeof( SKP_int ) ); /* Decode and stabilize the best survivor */ - SKP_Silk_NLSF_MSVQ_decode_FLP( pNLSF, psNLSF_CB_FLP, NLSFIndices, LPC_order ); + SKP_Silk_NLSF_MSVQ_decode_FLP( pNLSF, psNLSF_CB, NLSFIndices, LPC_order ); } diff --git a/src_FLP/SKP_Silk_NLSF_VQ_rate_distortion_FLP.c b/src_FLP/SKP_Silk_NLSF_VQ_rate_distortion_FLP.c index 914dbdd2c7885a25bd55e6738ba069689efbbb3b..5b92da14f310f33fb17cf29a93c49ab8e8717da8 100644 --- a/src_FLP/SKP_Silk_NLSF_VQ_rate_distortion_FLP.c +++ b/src_FLP/SKP_Silk_NLSF_VQ_rate_distortion_FLP.c @@ -26,11 +26,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ***********************************************************************/ #include "SKP_Silk_main_FLP.h" - + /* Rate-Distortion calculations for multiple input data vectors */ void SKP_Silk_NLSF_VQ_rate_distortion_FLP( SKP_float *pRD, /* O Rate-distortion values [psNLSF_CBS_FLP->nVectors*N] */ - const SKP_Silk_NLSF_CBS_FLP *psNLSF_CBS_FLP, /* I NLSF codebook stage struct */ + const SKP_Silk_NLSF_CBS *psNLSF_CBS, /* I NLSF codebook stage struct */ const SKP_float *in, /* I Input vectors to be quantized */ const SKP_float *w, /* I Weight vector */ const SKP_float *rate_acc, /* I Accumulated rates from previous stage */ @@ -43,15 +43,15 @@ void SKP_Silk_NLSF_VQ_rate_distortion_FLP( SKP_int i, n; /* Compute weighted quantization errors for all input vectors over one codebook stage */ - SKP_Silk_NLSF_VQ_sum_error_FLP( pRD, in, w, psNLSF_CBS_FLP->CB, N, psNLSF_CBS_FLP->nVectors, LPC_order ); + SKP_Silk_NLSF_VQ_sum_error_FLP( pRD, in, w, psNLSF_CBS->CB_NLSF_Q8, N, psNLSF_CBS->nVectors, LPC_order ); /* Loop over input vectors */ pRD_vec = pRD; for( n = 0; n < N; n++ ) { /* Add rate cost to error for each codebook vector */ - for( i = 0; i < psNLSF_CBS_FLP->nVectors; i++ ) { - pRD_vec[ i ] += mu * ( rate_acc[n] + psNLSF_CBS_FLP->Rates[ i ] ); + for( i = 0; i < psNLSF_CBS->nVectors; i++ ) { + pRD_vec[ i ] += mu * ( rate_acc[n] + 0.0625f * ( SKP_float )psNLSF_CBS->Rates_Q4[ i ] ); } - pRD_vec += psNLSF_CBS_FLP->nVectors; + pRD_vec += psNLSF_CBS->nVectors; } } diff --git a/src_FLP/SKP_Silk_NLSF_VQ_sum_error_FLP.c b/src_FLP/SKP_Silk_NLSF_VQ_sum_error_FLP.c index 5359da7cbca212af6ad05919742f3a95853a8130..78db9b7f10b6e4b8173728f5db7624bca277d458 100644 --- a/src_FLP/SKP_Silk_NLSF_VQ_sum_error_FLP.c +++ b/src_FLP/SKP_Silk_NLSF_VQ_sum_error_FLP.c @@ -30,18 +30,18 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /* compute weighted quantization errors for LPC_order element input vectors, over one codebook stage */ void SKP_Silk_NLSF_VQ_sum_error_FLP( SKP_float *err, /* O Weighted quantization errors [ N * K ] */ - const SKP_float *in, /* I Input vectors [ N * LPC_order ] */ + const SKP_float *in_NLSF_Q8, /* I Input vectors [ N * LPC_order ] */ const SKP_float *w, /* I Weighting vectors [ N * LPC_order ] */ - const SKP_float *pCB, /* I Codebook vectors [ K * LPC_order ] */ + const SKP_int8 *pCB_NLSF_Q8, /* I Codebook vectors [ K * LPC_order ] */ const SKP_int N, /* I Number of input vectors */ const SKP_int K, /* I Number of codebook vectors */ const SKP_int LPC_order /* I LPC order */ ) { - SKP_int i, n; - SKP_float diff, sum_error; - SKP_float Wcpy[ MAX_LPC_ORDER ]; - const SKP_float *cb_vec; + SKP_int i, n; + SKP_float diff_Q8, sum_error_Q16; + SKP_float Wcpy[ MAX_LPC_ORDER ]; + const SKP_int8 *cb_vec_NLSF_Q8; /* Copy to local stack */ SKP_memcpy( Wcpy, w, LPC_order * sizeof( SKP_float ) ); @@ -50,47 +50,47 @@ void SKP_Silk_NLSF_VQ_sum_error_FLP( /* Loop over input vectors */ for( n = 0; n < N; n++ ) { /* Loop over codebook */ - cb_vec = pCB; + cb_vec_NLSF_Q8 = pCB_NLSF_Q8; for( i = 0; i < K; i++ ) { /* Compute weighted squared quantization error */ - diff = in[ 0 ] - cb_vec[ 0 ]; - sum_error = Wcpy[ 0 ] * diff * diff; - diff = in[ 1 ] - cb_vec[ 1 ]; - sum_error += Wcpy[ 1 ] * diff * diff; - diff = in[ 2 ] - cb_vec[ 2 ]; - sum_error += Wcpy[ 2 ] * diff * diff; - diff = in[ 3 ] - cb_vec[ 3 ]; - sum_error += Wcpy[ 3 ] * diff * diff; - diff = in[ 4 ] - cb_vec[ 4 ]; - sum_error += Wcpy[ 4 ] * diff * diff; - diff = in[ 5 ] - cb_vec[ 5 ]; - sum_error += Wcpy[ 5 ] * diff * diff; - diff = in[ 6 ] - cb_vec[ 6 ]; - sum_error += Wcpy[ 6 ] * diff * diff; - diff = in[ 7 ] - cb_vec[ 7 ]; - sum_error += Wcpy[ 7 ] * diff * diff; - diff = in[ 8 ] - cb_vec[ 8 ]; - sum_error += Wcpy[ 8 ] * diff * diff; - diff = in[ 9 ] - cb_vec[ 9 ]; - sum_error += Wcpy[ 9 ] * diff * diff; - diff = in[ 10 ] - cb_vec[ 10 ]; - sum_error += Wcpy[ 10 ] * diff * diff; - diff = in[ 11 ] - cb_vec[ 11 ]; - sum_error += Wcpy[ 11 ] * diff * diff; - diff = in[ 12 ] - cb_vec[ 12 ]; - sum_error += Wcpy[ 12 ] * diff * diff; - diff = in[ 13 ] - cb_vec[ 13 ]; - sum_error += Wcpy[ 13 ] * diff * diff; - diff = in[ 14 ] - cb_vec[ 14 ]; - sum_error += Wcpy[ 14 ] * diff * diff; - diff = in[ 15 ] - cb_vec[ 15 ]; - sum_error += Wcpy[ 15 ] * diff * diff; + diff_Q8 = in_NLSF_Q8[ 0 ] - ( SKP_float )cb_vec_NLSF_Q8[ 0 ]; + sum_error_Q16 = Wcpy[ 0 ] * diff_Q8 * diff_Q8; + diff_Q8 = in_NLSF_Q8[ 1 ] - ( SKP_float )cb_vec_NLSF_Q8[ 1 ]; + sum_error_Q16 += Wcpy[ 1 ] * diff_Q8 * diff_Q8; + diff_Q8 = in_NLSF_Q8[ 2 ] - ( SKP_float )cb_vec_NLSF_Q8[ 2 ]; + sum_error_Q16 += Wcpy[ 2 ] * diff_Q8 * diff_Q8; + diff_Q8 = in_NLSF_Q8[ 3 ] - ( SKP_float )cb_vec_NLSF_Q8[ 3 ]; + sum_error_Q16 += Wcpy[ 3 ] * diff_Q8 * diff_Q8; + diff_Q8 = in_NLSF_Q8[ 4 ] - ( SKP_float )cb_vec_NLSF_Q8[ 4 ]; + sum_error_Q16 += Wcpy[ 4 ] * diff_Q8 * diff_Q8; + diff_Q8 = in_NLSF_Q8[ 5 ] - ( SKP_float )cb_vec_NLSF_Q8[ 5 ]; + sum_error_Q16 += Wcpy[ 5 ] * diff_Q8 * diff_Q8; + diff_Q8 = in_NLSF_Q8[ 6 ] - ( SKP_float )cb_vec_NLSF_Q8[ 6 ]; + sum_error_Q16 += Wcpy[ 6 ] * diff_Q8 * diff_Q8; + diff_Q8 = in_NLSF_Q8[ 7 ] - ( SKP_float )cb_vec_NLSF_Q8[ 7 ]; + sum_error_Q16 += Wcpy[ 7 ] * diff_Q8 * diff_Q8; + diff_Q8 = in_NLSF_Q8[ 8 ] - ( SKP_float )cb_vec_NLSF_Q8[ 8 ]; + sum_error_Q16 += Wcpy[ 8 ] * diff_Q8 * diff_Q8; + diff_Q8 = in_NLSF_Q8[ 9 ] - ( SKP_float )cb_vec_NLSF_Q8[ 9 ]; + sum_error_Q16 += Wcpy[ 9 ] * diff_Q8 * diff_Q8; + diff_Q8 = in_NLSF_Q8[ 10 ] - ( SKP_float )cb_vec_NLSF_Q8[ 10 ]; + sum_error_Q16 += Wcpy[ 10 ] * diff_Q8 * diff_Q8; + diff_Q8 = in_NLSF_Q8[ 11 ] - ( SKP_float )cb_vec_NLSF_Q8[ 11 ]; + sum_error_Q16 += Wcpy[ 11 ] * diff_Q8 * diff_Q8; + diff_Q8 = in_NLSF_Q8[ 12 ] - ( SKP_float )cb_vec_NLSF_Q8[ 12 ]; + sum_error_Q16 += Wcpy[ 12 ] * diff_Q8 * diff_Q8; + diff_Q8 = in_NLSF_Q8[ 13 ] - ( SKP_float )cb_vec_NLSF_Q8[ 13 ]; + sum_error_Q16 += Wcpy[ 13 ] * diff_Q8 * diff_Q8; + diff_Q8 = in_NLSF_Q8[ 14 ] - ( SKP_float )cb_vec_NLSF_Q8[ 14 ]; + sum_error_Q16 += Wcpy[ 14 ] * diff_Q8 * diff_Q8; + diff_Q8 = in_NLSF_Q8[ 15 ] - ( SKP_float )cb_vec_NLSF_Q8[ 15 ]; + sum_error_Q16 += Wcpy[ 15 ] * diff_Q8 * diff_Q8; - err[ i ] = sum_error; - cb_vec += 16; + err[ i ] = ( 1.0f / 65536.0f ) * sum_error_Q16; + cb_vec_NLSF_Q8 += 16; } - err += K; - in += 16; + err += K; + in_NLSF_Q8 += 16; } } else { SKP_assert( LPC_order == 10 ); @@ -98,35 +98,35 @@ void SKP_Silk_NLSF_VQ_sum_error_FLP( /* Loop over input vectors */ for( n = 0; n < N; n++ ) { /* Loop over codebook */ - cb_vec = pCB; + cb_vec_NLSF_Q8 = pCB_NLSF_Q8; for( i = 0; i < K; i++ ) { /* Compute weighted squared quantization error */ - diff = in[ 0 ] - cb_vec[ 0 ]; - sum_error = Wcpy[ 0 ] * diff * diff; - diff = in[ 1 ] - cb_vec[ 1 ]; - sum_error += Wcpy[ 1 ] * diff * diff; - diff = in[ 2 ] - cb_vec[ 2 ]; - sum_error += Wcpy[ 2 ] * diff * diff; - diff = in[ 3 ] - cb_vec[ 3 ]; - sum_error += Wcpy[ 3 ] * diff * diff; - diff = in[ 4 ] - cb_vec[ 4 ]; - sum_error += Wcpy[ 4 ] * diff * diff; - diff = in[ 5 ] - cb_vec[ 5 ]; - sum_error += Wcpy[ 5 ] * diff * diff; - diff = in[ 6 ] - cb_vec[ 6 ]; - sum_error += Wcpy[ 6 ] * diff * diff; - diff = in[ 7 ] - cb_vec[ 7 ]; - sum_error += Wcpy[ 7 ] * diff * diff; - diff = in[ 8 ] - cb_vec[ 8 ]; - sum_error += Wcpy[ 8 ] * diff * diff; - diff = in[ 9 ] - cb_vec[ 9 ]; - sum_error += Wcpy[ 9 ] * diff * diff; + diff_Q8 = in_NLSF_Q8[ 0 ] - ( SKP_float )cb_vec_NLSF_Q8[ 0 ]; + sum_error_Q16 = Wcpy[ 0 ] * diff_Q8 * diff_Q8; + diff_Q8 = in_NLSF_Q8[ 1 ] - ( SKP_float )cb_vec_NLSF_Q8[ 1 ]; + sum_error_Q16 += Wcpy[ 1 ] * diff_Q8 * diff_Q8; + diff_Q8 = in_NLSF_Q8[ 2 ] - ( SKP_float )cb_vec_NLSF_Q8[ 2 ]; + sum_error_Q16 += Wcpy[ 2 ] * diff_Q8 * diff_Q8; + diff_Q8 = in_NLSF_Q8[ 3 ] - ( SKP_float )cb_vec_NLSF_Q8[ 3 ]; + sum_error_Q16 += Wcpy[ 3 ] * diff_Q8 * diff_Q8; + diff_Q8 = in_NLSF_Q8[ 4 ] - ( SKP_float )cb_vec_NLSF_Q8[ 4 ]; + sum_error_Q16 += Wcpy[ 4 ] * diff_Q8 * diff_Q8; + diff_Q8 = in_NLSF_Q8[ 5 ] - ( SKP_float )cb_vec_NLSF_Q8[ 5 ]; + sum_error_Q16 += Wcpy[ 5 ] * diff_Q8 * diff_Q8; + diff_Q8 = in_NLSF_Q8[ 6 ] - ( SKP_float )cb_vec_NLSF_Q8[ 6 ]; + sum_error_Q16 += Wcpy[ 6 ] * diff_Q8 * diff_Q8; + diff_Q8 = in_NLSF_Q8[ 7 ] - ( SKP_float )cb_vec_NLSF_Q8[ 7 ]; + sum_error_Q16 += Wcpy[ 7 ] * diff_Q8 * diff_Q8; + diff_Q8 = in_NLSF_Q8[ 8 ] - ( SKP_float )cb_vec_NLSF_Q8[ 8 ]; + sum_error_Q16 += Wcpy[ 8 ] * diff_Q8 * diff_Q8; + diff_Q8 = in_NLSF_Q8[ 9 ] - ( SKP_float )cb_vec_NLSF_Q8[ 9 ]; + sum_error_Q16 += Wcpy[ 9 ] * diff_Q8 * diff_Q8; - err[ i ] = sum_error; - cb_vec += 10; + err[ i ] = ( 1.0f / 65536.0f ) * sum_error_Q16; + cb_vec_NLSF_Q8 += 10; } - err += K; - in += 10; + err += K; + in_NLSF_Q8 += 10; } } } diff --git a/src_FLP/SKP_Silk_VQ_nearest_neighbor_FLP.c b/src_FLP/SKP_Silk_VQ_nearest_neighbor_FLP.c deleted file mode 100644 index 61b65b3f59245ff8f066971f10923dccae1e3a36..0000000000000000000000000000000000000000 --- a/src_FLP/SKP_Silk_VQ_nearest_neighbor_FLP.c +++ /dev/null @@ -1,98 +0,0 @@ -/*********************************************************************** -Copyright (c) 2006-2010, Skype Limited. All rights reserved. -Redistribution and use in source and binary forms, with or without -modification, (subject to the limitations in the disclaimer below) -are permitted provided that the following conditions are met: -- Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. -- Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -- Neither the name of Skype Limited, nor the names of specific -contributors, may be used to endorse or promote products derived from -this software without specific prior written permission. -NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED -BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, -BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -***********************************************************************/ - -#include "SKP_Silk_main_FLP.h" - -#define Q14_CONVERSION_FAC 6.1035e-005f // 1 / 2^14 - -/* entropy constrained MATRIX-weighted VQ, for a single input data vector */ -void SKP_Silk_VQ_WMat_EC_FLP( - SKP_int *ind, /* O Index of best codebook vector */ - SKP_float *rate_dist, /* O Best weighted quant. error + mu * rate */ - const SKP_float *in, /* I Input vector to be quantized */ - const SKP_float *W, /* I Weighting matrix */ - const SKP_int16 *cb, /* I Codebook */ - const SKP_int16 *cl_Q6, /* I Code length for each codebook vector */ - const SKP_float mu, /* I Tradeoff between WSSE and rate */ - const SKP_int L /* I Number of vectors in codebook */ -) -{ - SKP_int k; - SKP_float sum1; - SKP_float diff[ 5 ]; - const SKP_int16 *cb_row; - - /* Loop over codebook */ - *rate_dist = SKP_float_MAX; - cb_row = cb; - for( k = 0; k < L; k++ ) { - /* Calc difference between in vector and cbk vector */ - diff[ 0 ] = in[ 0 ] - ( SKP_float )cb_row[ 0 ] * Q14_CONVERSION_FAC; - diff[ 1 ] = in[ 1 ] - ( SKP_float )cb_row[ 1 ] * Q14_CONVERSION_FAC; - diff[ 2 ] = in[ 2 ] - ( SKP_float )cb_row[ 2 ] * Q14_CONVERSION_FAC; - diff[ 3 ] = in[ 3 ] - ( SKP_float )cb_row[ 3 ] * Q14_CONVERSION_FAC; - diff[ 4 ] = in[ 4 ] - ( SKP_float )cb_row[ 4 ] * Q14_CONVERSION_FAC; - - /* Weighted rate */ - sum1 = mu * cl_Q6[ k ] / 64.0f; - - /* Add weighted quantization error, assuming W is symmetric */ - /* first row of W */ - sum1 += diff[ 0 ] * ( W[ 0 ] * diff[ 0 ] + - 2.0f * ( W[ 1 ] * diff[ 1 ] + - W[ 2 ] * diff[ 2 ] + - W[ 3 ] * diff[ 3 ] + - W[ 4 ] * diff[ 4 ] ) ); - - /* second row of W */ - sum1 += diff[ 1 ] * ( W[ 6 ] * diff[ 1 ] + - 2.0f * ( W[ 7 ] * diff[ 2 ] + - W[ 8 ] * diff[ 3 ] + - W[ 9 ] * diff[ 4 ] ) ); - - /* third row of W */ - sum1 += diff[ 2 ] * ( W[ 12 ] * diff[ 2 ] + - 2.0f * ( W[ 13 ] * diff[ 3 ] + - W[ 14 ] * diff[ 4 ] ) ); - - /* fourth row of W */ - sum1 += diff[ 3 ] * ( W[ 18 ] * diff[ 3 ] + - 2.0f * ( W[ 19 ] * diff[ 4 ] ) ); - - /* last row of W */ - sum1 += diff[ 4 ] * ( W[ 24 ] * diff[ 4 ] ); - - /* find best */ - if( sum1 < *rate_dist ) { - *rate_dist = sum1; - *ind = k; - } - - /* Go to next cbk vector */ - cb_row += LTP_ORDER; - } -} diff --git a/src_FLP/SKP_Silk_control_codec_FLP.c b/src_FLP/SKP_Silk_control_codec_FLP.c index dd0e4d62cd161baec0717b7ccfb880e054fdba51..e8dff23de31aae7cdb8392b0272eb8ceba77af90 100644 --- a/src_FLP/SKP_Silk_control_codec_FLP.c +++ b/src_FLP/SKP_Silk_control_codec_FLP.c @@ -33,11 +33,6 @@ SKP_INLINE SKP_int SKP_Silk_setup_resamplers( SKP_int fs_kHz /* I Internal sampling rate (kHz) */ ); -SKP_INLINE SKP_int SKP_Silk_setup_packetsize( - SKP_Silk_encoder_state_FLP *psEnc, /* I/O Pointer to Silk encoder state FLP */ - SKP_int PacketSize_ms /* I Packet length (ms) */ -); - SKP_INLINE SKP_int SKP_Silk_setup_fs( SKP_Silk_encoder_state_FLP *psEnc, /* I/O */ SKP_int fs_kHz, /* I */ @@ -140,40 +135,6 @@ void SKP_Silk_LBRR_ctrl_FLP( } } -SKP_INLINE SKP_int SKP_Silk_setup_packetsize( - SKP_Silk_encoder_state_FLP *psEnc, /* I/O */ - SKP_int PacketSize_ms /* I */ -) -{ - SKP_int ret = SKP_SILK_NO_ERROR; - if( ( PacketSize_ms != 10 ) && - ( PacketSize_ms != 20 ) && - ( PacketSize_ms != 40 ) && - ( PacketSize_ms != 60 ) ) { - ret = SKP_SILK_ENC_PACKET_SIZE_NOT_SUPPORTED; - } else { - if( PacketSize_ms != psEnc->sCmn.PacketSize_ms ) { - if( PacketSize_ms == 10 ) { - /* Only allowed when the payload buffer is empty */ - psEnc->sCmn.nb_subfr = MAX_NB_SUBFR >> 1; - psEnc->sCmn.PacketSize_ms = PacketSize_ms; - psEnc->sPred.pitch_LPC_win_length = SKP_SMULBB( FIND_PITCH_LPC_WIN_MS_2_SF, psEnc->sCmn.fs_kHz ); - /* Packet length changes. Reset LBRR buffer */ - SKP_Silk_LBRR_reset( &psEnc->sCmn ); - } else{ - psEnc->sCmn.nb_subfr = MAX_NB_SUBFR; - psEnc->sCmn.PacketSize_ms = PacketSize_ms; - psEnc->sPred.pitch_LPC_win_length = SKP_SMULBB( FIND_PITCH_LPC_WIN_MS, psEnc->sCmn.fs_kHz ); - /* Packet length changes. Reset LBRR buffer */ - SKP_Silk_LBRR_reset( &psEnc->sCmn ); - } - } - psEnc->sCmn.frame_length = SKP_SMULBB( psEnc->sCmn.subfr_length, psEnc->sCmn.nb_subfr ); - } - - return(ret); -} - SKP_INLINE SKP_int SKP_Silk_setup_resamplers( SKP_Silk_encoder_state_FLP *psEnc, /* I/O Pointer to Silk encoder state FLP */ SKP_int fs_kHz /* I External (API) sampling rate (Hz) */ @@ -238,16 +199,37 @@ SKP_INLINE SKP_int SKP_Silk_setup_fs( { SKP_int ret = SKP_SILK_NO_ERROR; + /* Set packet size */ + if( PacketSize_ms != psEnc->sCmn.PacketSize_ms ) { + if( ( PacketSize_ms != 10 ) && + ( PacketSize_ms != 20 ) && + ( PacketSize_ms != 40 ) && + ( PacketSize_ms != 60 ) ) { + ret = SKP_SILK_ENC_PACKET_SIZE_NOT_SUPPORTED; + } + if( PacketSize_ms == 10 ) { + /* Only allowed when the payload buffer is empty */ + psEnc->sCmn.nb_subfr = MAX_NB_SUBFR >> 1; + psEnc->sPred.pitch_LPC_win_length = SKP_SMULBB( FIND_PITCH_LPC_WIN_MS_2_SF, fs_kHz ); + } else { + psEnc->sCmn.nb_subfr = MAX_NB_SUBFR; + psEnc->sPred.pitch_LPC_win_length = SKP_SMULBB( FIND_PITCH_LPC_WIN_MS, fs_kHz ); + } + /* Packet length changes. Reset LBRR buffer */ + SKP_Silk_LBRR_reset( &psEnc->sCmn ); + psEnc->sCmn.PacketSize_ms = PacketSize_ms; + } + /* Set internal sampling frequency */ if( psEnc->sCmn.fs_kHz != fs_kHz ) { /* reset part of the state */ - SKP_memset( &psEnc->sShape, 0, sizeof( SKP_Silk_shape_state_FLP ) ); - SKP_memset( &psEnc->sPrefilt, 0, sizeof( SKP_Silk_prefilter_state_FLP ) ); - SKP_memset( &psEnc->sNSQ, 0, sizeof( SKP_Silk_nsq_state ) ); - SKP_memset( &psEnc->sPred, 0, sizeof( SKP_Silk_predict_state_FLP ) ); - SKP_memset( psEnc->sNSQ.xq, 0, ( 2 * MAX_FRAME_LENGTH ) * sizeof( SKP_int16 ) ); - SKP_memset( psEnc->sNSQ_LBRR.xq, 0, ( 2 * MAX_FRAME_LENGTH ) * sizeof( SKP_int16 ) ); - SKP_memset( psEnc->sCmn.LBRR_buffer, 0, MAX_LBRR_DELAY * sizeof( SKP_SILK_LBRR_struct ) ); + SKP_memset( &psEnc->sShape, 0, sizeof( SKP_Silk_shape_state_FLP ) ); + SKP_memset( &psEnc->sPrefilt, 0, sizeof( SKP_Silk_prefilter_state_FLP ) ); + SKP_memset( &psEnc->sNSQ, 0, sizeof( SKP_Silk_nsq_state ) ); + SKP_memset( &psEnc->sPred, 0, sizeof( SKP_Silk_predict_state_FLP ) ); + SKP_memset( psEnc->sNSQ.xq, 0, 2 * MAX_FRAME_LENGTH * sizeof( SKP_int16 ) ); + SKP_memset( psEnc->sNSQ_LBRR.xq, 0, 2 * MAX_FRAME_LENGTH * sizeof( SKP_int16 ) ); + SKP_memset( psEnc->sCmn.LBRR_buffer, 0, MAX_LBRR_DELAY * sizeof( SKP_SILK_LBRR_struct ) ); #if SWITCH_TRANSITION_FILTERING SKP_memset( psEnc->sCmn.sLP.In_LP_State, 0, 2 * sizeof( SKP_int32 ) ); if( psEnc->sCmn.sLP.mode == 1 ) { @@ -281,50 +263,68 @@ SKP_INLINE SKP_int SKP_Silk_setup_fs( psEnc->sCmn.predictLPCOrder = MIN_LPC_ORDER; psEnc->sCmn.psNLSF_CB[ 0 ] = &SKP_Silk_NLSF_CB0_10; psEnc->sCmn.psNLSF_CB[ 1 ] = &SKP_Silk_NLSF_CB1_10; - psEnc->psNLSF_CB_FLP[ 0 ] = &SKP_Silk_NLSF_CB0_10_FLP; - psEnc->psNLSF_CB_FLP[ 1 ] = &SKP_Silk_NLSF_CB1_10_FLP; + if( psEnc->sCmn.nb_subfr == MAX_NB_SUBFR ){ + psEnc->sCmn.pitch_contour_iCDF = SKP_Silk_pitch_contour_NB_iCDF; + } else if( psEnc->sCmn.nb_subfr == MAX_NB_SUBFR / 2 ){ + psEnc->sCmn.pitch_contour_iCDF = SKP_Silk_pitch_contour_10_ms_NB_iCDF; + } else { + /* Unsupported number of frames */ + SKP_assert( 0 ); + } } else { psEnc->sCmn.predictLPCOrder = MAX_LPC_ORDER; psEnc->sCmn.psNLSF_CB[ 0 ] = &SKP_Silk_NLSF_CB0_16; psEnc->sCmn.psNLSF_CB[ 1 ] = &SKP_Silk_NLSF_CB1_16; - psEnc->psNLSF_CB_FLP[ 0 ] = &SKP_Silk_NLSF_CB0_16_FLP; - psEnc->psNLSF_CB_FLP[ 1 ] = &SKP_Silk_NLSF_CB1_16_FLP; + if( psEnc->sCmn.nb_subfr == MAX_NB_SUBFR ){ + psEnc->sCmn.pitch_contour_iCDF = SKP_Silk_pitch_contour_iCDF; + } else if( psEnc->sCmn.nb_subfr == MAX_NB_SUBFR / 2 ){ + psEnc->sCmn.pitch_contour_iCDF = SKP_Silk_pitch_contour_10_ms_iCDF; + } else { + /* Unsupported number of frames */ + SKP_assert( 0 ); + } } psEnc->sCmn.subfr_length = SUB_FRAME_LENGTH_MS * fs_kHz; + psEnc->sCmn.frame_length = psEnc->sCmn.subfr_length * psEnc->sCmn.nb_subfr; psEnc->sCmn.ltp_mem_length = LTP_MEM_LENGTH_MS * fs_kHz; psEnc->sCmn.la_pitch = LA_PITCH_MS * fs_kHz; psEnc->sPred.min_pitch_lag = 3 * fs_kHz; psEnc->sPred.max_pitch_lag = 18 * fs_kHz; if( psEnc->sCmn.nb_subfr == MAX_NB_SUBFR ){ psEnc->sPred.pitch_LPC_win_length = SKP_SMULBB( FIND_PITCH_LPC_WIN_MS, fs_kHz ); - } else { + } else if( psEnc->sCmn.nb_subfr == MAX_NB_SUBFR / 2 ){ psEnc->sPred.pitch_LPC_win_length = SKP_SMULBB( FIND_PITCH_LPC_WIN_MS_2_SF, fs_kHz ); + } else { + /* Unsupported number of frames */ + SKP_assert( 0 ); } if( psEnc->sCmn.fs_kHz == 24 ) { - psEnc->mu_LTP = MU_LTP_QUANT_SWB; - psEnc->sCmn.bitrate_threshold_up = SKP_int32_MAX; - psEnc->sCmn.bitrate_threshold_down = SWB2WB_BITRATE_BPS; + psEnc->sCmn.mu_LTP_Q10 = SKP_FIX_CONST( MU_LTP_QUANT_SWB, 10 ); + psEnc->sCmn.bitrate_threshold_up = SKP_int32_MAX; + psEnc->sCmn.bitrate_threshold_down = SWB2WB_BITRATE_BPS; + psEnc->sCmn.pitch_lag_low_bits_iCDF = SKP_Silk_uniform12_iCDF; } else if( psEnc->sCmn.fs_kHz == 16 ) { - psEnc->mu_LTP = MU_LTP_QUANT_WB; - psEnc->sCmn.bitrate_threshold_up = WB2SWB_BITRATE_BPS; - psEnc->sCmn.bitrate_threshold_down = WB2MB_BITRATE_BPS; + psEnc->sCmn.mu_LTP_Q10 = SKP_FIX_CONST( MU_LTP_QUANT_WB, 10 ); + psEnc->sCmn.bitrate_threshold_up = WB2SWB_BITRATE_BPS; + psEnc->sCmn.bitrate_threshold_down = WB2MB_BITRATE_BPS; + psEnc->sCmn.pitch_lag_low_bits_iCDF = SKP_Silk_uniform8_iCDF; } else if( psEnc->sCmn.fs_kHz == 12 ) { - psEnc->mu_LTP = MU_LTP_QUANT_MB; - psEnc->sCmn.bitrate_threshold_up = MB2WB_BITRATE_BPS; - psEnc->sCmn.bitrate_threshold_down = MB2NB_BITRATE_BPS; + psEnc->sCmn.mu_LTP_Q10 = SKP_FIX_CONST( MU_LTP_QUANT_MB, 10 ); + psEnc->sCmn.bitrate_threshold_up = MB2WB_BITRATE_BPS; + psEnc->sCmn.bitrate_threshold_down = MB2NB_BITRATE_BPS; + psEnc->sCmn.pitch_lag_low_bits_iCDF = SKP_Silk_uniform6_iCDF; + } else if( psEnc->sCmn.fs_kHz == 8 ) { + psEnc->sCmn.mu_LTP_Q10 = SKP_FIX_CONST( MU_LTP_QUANT_NB, 10 ); + psEnc->sCmn.bitrate_threshold_up = NB2MB_BITRATE_BPS; + psEnc->sCmn.bitrate_threshold_down = 0; + psEnc->sCmn.pitch_lag_low_bits_iCDF = SKP_Silk_uniform4_iCDF; } else { - psEnc->mu_LTP = MU_LTP_QUANT_NB; - psEnc->sCmn.bitrate_threshold_up = NB2MB_BITRATE_BPS; - psEnc->sCmn.bitrate_threshold_down = 0; + /* unsupported sampling rate */ + SKP_assert( 0 ); } psEnc->sCmn.fs_kHz_changed = 1; } - /********************************************/ - /* Set packet size */ - /********************************************/ - ret += SKP_Silk_setup_packetsize( psEnc, PacketSize_ms ); - /* Check that settings are valid */ SKP_assert( ( psEnc->sCmn.subfr_length * psEnc->sCmn.nb_subfr ) == psEnc->sCmn.frame_length ); @@ -338,7 +338,7 @@ SKP_INLINE SKP_int SKP_Silk_setup_rate( { SKP_int k, ret = SKP_SILK_NO_ERROR; SKP_float frac; - const SKP_int32 *rateTable; + const SKP_uint16 *rateTable; /* Set bitrate/coding quality */ if( TargetRate_bps != psEnc->sCmn.TargetRate_bps ) { diff --git a/src_FLP/SKP_Silk_define_FLP.h b/src_FLP/SKP_Silk_define_FLP.h deleted file mode 100644 index e518430a5a8804eeee253140a09b8162222b9613..0000000000000000000000000000000000000000 --- a/src_FLP/SKP_Silk_define_FLP.h +++ /dev/null @@ -1,103 +0,0 @@ -/*********************************************************************** -Copyright (c) 2006-2010, Skype Limited. All rights reserved. -Redistribution and use in source and binary forms, with or without -modification, (subject to the limitations in the disclaimer below) -are permitted provided that the following conditions are met: -- Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. -- Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -- Neither the name of Skype Limited, nor the names of specific -contributors, may be used to endorse or promote products derived from -this software without specific prior written permission. -NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED -BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, -BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -***********************************************************************/ - -#ifndef SKP_SILK_DEFINE_FLP_H -#define SKP_SILK_DEFINE_FLP_H - -#ifdef __cplusplus -extern "C" -{ -#endif - -/*******************/ -/* Pitch estimator */ -/*******************/ - -/* Level of noise floor for whitening filter LPC analysis in pitch analysis */ -#define FIND_PITCH_WHITE_NOISE_FRACTION 1e-3f - -/* Bandwidth expansion for whitening filter in pitch analysis */ -#define FIND_PITCH_BANDWITH_EXPANSION 0.99f - -/* Threshold used by pitch estimator for early escape */ -#define FIND_PITCH_CORRELATION_THRESHOLD_HC_MODE 0.7f -#define FIND_PITCH_CORRELATION_THRESHOLD_MC_MODE 0.75f -#define FIND_PITCH_CORRELATION_THRESHOLD_LC_MODE 0.8f - -/***********************/ -/* Long-Term predictor */ -/***********************/ - -/* Regualarization factor for correlation matrix. Equivalent to adding noise at -50 dB */ -#define FIND_LTP_COND_FAC 1e-5f -#define FIND_LPC_COND_FAC 6e-5f - -/* Find prediction coefficients defines */ -#define LTP_DAMPING 0.001f -#define LTP_SMOOTHING 0.1f - -/* LTP quantization settings */ -#define MU_LTP_QUANT_NB 0.03f -#define MU_LTP_QUANT_MB 0.025f -#define MU_LTP_QUANT_WB 0.02f -#define MU_LTP_QUANT_SWB 0.016f - -/***********************/ -/* High pass filtering */ -/***********************/ - -/* Smoothing parameters for low end of pitch frequency range estimation */ -#define VARIABLE_HP_SMTH_COEF1 0.1f -#define VARIABLE_HP_SMTH_COEF2 0.015f - -/* Min and max values for low end of pitch frequency range estimation */ -#define VARIABLE_HP_MIN_FREQ 80.0f -#define VARIABLE_HP_MAX_FREQ 150.0f - -/* Max absolute difference between log2 of pitch frequency and smoother state, to enter the smoother */ -#define VARIABLE_HP_MAX_DELTA_FREQ 0.4f - -/***********/ -/* Various */ -/***********/ - -/* Required speech activity for counting frame as active */ -#define WB_DETECT_ACTIVE_SPEECH_LEVEL_THRES 0.7f - -#define SPEECH_ACTIVITY_DTX_THRES 0.1f - -/* Speech Activity LBRR enable threshold (needs tuning) */ -#define LBRR_SPEECH_ACTIVITY_THRES 0.5f - -#define Q14_CONVERSION_FAC 6.1035e-005f // 1 / 2^14 - - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/src_FLP/SKP_Silk_encode_frame_FLP.c b/src_FLP/SKP_Silk_encode_frame_FLP.c index 664b03708ad121e218db5ac3aab405842020b5e2..9ea62eb569f4f4150a1e8869fe1633d6540fa1ac 100644 --- a/src_FLP/SKP_Silk_encode_frame_FLP.c +++ b/src_FLP/SKP_Silk_encode_frame_FLP.c @@ -52,8 +52,6 @@ SKP_int SKP_Silk_encode_frame_FLP( SKP_uint8 LBRRpayload[ MAX_ARITHM_BYTES ]; SKP_int16 nBytesLBRR; - const SKP_uint16 *FrameTermination_CDF; - TIC(ENCODE_FRAME) sEncCtrl.sCmn.Seed = psEnc->sCmn.frameCounter++ & 3; @@ -125,7 +123,7 @@ TOC(PREFILTER) /* Find linear prediction coefficients (LPC + LTP) */ /***************************************************/ TIC(FIND_PRED_COEF) - SKP_Silk_find_pred_coefs_FLP( psEnc, &sEncCtrl, res_pitch ); + SKP_Silk_find_pred_coefs_FLP( psEnc, &sEncCtrl, res_pitch, x_frame ); TOC(FIND_PRED_COEF) /****************************************/ @@ -183,7 +181,6 @@ TOC(NSQ) /****************************************/ TIC(ENCODE_PARAMS) SKP_Silk_encode_parameters( &psEnc->sCmn, &sEncCtrl.sCmn, psRangeEnc ); - FrameTermination_CDF = SKP_Silk_FrameTermination_CDF; TOC(ENCODE_PARAMS) /****************************************/ @@ -217,8 +214,7 @@ TOC(ENCODE_PARAMS) frame_terminator = SKP_SILK_NO_LBRR; /* Add the frame termination info to stream */ - ec_encode_bin( psRangeEnc, FrameTermination_CDF[ frame_terminator ], - FrameTermination_CDF[ frame_terminator + 1 ], 16 ); + ec_enc_icdf( psRangeEnc, frame_terminator, SKP_Silk_FrameTermination_iCDF, 8 ); /* Code excitation signal */ for( i = 0; i < psEnc->sCmn.nFramesInPayloadBuf; i++ ) { @@ -304,16 +300,15 @@ TOC(ENCODE_PARAMS) TOC(ENCODE_FRAME) #ifdef SAVE_ALL_INTERNAL_DATA - DEBUG_STORE_DATA( xf.dat, pIn_HP_LP, psEnc->sCmn.frame_length * sizeof( SKP_int16 ) ); - DEBUG_STORE_DATA( xfw.dat, xfw, psEnc->sCmn.frame_length * sizeof( SKP_float ) ); -// DEBUG_STORE_DATA( q.dat, q, psEnc->sCmn.frame_length * sizeof( SKP_int ) ); + //DEBUG_STORE_DATA( xf.dat, pIn_HP_LP, psEnc->sCmn.frame_length * sizeof( SKP_int16 ) ); + //DEBUG_STORE_DATA( xfw.dat, xfw, psEnc->sCmn.frame_length * sizeof( SKP_float ) ); DEBUG_STORE_DATA( pitchL.dat, sEncCtrl.sCmn.pitchL, MAX_NB_SUBFR * sizeof( SKP_int ) ); DEBUG_STORE_DATA( pitchG_quantized.dat, sEncCtrl.LTPCoef, psEnc->sCmn.nb_subfr * LTP_ORDER * sizeof( SKP_float ) ); DEBUG_STORE_DATA( pitch_freq_low_Hz.dat, &sEncCtrl.pitch_freq_low_Hz, sizeof( SKP_float ) ); DEBUG_STORE_DATA( LTPcorr.dat, &psEnc->LTPCorr, sizeof( SKP_float ) ); DEBUG_STORE_DATA( tilt.dat, &sEncCtrl.input_tilt, sizeof( SKP_float ) ); DEBUG_STORE_DATA( gains.dat, sEncCtrl.Gains, psEnc->sCmn.nb_subfr * sizeof( SKP_float ) ); -// DEBUG_STORE_DATA( gains_indices.dat, sEncCtrl.sCmn.GainsIndices, MAX_LAYERS * psEnc->sCmn.nb_subfr * sizeof( SKP_int ) ); + DEBUG_STORE_DATA( gains_indices.dat, &sEncCtrl.sCmn.GainsIndices, psEnc->sCmn.nb_subfr * sizeof( SKP_int ) ); DEBUG_STORE_DATA( nBytes.dat, &nBytes, sizeof( SKP_int ) ); DEBUG_STORE_DATA( current_SNR_db.dat, &sEncCtrl.current_SNR_dB, sizeof( SKP_float ) ); DEBUG_STORE_DATA( QuantOffsetType.dat, &sEncCtrl.sCmn.QuantOffsetType, sizeof( SKP_int ) ); diff --git a/src_FLP/SKP_Silk_find_pitch_lags_FLP.c b/src_FLP/SKP_Silk_find_pitch_lags_FLP.c index ad9d77546873321dad68ccff97c2cc5288546c1d..46856b70cbcf2143426d7c466b94a140e151ea02 100644 --- a/src_FLP/SKP_Silk_find_pitch_lags_FLP.c +++ b/src_FLP/SKP_Silk_find_pitch_lags_FLP.c @@ -81,7 +81,7 @@ void SKP_Silk_find_pitch_lags_FLP( SKP_Silk_autocorrelation_FLP( auto_corr, Wsig, psPredSt->pitch_LPC_win_length, psEnc->sCmn.pitchEstimationLPCOrder + 1 ); /* Add white noise, as a fraction of the energy */ - auto_corr[ 0 ] += auto_corr[ 0 ] * FIND_PITCH_WHITE_NOISE_FRACTION; + auto_corr[ 0 ] += auto_corr[ 0 ] * FIND_PITCH_WHITE_NOISE_FRACTION + 1; /* Calculate the reflection coefficients using Schur */ res_nrg = SKP_Silk_schur_FLP( refl_coef, auto_corr, psEnc->sCmn.pitchEstimationLPCOrder ); diff --git a/src_FLP/SKP_Silk_find_pred_coefs_FLP.c b/src_FLP/SKP_Silk_find_pred_coefs_FLP.c index 9553f0c16d5e49325b30555798661fa36877634c..1efd8dce874bd2263d3e45dba78c1588b12c76ac 100644 --- a/src_FLP/SKP_Silk_find_pred_coefs_FLP.c +++ b/src_FLP/SKP_Silk_find_pred_coefs_FLP.c @@ -29,9 +29,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. void SKP_Silk_find_pred_coefs_FLP( - SKP_Silk_encoder_state_FLP *psEnc, /* I/O Encoder state FLP */ - SKP_Silk_encoder_control_FLP *psEncCtrl, /* I/O Encoder control FLP */ - const SKP_float res_pitch[] /* I Residual from pitch analysis */ + SKP_Silk_encoder_state_FLP *psEnc, /* I/O Encoder state FLP */ + SKP_Silk_encoder_control_FLP *psEncCtrl, /* I/O Encoder control FLP */ + const SKP_float res_pitch[], /* I Residual from pitch analysis */ + const SKP_float x[] /* I Speech signal */ ) { SKP_int i; @@ -60,9 +61,14 @@ void SKP_Silk_find_pred_coefs_FLP( psEncCtrl->sCmn.pitchL, Wght, psEnc->sCmn.subfr_length, psEnc->sCmn.nb_subfr, psEnc->sCmn.ltp_mem_length ); +#ifdef SAVE_ALL_INTERNAL_DATA + DEBUG_STORE_DATA( ltp_gains.dat, psEncCtrl->LTPCoef, sizeof( psEncCtrl->LTPCoef ) ); + DEBUG_STORE_DATA( ltp_weights.dat, WLTP, sizeof( WLTP ) ); +#endif + /* Quantize LTP gain parameters */ SKP_Silk_quant_LTP_gains_FLP( psEncCtrl->LTPCoef, psEncCtrl->sCmn.LTPIndex, &psEncCtrl->sCmn.PERIndex, - WLTP, psEnc->mu_LTP, psEnc->sCmn.LTPQuantLowComplexity , psEnc->sCmn.nb_subfr ); + WLTP, psEnc->sCmn.mu_LTP_Q10, psEnc->sCmn.LTPQuantLowComplexity , psEnc->sCmn.nb_subfr ); /* Control LTP scaling */ SKP_Silk_LTP_scale_ctrl_FLP( psEnc, psEncCtrl ); @@ -76,7 +82,7 @@ void SKP_Silk_find_pred_coefs_FLP( /* UNVOICED */ /************/ /* Create signal with prepended subframes, scaled by inverse gains */ - x_ptr = psEnc->x_buf + psEnc->sCmn.ltp_mem_length - psEnc->sCmn.predictLPCOrder; + x_ptr = x - psEnc->sCmn.predictLPCOrder; x_pre_ptr = LPC_in_pre; for( i = 0; i < psEnc->sCmn.nb_subfr; i++ ) { SKP_Silk_scale_copy_vector_FLP( x_pre_ptr, x_ptr, invGains[ i ], @@ -104,7 +110,5 @@ void SKP_Silk_find_pred_coefs_FLP( /* Copy to prediction struct for use in next frame for fluctuation reduction */ SKP_memcpy( psEnc->sPred.prev_NLSFq, NLSF, psEnc->sCmn.predictLPCOrder * sizeof( SKP_float ) ); - - } diff --git a/src_FLP/SKP_Silk_main_FLP.h b/src_FLP/SKP_Silk_main_FLP.h index 75e0a168d8622341d456fa1f306688268ef719e3..8b18c1f9eb28a595378004d69be40ee0f1722090 100644 --- a/src_FLP/SKP_Silk_main_FLP.h +++ b/src_FLP/SKP_Silk_main_FLP.h @@ -31,7 +31,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "SKP_Silk_SigProc_FLP.h" #include "SKP_Silk_SigProc_FIX.h" #include "SKP_Silk_structs_FLP.h" -#include "SKP_Silk_tables_FLP.h" #include "SKP_Silk_main.h" #include "SKP_Silk_define.h" #include "SKP_debug.h" @@ -146,7 +145,8 @@ void SKP_Silk_find_pitch_lags_FLP( void SKP_Silk_find_pred_coefs_FLP( SKP_Silk_encoder_state_FLP *psEnc, /* I/O Encoder state FLP */ SKP_Silk_encoder_control_FLP *psEncCtrl, /* I/O Encoder control FLP */ - const SKP_float res_pitch[] /* I Residual from pitch analysis */ + const SKP_float res_pitch[], /* I Residual from pitch analysis */ + const SKP_float x[] /* I Speech signal */ ); /* LPC analysis */ @@ -248,13 +248,13 @@ void SKP_Silk_LPC_analysis_filter6_FLP( /* LTP tap quantizer */ void SKP_Silk_quant_LTP_gains_FLP( - SKP_float B[ MAX_NB_SUBFR * LTP_ORDER ], /* I/O (Un-)quantized LTP gains */ - SKP_int cbk_index[ MAX_NB_SUBFR ], /* O Codebook index */ - SKP_int *periodicity_index, /* O Periodicity index */ - const SKP_float W[ MAX_NB_SUBFR*LTP_ORDER*LTP_ORDER ], /* I Error weights */ - const SKP_float mu, /* I Mu value (R/D tradeoff) */ - const SKP_int lowComplexity, /* I Flag for low complexity */ - const SKP_int nb_subfr /* I number of subframes */ + SKP_float B[ MAX_NB_SUBFR * LTP_ORDER ], /* I/O (Un-)quantized LTP gains */ + SKP_int cbk_index[ MAX_NB_SUBFR ], /* O Codebook index */ + SKP_int *periodicity_index, /* O Periodicity index */ + const SKP_float W[ MAX_NB_SUBFR * LTP_ORDER * LTP_ORDER ], /* I Error weights */ + const SKP_int mu_Q10, /* I Mu value (R/D tradeoff) */ + const SKP_int lowComplexity, /* I Flag for low complexity */ + const SKP_int nb_subfr /* I number of subframes */ ); /******************/ @@ -271,7 +271,7 @@ void SKP_Silk_process_NLSFs_FLP( void SKP_Silk_NLSF_MSVQ_encode_FLP( SKP_int *NLSFIndices, /* O Codebook path vector [ CB_STAGES ] */ SKP_float *pNLSF, /* I/O Quantized NLSF vector [ LPC_ORDER ] */ - const SKP_Silk_NLSF_CB_FLP *psNLSF_CB_FLP, /* I Codebook object */ + const SKP_Silk_NLSF_CB_struct *psNLSF_CB, /* I Codebook object */ const SKP_float *pNLSF_q_prev, /* I Prev. quantized NLSF vector [LPC_ORDER] */ const SKP_float *pW, /* I NLSF weight vector [ LPC_ORDER ] */ const SKP_float NLSF_mu, /* I Rate weight for the RD optimization */ @@ -284,7 +284,7 @@ void SKP_Silk_NLSF_MSVQ_encode_FLP( /* Rate-Distortion calculations for multiple input data vectors */ void SKP_Silk_NLSF_VQ_rate_distortion_FLP( SKP_float *pRD, /* O Rate-distortion values [psNLSF_CBS_FLP->nVectors*N] */ - const SKP_Silk_NLSF_CBS_FLP *psNLSF_CBS_FLP, /* I NLSF codebook stage struct */ + const SKP_Silk_NLSF_CBS *psNLSF_CBS, /* I NLSF codebook stage struct */ const SKP_float *in, /* I Input vectors to be quantized */ const SKP_float *w, /* I Weight vector */ const SKP_float *rate_acc, /* I Accumulated rates from previous stage */ @@ -298,7 +298,7 @@ void SKP_Silk_NLSF_VQ_sum_error_FLP( SKP_float *err, /* O Weighted quantization errors [ N * K ] */ const SKP_float *in, /* I Input vectors [ N * LPC_order ] */ const SKP_float *w, /* I Weighting vectors [ N * LPC_order ] */ - const SKP_float *pCB, /* I Codebook vectors [ K * LPC_order ] */ + const SKP_int8 *pCB_NLSF_Q8, /* I Codebook vectors [ K * LPC_order ] */ const SKP_int N, /* I Number of input vectors */ const SKP_int K, /* I Number of codebook vectors */ const SKP_int LPC_order /* I LPC order */ @@ -307,7 +307,7 @@ void SKP_Silk_NLSF_VQ_sum_error_FLP( /* NLSF vector decoder */ void SKP_Silk_NLSF_MSVQ_decode_FLP( SKP_float *pNLSF, /* O Decoded output vector [ LPC_ORDER ] */ - const SKP_Silk_NLSF_CB_FLP *psNLSF_CB_FLP, /* I NLSF codebook struct */ + const SKP_Silk_NLSF_CB_struct *psNLSF_CB, /* I NLSF codebook struct */ const SKP_int *NLSFIndices, /* I NLSF indices [ nStages ] */ const SKP_int LPC_order /* I LPC order used */ ); @@ -404,8 +404,8 @@ void SKP_Silk_NLSF2A_stable_FLP( /* NLSF stabilizer, for a single input data vector */ void SKP_Silk_NLSF_stabilize_FLP( - SKP_float *pNLSF, /* I/O (Un)stable NLSF vector [ LPC_order ] */ - const SKP_float *pNDelta_min, /* I Normalized delta min vector[LPC_order+1]*/ + SKP_float *pNLSF, /* I/O (Un)stable NLSF vector [ LPC_order ] */ + const SKP_int *pNDelta_min_Q15, /* I Normalized delta min vector[LPC_order+1]*/ const SKP_int LPC_order /* I LPC order */ ); diff --git a/src_FLP/SKP_Silk_noise_shape_analysis_FLP.c b/src_FLP/SKP_Silk_noise_shape_analysis_FLP.c index 316aa9d0aafcde30d7e9de464660d41c322e3f19..6cca1f48baa8ccf0c38700633e47283460d1a022 100644 --- a/src_FLP/SKP_Silk_noise_shape_analysis_FLP.c +++ b/src_FLP/SKP_Silk_noise_shape_analysis_FLP.c @@ -142,7 +142,12 @@ void SKP_Silk_noise_shape_analysis_FLP( /* CONTROL SNR */ /****************/ /* Reduce SNR_dB values if recent bitstream has exceeded TargetRate */ - psEncCtrl->current_SNR_dB = psEnc->SNR_dB - 0.05f * psEnc->BufferedInChannel_ms; + psEncCtrl->current_SNR_dB = psEnc->SNR_dB - 0.1f * psEnc->BufferedInChannel_ms; + + /* Reduce SNR for 10 ms frames */ + if( psEnc->sCmn.nb_subfr == 2 ) { + psEncCtrl->current_SNR_dB -= 1.5f; + } /* Reduce SNR_dB if inband FEC used */ if( psEnc->speech_activity > LBRR_SPEECH_ACTIVITY_THRES ) { @@ -158,10 +163,12 @@ void SKP_Silk_noise_shape_analysis_FLP( /* Coding quality level, between 0.0 and 1.0 */ psEncCtrl->coding_quality = SKP_sigmoid( 0.25f * ( psEncCtrl->current_SNR_dB - 18.0f ) ); - /* Reduce coding SNR during low speech activity */ - b = 1.0f - psEnc->speech_activity; - SNR_adj_dB = psEncCtrl->current_SNR_dB - - BG_SNR_DECR_dB * psEncCtrl->coding_quality * ( 0.5f + 0.5f * psEncCtrl->input_quality ) * b * b; + SNR_adj_dB = psEncCtrl->current_SNR_dB; + if( psEnc->sCmn.useCBR == 0 ) { + /* Reduce coding SNR during low speech activity */ + b = 1.0f - psEnc->speech_activity; + SNR_adj_dB -= BG_SNR_DECR_dB * psEncCtrl->coding_quality * ( 0.5f + 0.5f * psEncCtrl->input_quality ) * b * b; + } if( psEncCtrl->sCmn.sigtype == SIG_TYPE_VOICED ) { /* Reduce gains for periodic signals */ @@ -290,18 +297,15 @@ void SKP_Silk_noise_shape_analysis_FLP( /*****************/ /* Gain tweaking */ /*****************/ - /* Increase gains during low speech activity and put lower limit on gains */ - gain_mult = ( SKP_float )pow( 2.0f, -0.16f * SNR_adj_dB ); - gain_add = ( SKP_float )pow( 2.0f, 0.16f * NOISE_FLOOR_dB ) + - ( SKP_float )pow( 2.0f, 0.16f * RELATIVE_MIN_GAIN_dB ) * psEnc->avgGain; + /* Increase gains during low speech activity */ + gain_mult = (SKP_float)pow( 2.0f, -0.16f * SNR_adj_dB ); + gain_add = (SKP_float)pow( 2.0f, 0.16f * MIN_QGAIN_DB ); for( k = 0; k < psEnc->sCmn.nb_subfr; k++ ) { psEncCtrl->Gains[ k ] *= gain_mult; psEncCtrl->Gains[ k ] += gain_add; - psEnc->avgGain += psEnc->speech_activity * GAIN_SMOOTHING_COEF * ( psEncCtrl->Gains[ k ] - psEnc->avgGain ); } gain_mult = 1.0f + INPUT_TILT + psEncCtrl->coding_quality * HIGH_RATE_INPUT_TILT; - for( k = 0; k < psEnc->sCmn.nb_subfr; k++ ) { psEncCtrl->GainsPre[ k ] *= gain_mult; } @@ -311,6 +315,7 @@ void SKP_Silk_noise_shape_analysis_FLP( /************************************************/ /* Less low frequency shaping for noisy inputs */ strength = LOW_FREQ_SHAPING * ( 1.0f + LOW_QUALITY_LOW_FREQ_SHAPING_DECR * ( psEncCtrl->input_quality_bands[ 0 ] - 1.0f ) ); + strength *= psEnc->speech_activity; if( psEncCtrl->sCmn.sigtype == SIG_TYPE_VOICED ) { /* Reduce low frequencies quantization noise for periodic signals, depending on pitch lag */ /*f = 400; freqz([1, -0.98 + 2e-4 * f], [1, -0.97 + 7e-4 * f], 2^12, Fs); axis([0, 1000, -10, 1])*/ diff --git a/src_FLP/SKP_Silk_prefilter_FLP.c b/src_FLP/SKP_Silk_prefilter_FLP.c index 106d72f4c2f18a4b6e22d69614d2e03be04a562e..80ec457c2888588534d43de9a4cead3c5bd50844 100644 --- a/src_FLP/SKP_Silk_prefilter_FLP.c +++ b/src_FLP/SKP_Silk_prefilter_FLP.c @@ -116,9 +116,9 @@ void SKP_Silk_prefilter_FLP( /* Noise shape parameters */ HarmShapeGain = psEncCtrl->HarmShapeGain[ k ] * ( 1.0f - psEncCtrl->HarmBoost[ k ] ); - HarmShapeFIR[ 0 ] = SKP_Silk_HarmShapeFIR_FLP[ 0 ] * HarmShapeGain; - HarmShapeFIR[ 1 ] = SKP_Silk_HarmShapeFIR_FLP[ 1 ] * HarmShapeGain; - HarmShapeFIR[ 2 ] = SKP_Silk_HarmShapeFIR_FLP[ 2 ] * HarmShapeGain; + HarmShapeFIR[ 0 ] = 0.25f * HarmShapeGain; + HarmShapeFIR[ 1 ] = 32767.0f / 65536.0f * HarmShapeGain; + HarmShapeFIR[ 2 ] = 0.25f * HarmShapeGain; Tilt = psEncCtrl->Tilt[ k ]; LF_MA_shp = psEncCtrl->LF_MA_shp[ k ]; LF_AR_shp = psEncCtrl->LF_AR_shp[ k ]; diff --git a/src_FLP/SKP_Silk_process_NLSFs_FLP.c b/src_FLP/SKP_Silk_process_NLSFs_FLP.c index e1ceff50083d71b77ee175e110f4c6cd24f53f3e..69899555bdc3136512fd1a431fcb1e6efc97af0d 100644 --- a/src_FLP/SKP_Silk_process_NLSFs_FLP.c +++ b/src_FLP/SKP_Silk_process_NLSFs_FLP.c @@ -38,7 +38,7 @@ void SKP_Silk_process_NLSFs_FLP( SKP_int doInterpolate; SKP_float pNLSFW[ MAX_LPC_ORDER ]; SKP_float NLSF_mu, NLSF_mu_fluc_red, i_sqr, NLSF_interpolation_factor = 0.0f; - const SKP_Silk_NLSF_CB_FLP *psNLSF_CB_FLP; + const SKP_Silk_NLSF_CB_struct *psNLSF_CB; /* Used only for NLSF interpolation */ SKP_float pNLSF0_temp[ MAX_LPC_ORDER ]; @@ -81,10 +81,10 @@ void SKP_Silk_process_NLSFs_FLP( } /* Set pointer to the NLSF codebook for the current signal type and LPC order */ - psNLSF_CB_FLP = psEnc->psNLSF_CB_FLP[ psEncCtrl->sCmn.sigtype ]; + psNLSF_CB = psEnc->sCmn.psNLSF_CB[ psEncCtrl->sCmn.sigtype ]; /* Quantize NLSF parameters given the trained NLSF codebooks */ - SKP_Silk_NLSF_MSVQ_encode_FLP( psEncCtrl->sCmn.NLSFIndices, pNLSF, psNLSF_CB_FLP, psEnc->sPred.prev_NLSFq, pNLSFW, NLSF_mu, + SKP_Silk_NLSF_MSVQ_encode_FLP( psEncCtrl->sCmn.NLSFIndices, pNLSF, psNLSF_CB, psEnc->sPred.prev_NLSFq, pNLSFW, NLSF_mu, NLSF_mu_fluc_red, psEnc->sCmn.NLSF_MSVQ_Survivors, psEnc->sCmn.predictLPCOrder, psEnc->sCmn.first_frame_after_reset ); /* Convert quantized NLSFs back to LPC coefficients */ diff --git a/src_FLP/SKP_Silk_process_gains_FLP.c b/src_FLP/SKP_Silk_process_gains_FLP.c index 520d1b543638cc40c6d1476d7e07ad43f5084731..5b2852df77f5b786874a247ec596fa9636ef3437 100644 --- a/src_FLP/SKP_Silk_process_gains_FLP.c +++ b/src_FLP/SKP_Silk_process_gains_FLP.c @@ -65,6 +65,7 @@ void SKP_Silk_process_gains_FLP( /* Noise shaping quantization */ SKP_Silk_gains_quant( psEncCtrl->sCmn.GainsIndices, pGains_Q16, &psShapeSt->LastGainIndex, psEnc->sCmn.nFramesInPayloadBuf, psEnc->sCmn.nb_subfr ); + /* Overwrite unquantized gains with quantized gains and convert back to Q0 from Q16 */ for( k = 0; k < psEnc->sCmn.nb_subfr; k++ ) { psEncCtrl->Gains[ k ] = pGains_Q16[ k ] / 65536.0f; diff --git a/src_FLP/SKP_Silk_quant_LTP_gains_FLP.c b/src_FLP/SKP_Silk_quant_LTP_gains_FLP.c deleted file mode 100644 index 8353117bb4a79ab9b7b31a934ac267e720e279e9..0000000000000000000000000000000000000000 --- a/src_FLP/SKP_Silk_quant_LTP_gains_FLP.c +++ /dev/null @@ -1,110 +0,0 @@ -/*********************************************************************** -Copyright (c) 2006-2010, Skype Limited. All rights reserved. -Redistribution and use in source and binary forms, with or without -modification, (subject to the limitations in the disclaimer below) -are permitted provided that the following conditions are met: -- Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. -- Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -- Neither the name of Skype Limited, nor the names of specific -contributors, may be used to endorse or promote products derived from -this software without specific prior written permission. -NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED -BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, -BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -***********************************************************************/ - -#include "SKP_Silk_main_FLP.h" - -#define Q14_CONVERSION_FAC 6.1035e-005f // 1 / 2^14 - -void SKP_Silk_quant_LTP_gains_FLP( - SKP_float B[ MAX_NB_SUBFR * LTP_ORDER ], /* I/O (Un-)quantized LTP gains */ - SKP_int cbk_index[ MAX_NB_SUBFR ], /* O Codebook index */ - SKP_int *periodicity_index, /* O Periodicity index */ - const SKP_float W[ MAX_NB_SUBFR*LTP_ORDER*LTP_ORDER ], /* I Error weights */ - const SKP_float mu, /* I Mu value (R/D tradeoff) */ - const SKP_int lowComplexity, /* I Flag for low complexity */ - const SKP_int nb_subfr /* I number of subframes */ -) -{ - SKP_int j, k, temp_idx[ MAX_NB_SUBFR ], cbk_size; - const SKP_uint16 *cdf_ptr; - const SKP_int16 *cl_ptr; - const SKP_int16 *cbk_ptr_Q14; - const SKP_float *b_ptr, *W_ptr; - SKP_float rate_dist_subfr, rate_dist, min_rate_dist; - - - - /***************************************************/ - /* Iterate over different codebooks with different */ - /* rates/distortions, and choose best */ - /***************************************************/ - min_rate_dist = SKP_float_MAX; - for( k = 0; k < 3; k++ ) { - cdf_ptr = SKP_Silk_LTP_gain_CDF_ptrs[ k ]; - cl_ptr = SKP_Silk_LTP_gain_BITS_Q6_ptrs[ k ]; - cbk_ptr_Q14 = SKP_Silk_LTP_vq_ptrs_Q14[ k ]; - cbk_size = SKP_Silk_LTP_vq_sizes[ k ]; - - /* Setup pointer to first subframe */ - W_ptr = W; - b_ptr = B; - - rate_dist = 0.0f; - for( j = 0; j < nb_subfr; j++ ) { - - SKP_Silk_VQ_WMat_EC_FLP( - &temp_idx[ j ], /* O index of best codebook vector */ - &rate_dist_subfr, /* O best weighted quantization error + mu * rate */ - b_ptr, /* I input vector to be quantized */ - W_ptr, /* I weighting matrix */ - cbk_ptr_Q14, /* I codebook */ - cl_ptr, /* I code length for each codebook vector */ - mu, /* I tradeoff between weighted error and rate */ - cbk_size /* I number of vectors in codebook */ - ); - - rate_dist += rate_dist_subfr; - - b_ptr += LTP_ORDER; - W_ptr += LTP_ORDER * LTP_ORDER; - } - - if( rate_dist < min_rate_dist ) { - min_rate_dist = rate_dist; - SKP_memcpy( cbk_index, temp_idx, nb_subfr * sizeof( SKP_int ) ); - *periodicity_index = k; - } - - /* Break early in low-complexity mode if rate distortion is below threshold */ - if( lowComplexity && ( rate_dist * 16384.0f < ( SKP_float )SKP_Silk_LTP_gain_middle_avg_RD_Q14 ) ) { - break; - } - } - - cbk_ptr_Q14 = SKP_Silk_LTP_vq_ptrs_Q14[ *periodicity_index ]; - for( j = 0; j < nb_subfr; j++ ) { - SKP_short2float_array( &B[ j * LTP_ORDER ], - &cbk_ptr_Q14[ cbk_index[ j ] * LTP_ORDER ], - LTP_ORDER ); - } - - for( j = 0; j < nb_subfr * LTP_ORDER; j++ ) { - B[ j ] *= Q14_CONVERSION_FAC; - } - -} - diff --git a/src_FLP/SKP_Silk_structs_FLP.h b/src_FLP/SKP_Silk_structs_FLP.h index d30cbca27fc816b65cc3665b59da33666584461e..b2dd9268481ff60ea69a4d8732fde8e8fd5d455b 100644 --- a/src_FLP/SKP_Silk_structs_FLP.h +++ b/src_FLP/SKP_Silk_structs_FLP.h @@ -70,29 +70,6 @@ typedef struct { SKP_float prev_NLSFq[ MAX_LPC_ORDER ]; /* Previously quantized NLSF vector */ } SKP_Silk_predict_state_FLP; -/*******************************************/ -/* Structure containing NLSF MSVQ codebook */ -/*******************************************/ -/* structure for one stage of MSVQ */ -typedef struct { - const SKP_int32 nVectors; - const SKP_float *CB; - const SKP_float *Rates; -} SKP_Silk_NLSF_CBS_FLP; - -typedef struct { - const SKP_int32 nStages; - - /* fields for (de)quantizing */ - const SKP_Silk_NLSF_CBS_FLP *CBStages; - const SKP_float *NDeltaMin; - - /* fields for arithmetic (de)coding */ - const SKP_uint16 *CDF; - const SKP_uint16 * const *StartPtr; - const SKP_int *MiddleIx; -} SKP_Silk_NLSF_CB_FLP; - /********************************/ /* Encoder state FLP */ /********************************/ @@ -111,9 +88,7 @@ typedef struct { /* Buffer for find pitch and noise shape analysis */ SKP_float x_buf[ 2 * MAX_FRAME_LENGTH + LA_SHAPE_MAX ];/* Buffer for find pitch and noise shape analysis */ SKP_float LTPCorr; /* Normalized correlation from pitch lag estimator */ - SKP_float mu_LTP; /* Rate-distortion tradeoff in LTP quantization */ SKP_float SNR_dB; /* Quality setting */ - SKP_float avgGain; /* average gain during active speech */ SKP_float BufferedInChannel_ms; /* Simulated number of ms buffer in channel because of exceeded TargetRate_bps */ SKP_float speech_activity; /* Speech activity */ @@ -122,8 +97,6 @@ typedef struct { SKP_float HPLTPredCodGain; SKP_float inBandFEC_SNR_comp; /* Compensation to SNR_DB when using inband FEC Voiced */ - - const SKP_Silk_NLSF_CB_FLP *psNLSF_CB_FLP[ 2 ]; /* Pointers to voiced/unvoiced NLSF codebooks */ } SKP_Silk_encoder_state_FLP; diff --git a/src_FLP/SKP_Silk_tables_FLP.h b/src_FLP/SKP_Silk_tables_FLP.h deleted file mode 100644 index cabc526131d17d72c9eeb636cb8737a9c1ded9d4..0000000000000000000000000000000000000000 --- a/src_FLP/SKP_Silk_tables_FLP.h +++ /dev/null @@ -1,52 +0,0 @@ -/*********************************************************************** -Copyright (c) 2006-2010, Skype Limited. All rights reserved. -Redistribution and use in source and binary forms, with or without -modification, (subject to the limitations in the disclaimer below) -are permitted provided that the following conditions are met: -- Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. -- Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -- Neither the name of Skype Limited, nor the names of specific -contributors, may be used to endorse or promote products derived from -this software without specific prior written permission. -NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED -BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, -BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -***********************************************************************/ - -#ifndef SKP_SILK_TABLES_FLP_H -#define SKP_SILK_TABLES_FLP_H - -#include "SKP_Silk_structs_FLP.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -/* filters */ -extern const SKP_float SKP_Silk_HarmShapeFIR_FLP[ HARM_SHAPE_FIR_TAPS ]; - -/* Table of quantization offset values */ -extern const SKP_float SKP_Silk_Quantization_Offsets[ 2 ][ 2 ]; - -/* NLSF codebooks */ -extern const SKP_Silk_NLSF_CB_FLP SKP_Silk_NLSF_CB0_16_FLP, SKP_Silk_NLSF_CB1_16_FLP; -extern const SKP_Silk_NLSF_CB_FLP SKP_Silk_NLSF_CB0_10_FLP, SKP_Silk_NLSF_CB1_10_FLP; - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/src_FLP/SKP_Silk_tables_NLSF_CB0_10_FLP.c b/src_FLP/SKP_Silk_tables_NLSF_CB0_10_FLP.c deleted file mode 100644 index e25b0850bffe818d51e3cca9e5f3c7dbed30324d..0000000000000000000000000000000000000000 --- a/src_FLP/SKP_Silk_tables_NLSF_CB0_10_FLP.c +++ /dev/null @@ -1,784 +0,0 @@ -/*********************************************************************** -Copyright (c) 2006-2010, Skype Limited. All rights reserved. -Redistribution and use in source and binary forms, with or without -modification, (subject to the limitations in the disclaimer below) -are permitted provided that the following conditions are met: -- Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. -- Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -- Neither the name of Skype Limited, nor the names of specific -contributors, may be used to endorse or promote products derived from -this software without specific prior written permission. -NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED -BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, -BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -***********************************************************************/ - -/**********************************************/ -/* This file has been automatically generated */ -/* */ -/* ROM usage: 5.68 kB */ -/**********************************************/ - -#include "SKP_Silk_tables_FLP.h" -#include "SKP_Silk_tables_NLSF_CB0_10.h" - -const SKP_float SKP_Silk_NLSF_MSVQ_CB0_10_rates[ NLSF_MSVQ_CB0_10_VECTORS ] = -{ - 4.75000000000000000000f, 4.75000000000000000000f, - 4.87500000000000000000f, 5.12500000000000000000f, - 5.37500000000000000000f, 5.37500000000000000000f, - 5.43750000000000000000f, 5.43750000000000000000f, - 5.43750000000000000000f, 5.50000000000000000000f, - 5.50000000000000000000f, 5.50000000000000000000f, - 5.56250000000000000000f, 5.56250000000000000000f, - 5.62500000000000000000f, 5.62500000000000000000f, - 5.62500000000000000000f, 5.68750000000000000000f, - 5.75000000000000000000f, 5.75000000000000000000f, - 5.75000000000000000000f, 5.87500000000000000000f, - 5.87500000000000000000f, 5.87500000000000000000f, - 5.93750000000000000000f, 5.93750000000000000000f, - 6.00000000000000000000f, 6.00000000000000000000f, - 6.00000000000000000000f, 6.06250000000000000000f, - 6.06250000000000000000f, 6.06250000000000000000f, - 6.12500000000000000000f, 6.12500000000000000000f, - 6.12500000000000000000f, 6.12500000000000000000f, - 6.12500000000000000000f, 6.18750000000000000000f, - 6.18750000000000000000f, 6.25000000000000000000f, - 6.25000000000000000000f, 6.25000000000000000000f, - 6.31250000000000000000f, 6.31250000000000000000f, - 6.31250000000000000000f, 6.37500000000000000000f, - 6.37500000000000000000f, 6.37500000000000000000f, - 6.43750000000000000000f, 6.43750000000000000000f, - 6.43750000000000000000f, 6.50000000000000000000f, - 6.75000000000000000000f, 6.75000000000000000000f, - 6.75000000000000000000f, 7.12500000000000000000f, - 7.56250000000000000000f, 7.68750000000000000000f, - 8.00000000000000000000f, 8.00000000000000000000f, - 8.00000000000000000000f, 8.00000000000000000000f, - 8.00000000000000000000f, 8.00000000000000000000f, - 3.68750000000000000000f, 3.68750000000000000000f, - 3.75000000000000000000f, 3.81250000000000000000f, - 3.93750000000000000000f, 3.93750000000000000000f, - 3.93750000000000000000f, 3.93750000000000000000f, - 3.93750000000000000000f, 4.06250000000000000000f, - 4.12500000000000000000f, 4.18750000000000000000f, - 4.18750000000000000000f, 4.18750000000000000000f, - 4.50000000000000000000f, 4.56250000000000000000f, - 2.87500000000000000000f, 2.87500000000000000000f, - 3.00000000000000000000f, 3.00000000000000000000f, - 3.00000000000000000000f, 3.06250000000000000000f, - 3.12500000000000000000f, 3.12500000000000000000f, - 2.68750000000000000000f, 2.87500000000000000000f, - 2.93750000000000000000f, 2.93750000000000000000f, - 3.00000000000000000000f, 3.06250000000000000000f, - 3.25000000000000000000f, 3.31250000000000000000f, - 2.87500000000000000000f, 2.93750000000000000000f, - 2.93750000000000000000f, 2.93750000000000000000f, - 3.06250000000000000000f, 3.06250000000000000000f, - 3.06250000000000000000f, 3.06250000000000000000f, - 2.87500000000000000000f, 2.93750000000000000000f, - 3.00000000000000000000f, 3.00000000000000000000f, - 3.00000000000000000000f, 3.06250000000000000000f, - 3.06250000000000000000f, 3.12500000000000000000f, - 3.75000000000000000000f, 3.75000000000000000000f, - 3.81250000000000000000f, 3.81250000000000000000f, - 3.81250000000000000000f, 3.81250000000000000000f, - 3.87500000000000000000f, 3.93750000000000000000f, - 4.00000000000000000000f, 4.00000000000000000000f, - 4.06250000000000000000f, 4.18750000000000000000f, - 4.18750000000000000000f, 4.31250000000000000000f, - 4.31250000000000000000f, 4.75000000000000000000f -}; - -const SKP_float SKP_Silk_NLSF_MSVQ_CB0_10_ndelta_min[ 10 + 1 ] = -{ - 0.01687622070312500000f, - 0.00015258789062500000f, - 0.00067138671874999989f, - 0.00057983398437500000f, - 0.00009155273437500000f, - 0.00009155273437500000f, - 0.00549316406250000000f, - 0.00494384765625000000f, - 0.00933837890625000000f, - 0.00521850585937500000f, - 0.03024291992187500000f -}; - -const SKP_float SKP_Silk_NLSF_MSVQ_CB0_10[ 10 * NLSF_MSVQ_CB0_10_VECTORS ] = -{ - -0.42187500000000000000f, -0.35156250000000000000f, - -0.27734375000000000000f, -0.19140625000000000000f, - -0.09375000000000000000f, -0.01953125000000000000f, - 0.08203125000000000000f, 0.18750000000000000000f, - 0.29296875000000000000f, 0.38671875000000006000f, - -0.42187500000000000000f, -0.38671875000000006000f, - -0.29687500000000000000f, -0.22265625000000000000f, - -0.15234375000000000000f, -0.02734375000000000000f, - 0.07812500000000000000f, 0.19531250000000000000f, - 0.29687500000000000000f, 0.38281250000000000000f, - -0.41015625000000000000f, -0.37890625000000000000f, - -0.32421875000000006000f, -0.19140625000000000000f, - -0.07421875000000000000f, -0.02734375000000000000f, - 0.10546875000000000000f, 0.18359375000000000000f, - 0.26171875000000000000f, 0.39843750000000000000f, - -0.37890625000000000000f, -0.35156250000000000000f, - -0.29296875000000000000f, -0.19140625000000000000f, - -0.02343750000000000000f, 0.02343750000000000000f, - 0.10546875000000000000f, 0.21484375000000000000f, - 0.28515625000000000000f, 0.37109375000000000000f, - -0.37109375000000000000f, -0.34765625000000000000f, - -0.28125000000000000000f, -0.15625000000000000000f, - -0.10937500000000000000f, -0.04296874999999999300f, - 0.08203125000000000000f, 0.14453125000000000000f, - 0.27343750000000000000f, 0.33593750000000000000f, - -0.40234375000000000000f, -0.37890625000000000000f, - -0.32031250000000000000f, -0.18750000000000000000f, - 0.03125000000000000000f, 0.08203125000000000000f, - 0.14062500000000000000f, 0.21875000000000000000f, - 0.28906250000000000000f, 0.39453125000000000000f, - -0.40234375000000000000f, -0.37500000000000000000f, - -0.31640625000000000000f, -0.12890625000000000000f, - -0.07421875000000000000f, -0.01171875000000000000f, - 0.10937500000000000000f, 0.16015625000000000000f, - 0.33593750000000000000f, 0.39843750000000000000f, - -0.43359375000000000000f, -0.39843750000000000000f, - -0.33203125000000000000f, -0.24218750000000000000f, - -0.14843750000000000000f, -0.08203125000000000000f, - 0.04296874999999999300f, 0.16015625000000000000f, - 0.25781250000000000000f, 0.37109375000000000000f, - -0.34374999999999994000f, -0.32031250000000000000f, - -0.24609375000000000000f, -0.10937500000000000000f, - -0.03906250000000000000f, 0.00390625000000000000f, - 0.13671875000000000000f, 0.20703125000000000000f, - 0.28515625000000000000f, 0.40234375000000000000f, - -0.39453125000000000000f, -0.37500000000000000000f, - -0.26171875000000000000f, -0.06640625000000000000f, - -0.01562500000000000000f, 0.03906250000000000000f, - 0.11718749999999999000f, 0.17578125000000000000f, - 0.33593750000000000000f, 0.40234375000000000000f, - -0.36718750000000000000f, -0.33984375000000000000f, - -0.27343750000000000000f, -0.21484375000000000000f, - -0.17187499999999997000f, -0.09765625000000000000f, - 0.14453125000000000000f, 0.21484375000000000000f, - 0.28515625000000000000f, 0.40625000000000006000f, - -0.38281250000000000000f, -0.35937500000000000000f, - -0.27734375000000000000f, -0.14453125000000000000f, - -0.08984375000000000000f, -0.03906250000000000000f, - 0.14453125000000000000f, 0.21093750000000000000f, - 0.28515625000000000000f, 0.40625000000000006000f, - -0.44531250000000000000f, -0.42187500000000000000f, - -0.30859375000000000000f, -0.19140625000000000000f, - -0.07812500000000000000f, 0.00781250000000000000f, - 0.11328125000000000000f, 0.21093750000000000000f, - 0.31250000000000000000f, 0.40234375000000000000f, - -0.41796875000000000000f, -0.38671875000000006000f, - -0.33593750000000000000f, -0.23437499999999997000f, - -0.02734375000000000000f, 0.04296874999999999300f, - 0.10546875000000000000f, 0.19140625000000000000f, - 0.26171875000000000000f, 0.37109375000000000000f, - -0.39062500000000000000f, -0.36718750000000000000f, - -0.29687500000000000000f, -0.15625000000000000000f, - -0.01953125000000000000f, 0.02343750000000000000f, - 0.10156250000000001000f, 0.16796875000000000000f, - 0.24218750000000000000f, 0.39843750000000000000f, - -0.34374999999999994000f, -0.30859375000000000000f, - -0.25000000000000000000f, -0.17187499999999997000f, - -0.10937500000000000000f, -0.05859374999999999300f, - 0.10156250000000001000f, 0.16796875000000000000f, - 0.25000000000000000000f, 0.40625000000000006000f, - -0.40234375000000000000f, -0.38281250000000000000f, - -0.27734375000000000000f, -0.10156250000000001000f, - -0.05468750000000000000f, 0.01562500000000000000f, - 0.08984375000000000000f, 0.16796875000000000000f, - 0.28125000000000000000f, 0.33984375000000000000f, - -0.42968750000000000000f, -0.40234375000000000000f, - -0.32421875000000006000f, -0.22656250000000000000f, - -0.10546875000000000000f, -0.01953125000000000000f, - 0.06250000000000000000f, 0.13671875000000000000f, - 0.22656250000000000000f, 0.35937500000000000000f, - -0.40234375000000000000f, -0.36718750000000000000f, - -0.30859375000000000000f, -0.24218750000000000000f, - -0.08203125000000000000f, -0.02734375000000000000f, - 0.04687500000000000000f, 0.20312500000000003000f, - 0.26953125000000000000f, 0.34374999999999994000f, - -0.41796875000000000000f, -0.38281250000000000000f, - -0.32812500000000000000f, -0.17187499999999997000f, - -0.11328125000000000000f, -0.04687500000000000000f, - 0.03515625000000000000f, 0.10937500000000000000f, - 0.28515625000000000000f, 0.35156250000000000000f, - -0.38671875000000006000f, -0.36328124999999994000f, - -0.26562500000000000000f, -0.12500000000000000000f, - -0.07421875000000000000f, -0.01953125000000000000f, - 0.04687500000000000000f, 0.10937500000000000000f, - 0.33593750000000000000f, 0.40625000000000006000f, - -0.39062500000000000000f, -0.35546875000000000000f, - -0.29296875000000000000f, -0.21484375000000000000f, - -0.15625000000000000000f, -0.10156250000000001000f, - 0.07812500000000000000f, 0.15625000000000000000f, - 0.22656250000000000000f, 0.39453125000000000000f, - -0.39062500000000000000f, -0.36718750000000000000f, - -0.28515625000000000000f, -0.23437499999999997000f, - -0.19140625000000000000f, -0.00390625000000000000f, - 0.07031250000000000000f, 0.14062500000000000000f, - 0.32421875000000006000f, 0.37500000000000000000f, - -0.41406250000000000000f, -0.37890625000000000000f, - -0.26953125000000000000f, -0.18359375000000000000f, - -0.09765625000000000000f, 0.04296874999999999300f, - 0.12109375000000000000f, 0.17968750000000000000f, - 0.25390625000000000000f, 0.34765625000000000000f, - -0.36328124999999994000f, -0.33984375000000000000f, - -0.26953125000000000000f, -0.17968750000000000000f, - -0.12500000000000000000f, -0.07031250000000000000f, - -0.00781250000000000000f, 0.05468750000000000000f, - 0.28906250000000000000f, 0.40234375000000000000f, - -0.36328124999999994000f, -0.33984375000000000000f, - -0.25390625000000000000f, -0.11328125000000000000f, - 0.02343750000000000000f, 0.07031250000000000000f, - 0.14843750000000000000f, 0.22265625000000000000f, - 0.28906250000000000000f, 0.39843750000000000000f, - -0.35937500000000000000f, -0.33203125000000000000f, - -0.25781250000000000000f, -0.21093750000000000000f, - -0.16796875000000000000f, -0.01562500000000000000f, - 0.12500000000000000000f, 0.17578125000000000000f, - 0.34374999999999994000f, 0.40625000000000006000f, - -0.42187500000000000000f, -0.38671875000000006000f, - -0.33203125000000000000f, -0.19531250000000000000f, - -0.13671875000000000000f, -0.07421875000000000000f, - 0.11328125000000000000f, 0.16015625000000000000f, - 0.32812500000000000000f, 0.39843750000000000000f, - -0.37890625000000000000f, -0.35156250000000000000f, - -0.28515625000000000000f, -0.22265625000000000000f, - -0.18750000000000000000f, -0.09375000000000000000f, - 0.08203125000000000000f, 0.13671875000000000000f, - 0.30859375000000000000f, 0.36718750000000000000f, - -0.32812500000000000000f, -0.29687500000000000000f, - -0.22265625000000000000f, -0.15625000000000000000f, - -0.11328125000000000000f, -0.04296874999999999300f, - 0.16015625000000000000f, 0.23437499999999997000f, - 0.31250000000000000000f, 0.40625000000000006000f, - -0.39062500000000000000f, -0.36718750000000000000f, - -0.29296875000000000000f, -0.25000000000000000000f, - -0.19921875000000000000f, 0.00781250000000000000f, - 0.07812500000000000000f, 0.17578125000000000000f, - 0.26562500000000000000f, 0.33203125000000000000f, - -0.39062500000000000000f, -0.36718750000000000000f, - -0.24218750000000000000f, -0.16015625000000000000f, - -0.11718749999999999000f, 0.05078125000000000700f, - 0.12109375000000000000f, 0.20312500000000003000f, - 0.33203125000000000000f, 0.39453125000000000000f, - -0.37109375000000000000f, -0.33593750000000000000f, - -0.27343750000000000000f, -0.20312500000000003000f, - -0.14843750000000000000f, -0.08984375000000000000f, - 0.07031250000000000000f, 0.25000000000000000000f, - 0.32421875000000006000f, 0.39453125000000000000f, - -0.44531250000000000000f, -0.42187500000000000000f, - -0.36718750000000000000f, -0.26953125000000000000f, - -0.12109375000000000000f, -0.01953125000000000000f, - 0.09375000000000000000f, 0.17968750000000000000f, - 0.28125000000000000000f, 0.38671875000000006000f, - -0.39062500000000000000f, -0.37109375000000000000f, - -0.21093750000000000000f, -0.14843750000000000000f, - -0.10156250000000001000f, -0.03906250000000000000f, - 0.01171875000000000000f, 0.19921875000000000000f, - 0.29296875000000000000f, 0.34765625000000000000f, - -0.40625000000000006000f, -0.38281250000000000000f, - -0.28515625000000000000f, -0.12109375000000000000f, - 0.07031250000000000000f, 0.12109375000000000000f, - 0.17968750000000000000f, 0.25390625000000000000f, - 0.32031250000000000000f, 0.41015625000000000000f, - -0.35156250000000000000f, -0.32812500000000000000f, - -0.24218750000000000000f, -0.19921875000000000000f, - -0.14843750000000000000f, 0.01171875000000000000f, - 0.09765625000000000000f, 0.17187499999999997000f, - 0.28125000000000000000f, 0.33593750000000000000f, - -0.42578124999999994000f, -0.40234375000000000000f, - -0.32421875000000006000f, -0.11328125000000000000f, - 0.00781250000000000000f, 0.04296874999999999300f, - 0.14843750000000000000f, 0.20703125000000000000f, - 0.32812500000000000000f, 0.39453125000000000000f, - -0.33593750000000000000f, -0.29296875000000000000f, - -0.23828125000000000000f, -0.17968750000000000000f, - -0.06640625000000000000f, -0.01562500000000000000f, - 0.07031250000000000000f, 0.20312500000000003000f, - 0.26953125000000000000f, 0.35546875000000000000f, - -0.42578124999999994000f, -0.39062500000000000000f, - -0.32421875000000006000f, -0.21093750000000000000f, - -0.03906250000000000000f, 0.00390625000000000000f, - 0.07421875000000000000f, 0.13671875000000000000f, - 0.31640625000000000000f, 0.39062500000000000000f, - -0.39453125000000000000f, -0.37109375000000000000f, - -0.30468750000000000000f, -0.26562500000000000000f, - -0.22656250000000000000f, -0.06250000000000000000f, - 0.15234375000000000000f, 0.21875000000000000000f, - 0.33203125000000000000f, 0.40234375000000000000f, - -0.33984375000000000000f, -0.31250000000000000000f, - -0.22656250000000000000f, -0.16015625000000000000f, - -0.11328125000000000000f, -0.02734375000000000000f, - 0.05468750000000000000f, 0.11718749999999999000f, - 0.33593750000000000000f, 0.40625000000000006000f, - -0.41015625000000000000f, -0.38671875000000006000f, - -0.23828125000000000000f, -0.02734375000000000000f, - 0.02343750000000000000f, 0.08203125000000000000f, - 0.17187499999999997000f, 0.23828125000000000000f, - 0.33984375000000000000f, 0.39843750000000000000f, - -0.33593750000000000000f, -0.31250000000000000000f, - -0.18750000000000000000f, -0.11718749999999999000f, - -0.07031250000000000000f, 0.01953125000000000000f, - 0.09765625000000000000f, 0.16796875000000000000f, - 0.32031250000000000000f, 0.37890625000000000000f, - -0.38281250000000000000f, -0.35937500000000000000f, - -0.25781250000000000000f, -0.19140625000000000000f, - -0.14062500000000000000f, -0.05078125000000000700f, - 0.00000000000000000000f, 0.13671875000000000000f, - 0.23046875000000000000f, 0.30859375000000000000f, - -0.38281250000000000000f, -0.36328124999999994000f, - -0.25781250000000000000f, -0.20312500000000003000f, - -0.15625000000000000000f, -0.09375000000000000000f, - -0.04687500000000000000f, 0.17968750000000000000f, - 0.31640625000000000000f, 0.38281250000000000000f, - -0.41796875000000000000f, -0.37109375000000000000f, - -0.25000000000000000000f, -0.15234375000000000000f, - -0.05468750000000000000f, 0.05468750000000000000f, - 0.16406250000000000000f, 0.25390625000000000000f, - 0.34374999999999994000f, 0.41406250000000000000f, - -0.40625000000000006000f, -0.37500000000000000000f, - -0.32031250000000000000f, -0.25390625000000000000f, - -0.21093750000000000000f, -0.13671875000000000000f, - 0.08203125000000000000f, 0.19921875000000000000f, - 0.28125000000000000000f, 0.38671875000000006000f, - -0.36718750000000000000f, -0.33984375000000000000f, - -0.28906250000000000000f, -0.23046875000000000000f, - -0.08203125000000000000f, -0.03906250000000000000f, - 0.05468750000000000000f, 0.13671875000000000000f, - 0.22656250000000000000f, 0.37500000000000000000f, - -0.42187500000000000000f, -0.39062500000000000000f, - -0.33593750000000000000f, -0.27734375000000000000f, - -0.23046875000000000000f, -0.06250000000000000000f, - 0.07812500000000000000f, 0.16015625000000000000f, - 0.28906250000000000000f, 0.37890625000000000000f, - -0.40234375000000000000f, -0.37109375000000000000f, - -0.31250000000000000000f, -0.22265625000000000000f, - -0.17578125000000000000f, -0.09375000000000000000f, - -0.02343750000000000000f, 0.07421875000000000000f, - 0.25781250000000000000f, 0.34765625000000000000f, - -0.38671875000000006000f, -0.36328124999999994000f, - -0.28906250000000000000f, -0.25390625000000000000f, - -0.19531250000000000000f, 0.07812500000000000000f, - 0.15625000000000000000f, 0.22265625000000000000f, - 0.33203125000000000000f, 0.38281250000000000000f, - -0.39843750000000000000f, -0.37500000000000000000f, - -0.16015625000000000000f, -0.08203125000000000000f, - -0.04296874999999999300f, 0.03515625000000000000f, - 0.09765625000000000000f, 0.23046875000000000000f, - 0.32421875000000006000f, 0.38281250000000000000f, - -0.36718750000000000000f, -0.33984375000000000000f, - -0.27734375000000000000f, -0.23046875000000000000f, - -0.18359375000000000000f, -0.03125000000000000000f, - 0.19531250000000000000f, 0.26562500000000000000f, - 0.33593750000000000000f, 0.41015625000000000000f, - -0.42187500000000000000f, -0.39453125000000000000f, - -0.32812500000000000000f, -0.23046875000000000000f, - -0.04296874999999999300f, 0.11328125000000000000f, - 0.17187499999999997000f, 0.23828125000000000000f, - 0.32031250000000000000f, 0.38671875000000006000f, - -0.38281250000000000000f, -0.36718750000000000000f, - -0.32031250000000000000f, -0.28515625000000000000f, - -0.10156250000000001000f, 0.02343750000000000000f, - 0.11718749999999999000f, 0.20703125000000000000f, - 0.30859375000000000000f, 0.38281250000000000000f, - -0.33203125000000000000f, -0.27734375000000000000f, - -0.14453125000000000000f, -0.04687500000000000000f, - 0.01171875000000000000f, 0.08593749999999998600f, - 0.16015625000000000000f, 0.23828125000000000000f, - 0.33203125000000000000f, 0.39062500000000000000f, - -0.33203125000000000000f, -0.30859375000000000000f, - -0.25781250000000000000f, -0.21484375000000000000f, - -0.07421875000000000000f, 0.06640625000000000000f, - 0.12890625000000000000f, 0.21875000000000000000f, - 0.32421875000000006000f, 0.37890625000000000000f, - -0.28125000000000000000f, -0.25781250000000000000f, - -0.23437499999999997000f, -0.22265625000000000000f, - -0.19531250000000000000f, 0.01562500000000000000f, - 0.10156250000000001000f, 0.20312500000000003000f, - 0.30859375000000000000f, 0.40234375000000000000f, - -0.37109375000000000000f, -0.28906250000000000000f, - -0.12109375000000000000f, -0.07031250000000000000f, - -0.04296874999999999300f, -0.02343750000000000000f, - 0.03515625000000000000f, 0.20312500000000003000f, - 0.30078125000000000000f, 0.39062500000000000000f, - -0.30468750000000000000f, -0.29296875000000000000f, - -0.26562500000000000000f, -0.19921875000000000000f, - -0.16796875000000000000f, -0.14843750000000000000f, - 0.04687500000000000000f, 0.17578125000000000000f, - 0.28906250000000000000f, 0.39062500000000000000f, - -0.38671875000000006000f, -0.26562500000000000000f, - -0.15625000000000000000f, -0.12890625000000000000f, - -0.09375000000000000000f, -0.06250000000000000000f, - 0.08984375000000000000f, 0.22656250000000000000f, - 0.30859375000000000000f, 0.37890625000000000000f, - -0.38671875000000006000f, -0.18750000000000000000f, - -0.16406250000000000000f, -0.15625000000000000000f, - -0.14062500000000000000f, -0.07421875000000000000f, - 0.10156250000000001000f, 0.20312500000000003000f, - 0.31250000000000000000f, 0.41015625000000000000f, - -0.28515625000000000000f, -0.26953125000000000000f, - -0.24218750000000000000f, -0.16796875000000000000f, - -0.12109375000000000000f, -0.09765625000000000000f, - 0.08203125000000000000f, 0.18750000000000000000f, - 0.29687500000000000000f, 0.39453125000000000000f, - 0.03125000000000000000f, 0.02734375000000000000f, - 0.01953125000000000000f, 0.00781250000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, -0.01562500000000000000f, - -0.03125000000000000000f, -0.04296874999999999300f, - -0.00781250000000000000f, -0.01562500000000000000f, - 0.01171875000000000000f, 0.00781250000000000000f, - -0.00781250000000000000f, -0.02343750000000000000f, - -0.01562500000000000000f, -0.02734375000000000000f, - -0.00781250000000000000f, -0.00781250000000000000f, - -0.02343750000000000000f, 0.01953125000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00781250000000000000f, 0.03125000000000000000f, - 0.01953125000000000000f, 0.01171875000000000000f, - 0.00781250000000000000f, -0.00781250000000000000f, - 0.03125000000000000000f, 0.01953125000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, -0.01562500000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - -0.03515625000000000000f, -0.05078125000000000700f, - -0.00390625000000000000f, -0.00390625000000000000f, - -0.01562500000000000000f, -0.00390625000000000000f, - 0.03515625000000000000f, 0.01562500000000000000f, - 0.00000000000000000000f, -0.01171875000000000000f, - -0.03515625000000000000f, 0.01562500000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.00781250000000000000f, 0.00390625000000000000f, - -0.00781250000000000000f, -0.01562500000000000000f, - 0.04296874999999999300f, 0.02734375000000000000f, - 0.01562500000000000000f, 0.01171875000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.01171875000000000000f, -0.04296874999999999300f, - 0.01562500000000000000f, 0.01171875000000000000f, - 0.00390625000000000000f, 0.01953125000000000000f, - 0.00390625000000000000f, -0.00781250000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.04687500000000000000f, 0.03125000000000000000f, - 0.01953125000000000000f, 0.01171875000000000000f, - -0.00390625000000000000f, 0.00781250000000000000f, - -0.00390625000000000000f, -0.01562500000000000000f, - -0.01953125000000000000f, -0.02343750000000000000f, - -0.05078125000000000700f, 0.01953125000000000000f, - 0.01171875000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - -0.01953125000000000000f, -0.01953125000000000000f, - -0.03906250000000000000f, 0.03125000000000000000f, - 0.00781250000000000000f, 0.00000000000000000000f, - 0.01171875000000000000f, -0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.01171875000000000000f, - -0.01953125000000000000f, -0.00781250000000000000f, - -0.01953125000000000000f, -0.03125000000000000000f, - 0.03906250000000000000f, 0.01953125000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, -0.00781250000000000000f, - -0.01171875000000000000f, -0.01953125000000000000f, - -0.03515625000000000000f, 0.04687500000000000000f, - 0.02343750000000000000f, 0.00781250000000000000f, - 0.01171875000000000000f, 0.00781250000000000000f, - 0.01953125000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, 0.04687500000000000000f, - 0.03125000000000000000f, 0.01562500000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.01953125000000000000f, -0.02734375000000000000f, - 0.02343750000000000000f, 0.01171875000000000000f, - -0.00781250000000000000f, -0.01171875000000000000f, - 0.01171875000000000000f, 0.00390625000000000000f, - -0.00781250000000000000f, 0.01562500000000000000f, - -0.03125000000000000000f, 0.02734375000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - 0.00781250000000000000f, -0.00390625000000000000f, - -0.00781250000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, 0.00000000000000000000f, - -0.01171875000000000000f, -0.01171875000000000000f, - -0.01171875000000000000f, 0.01953125000000000000f, - 0.01562500000000000000f, 0.00781250000000000000f, - 0.00781250000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, -0.01562500000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, -0.01171875000000000000f, - -0.01171875000000000000f, -0.02734375000000000000f, - 0.02343750000000000000f, 0.00781250000000000000f, - 0.01171875000000000000f, 0.00781250000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00781250000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.02343750000000000000f, - 0.01171875000000000000f, 0.02343750000000000000f, - 0.02343750000000000000f, 0.01171875000000000000f, - 0.01562500000000000000f, 0.01953125000000000000f, - 0.00781250000000000000f, 0.00781250000000000000f, - 0.01953125000000000000f, 0.00781250000000000000f, - 0.00390625000000000000f, 0.00781250000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.01171875000000000000f, 0.01171875000000000000f, - 0.00781250000000000000f, -0.00781250000000000000f, - -0.00781250000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, -0.01562500000000000000f, - -0.01562500000000000000f, -0.02734375000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.01562500000000000000f, 0.00781250000000000000f, - 0.00000000000000000000f, -0.00781250000000000000f, - -0.00781250000000000000f, -0.02734375000000000000f, - -0.00390625000000000000f, 0.02343750000000000000f, - -0.01562500000000000000f, -0.01562500000000000000f, - -0.01953125000000000000f, -0.01953125000000000000f, - -0.01562500000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - -0.00781250000000000000f, 0.00781250000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.01171875000000000000f, - -0.03906250000000000000f, 0.01171875000000000000f, - 0.00000000000000000000f, -0.01171875000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00781250000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - -0.02734375000000000000f, 0.01171875000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00781250000000000000f, - 0.01171875000000000000f, 0.00781250000000000000f, - -0.00781250000000000000f, -0.02343750000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - -0.00781250000000000000f, -0.00390625000000000000f, - -0.01562500000000000000f, -0.01562500000000000000f, - -0.00390625000000000000f, -0.01562500000000000000f, - 0.01171875000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.01171875000000000000f, -0.01953125000000000000f, - 0.01953125000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - 0.00781250000000000000f, 0.00781250000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.01953125000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - 0.00781250000000000000f, -0.00390625000000000000f, - 0.01562500000000000000f, 0.00390625000000000000f, - -0.00781250000000000000f, -0.00781250000000000000f, - -0.01171875000000000000f, 0.00781250000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, 0.01953125000000000000f, - 0.00390625000000000000f, 0.00781250000000000000f, - -0.00781250000000000000f, -0.00781250000000000000f, - 0.02734375000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - 0.01171875000000000000f, 0.01562500000000000000f, - 0.00781250000000000000f, -0.00390625000000000000f, - -0.00781250000000000000f, 0.00000000000000000000f, - -0.01171875000000000000f, 0.00781250000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.00781250000000000000f, 0.00000000000000000000f, - 0.01953125000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00390625000000000000f, - -0.00781250000000000000f, -0.00781250000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.01171875000000000000f, - 0.00000000000000000000f, -0.01171875000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - 0.01171875000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.01171875000000000000f, - 0.00390625000000000000f, 0.00781250000000000000f, - 0.00781250000000000000f, 0.00781250000000000000f, - 0.00000000000000000000f, 0.00781250000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, -0.01171875000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00781250000000000000f, 0.00000000000000000000f, - -0.01171875000000000000f, -0.01171875000000000000f, - -0.00781250000000000000f, 0.00781250000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.01953125000000000000f, 0.01171875000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.01953125000000000000f, - 0.00000000000000000000f, 0.00781250000000000000f, - -0.00781250000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - -0.00781250000000000000f, -0.00781250000000000000f, - -0.00781250000000000000f, -0.00390625000000000000f, - 0.00390625000000000000f, -0.01171875000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, -0.01171875000000000000f, - -0.01171875000000000000f, 0.01171875000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - 0.00781250000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.01171875000000000000f, - 0.00781250000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00781250000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - -0.00781250000000000000f, -0.00390625000000000000f, - -0.00781250000000000000f, 0.00781250000000000000f, - -0.00781250000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, -0.00781250000000000000f, - 0.00390625000000000000f, 0.01171875000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - -0.00781250000000000000f, -0.00390625000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, -0.01171875000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00781250000000000000f, -0.01171875000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00781250000000000000f, - -0.00781250000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.01171875000000000000f, 0.00390625000000000000f, - -0.00781250000000000000f, -0.00781250000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.01171875000000000000f, - -0.01171875000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00390625000000000000f, - 0.01171875000000000000f, -0.00781250000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.00781250000000000000f, 0.00390625000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - 0.00781250000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.01953125000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, -0.01562500000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, 0.01953125000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.01171875000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00781250000000000000f, - 0.00390625000000000000f, -0.00781250000000000000f, - 0.00781250000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.01171875000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.01171875000000000000f, -0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.01171875000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00781250000000000000f, - -0.00781250000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, 0.00781250000000000000f, - -0.00781250000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00781250000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00781250000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - 0.00781250000000000000f, -0.00781250000000000000f, - 0.00781250000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f -}; - -const SKP_Silk_NLSF_CBS_FLP SKP_Silk_NLSF_CB0_10_Stage_info_FLP[ NLSF_MSVQ_CB0_10_STAGES ] = -{ - { 64, &SKP_Silk_NLSF_MSVQ_CB0_10[ 10 * 0 ], &SKP_Silk_NLSF_MSVQ_CB0_10_rates[ 0 ] }, - { 16, &SKP_Silk_NLSF_MSVQ_CB0_10[ 10 * 64 ], &SKP_Silk_NLSF_MSVQ_CB0_10_rates[ 64 ] }, - { 8, &SKP_Silk_NLSF_MSVQ_CB0_10[ 10 * 80 ], &SKP_Silk_NLSF_MSVQ_CB0_10_rates[ 80 ] }, - { 8, &SKP_Silk_NLSF_MSVQ_CB0_10[ 10 * 88 ], &SKP_Silk_NLSF_MSVQ_CB0_10_rates[ 88 ] }, - { 8, &SKP_Silk_NLSF_MSVQ_CB0_10[ 10 * 96 ], &SKP_Silk_NLSF_MSVQ_CB0_10_rates[ 96 ] }, - { 8, &SKP_Silk_NLSF_MSVQ_CB0_10[ 10 * 104 ], &SKP_Silk_NLSF_MSVQ_CB0_10_rates[ 104 ] }, - { 16, &SKP_Silk_NLSF_MSVQ_CB0_10[ 10 * 112 ], &SKP_Silk_NLSF_MSVQ_CB0_10_rates[ 112 ] } -}; - -const SKP_Silk_NLSF_CB_FLP SKP_Silk_NLSF_CB0_10_FLP = -{ - NLSF_MSVQ_CB0_10_STAGES, - SKP_Silk_NLSF_CB0_10_Stage_info_FLP, - SKP_Silk_NLSF_MSVQ_CB0_10_ndelta_min, - SKP_Silk_NLSF_MSVQ_CB0_10_CDF, - SKP_Silk_NLSF_MSVQ_CB0_10_CDF_start_ptr, - SKP_Silk_NLSF_MSVQ_CB0_10_CDF_middle_idx -}; - diff --git a/src_FLP/SKP_Silk_tables_NLSF_CB0_16_FLP.c b/src_FLP/SKP_Silk_tables_NLSF_CB0_16_FLP.c deleted file mode 100644 index f7a7c27f0dcda311f78c0d98a363fc135c49c381..0000000000000000000000000000000000000000 --- a/src_FLP/SKP_Silk_tables_NLSF_CB0_16_FLP.c +++ /dev/null @@ -1,1381 +0,0 @@ -/*********************************************************************** -Copyright (c) 2006-2010, Skype Limited. All rights reserved. -Redistribution and use in source and binary forms, with or without -modification, (subject to the limitations in the disclaimer below) -are permitted provided that the following conditions are met: -- Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. -- Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -- Neither the name of Skype Limited, nor the names of specific -contributors, may be used to endorse or promote products derived from -this software without specific prior written permission. -NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED -BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, -BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -***********************************************************************/ - -/**********************************************/ -/* This file has been automatically generated */ -/* */ -/* ROM usage: 10.40 kB */ -/**********************************************/ - -#include "SKP_Silk_tables_FLP.h" -#include "SKP_Silk_tables_NLSF_CB0_16.h" - -const SKP_float SKP_Silk_NLSF_MSVQ_CB0_16_rates[ NLSF_MSVQ_CB0_16_VECTORS ] = -{ - 4.62500000000000000000f, 4.75000000000000000000f, - 4.81250000000000000000f, 5.06250000000000000000f, - 5.25000000000000000000f, 5.25000000000000000000f, - 5.31250000000000000000f, 5.50000000000000000000f, - 5.56250000000000000000f, 5.56250000000000000000f, - 5.56250000000000000000f, 5.62500000000000000000f, - 5.75000000000000000000f, 5.81250000000000000000f, - 5.81250000000000000000f, 5.81250000000000000000f, - 5.87500000000000000000f, 5.87500000000000000000f, - 5.87500000000000000000f, 5.87500000000000000000f, - 5.93750000000000000000f, 5.93750000000000000000f, - 5.93750000000000000000f, 6.00000000000000000000f, - 6.00000000000000000000f, 6.00000000000000000000f, - 6.00000000000000000000f, 6.06250000000000000000f, - 6.06250000000000000000f, 6.12500000000000000000f, - 6.12500000000000000000f, 6.12500000000000000000f, - 6.12500000000000000000f, 6.18750000000000000000f, - 6.18750000000000000000f, 6.18750000000000000000f, - 6.25000000000000000000f, 6.25000000000000000000f, - 6.25000000000000000000f, 6.25000000000000000000f, - 6.25000000000000000000f, 6.31250000000000000000f, - 6.31250000000000000000f, 6.31250000000000000000f, - 6.37500000000000000000f, 6.37500000000000000000f, - 6.43750000000000000000f, 6.50000000000000000000f, - 6.50000000000000000000f, 6.56250000000000000000f, - 6.62500000000000000000f, 6.68750000000000000000f, - 6.68750000000000000000f, 6.68750000000000000000f, - 6.68750000000000000000f, 6.75000000000000000000f, - 6.75000000000000000000f, 6.81250000000000000000f, - 6.81250000000000000000f, 6.93750000000000000000f, - 6.93750000000000000000f, 7.12500000000000000000f, - 7.37500000000000000000f, 7.75000000000000000000f, - 3.56250000000000000000f, 3.62500000000000000000f, - 3.62500000000000000000f, 3.75000000000000000000f, - 3.81250000000000000000f, 3.93750000000000000000f, - 4.06250000000000000000f, 4.06250000000000000000f, - 4.12500000000000000000f, 4.12500000000000000000f, - 4.18750000000000000000f, 4.18750000000000000000f, - 4.25000000000000000000f, 4.31250000000000000000f, - 4.37500000000000000000f, 4.37500000000000000000f, - 2.62500000000000000000f, 2.93750000000000000000f, - 2.93750000000000000000f, 3.00000000000000000000f, - 3.00000000000000000000f, 3.18750000000000000000f, - 3.18750000000000000000f, 3.25000000000000000000f, - 2.87500000000000000000f, 2.87500000000000000000f, - 2.93750000000000000000f, 2.93750000000000000000f, - 3.00000000000000000000f, 3.00000000000000000000f, - 3.06250000000000000000f, 3.31250000000000000000f, - 2.75000000000000000000f, 2.75000000000000000000f, - 3.00000000000000000000f, 3.00000000000000000000f, - 3.06250000000000000000f, 3.06250000000000000000f, - 3.18750000000000000000f, 3.25000000000000000000f, - 2.81250000000000000000f, 2.81250000000000000000f, - 2.87500000000000000000f, 2.87500000000000000000f, - 3.06250000000000000000f, 3.06250000000000000000f, - 3.25000000000000000000f, 3.31250000000000000000f, - 2.81250000000000000000f, 2.93750000000000000000f, - 2.93750000000000000000f, 2.93750000000000000000f, - 3.00000000000000000000f, 3.06250000000000000000f, - 3.12500000000000000000f, 3.25000000000000000000f, - 2.87500000000000000000f, 2.87500000000000000000f, - 2.87500000000000000000f, 2.93750000000000000000f, - 3.00000000000000000000f, 3.12500000000000000000f, - 3.18750000000000000000f, 3.18750000000000000000f, - 2.87500000000000000000f, 2.93750000000000000000f, - 3.00000000000000000000f, 3.00000000000000000000f, - 3.00000000000000000000f, 3.00000000000000000000f, - 3.00000000000000000000f, 3.18750000000000000000f, - 3.75000000000000000000f, 3.75000000000000000000f, - 3.81250000000000000000f, 3.87500000000000000000f, - 3.93750000000000000000f, 3.93750000000000000000f, - 3.93750000000000000000f, 4.00000000000000000000f, - 4.00000000000000000000f, 4.06250000000000000000f, - 4.06250000000000000000f, 4.12500000000000000000f, - 4.12500000000000000000f, 4.12500000000000000000f, - 4.31250000000000000000f, 4.37500000000000000000f -}; - -const SKP_float SKP_Silk_NLSF_MSVQ_CB0_16_ndelta_min[ 16 + 1 ] = -{ - 0.00720214843750000000f, - 0.00012207031250000000f, - 0.00228881835937500000f, - 0.00009155273437500000f, - 0.00009155273437500000f, - 0.00015258789062500000f, - 0.00350952148437500040f, - 0.00289916992187500000f, - 0.00344848632812500000f, - 0.00421142578125000000f, - 0.00537109374999999910f, - 0.00515747070312500000f, - 0.00759887695312500000f, - 0.00781250000000000000f, - 0.00827026367187500000f, - 0.00802612304687500000f, - 0.01922607421875000000f -}; - -const SKP_float SKP_Silk_NLSF_MSVQ_CB0_16[ 16 * NLSF_MSVQ_CB0_16_VECTORS ] = -{ - -0.45703125000000000000f, -0.41406250000000000000f, - -0.36718750000000000000f, -0.31640625000000000000f, - -0.25390625000000000000f, -0.20312500000000003000f, - -0.14453125000000000000f, -0.08593749999999998600f, - -0.01953125000000000000f, 0.04296874999999999300f, - 0.10546875000000000000f, 0.16406250000000000000f, - 0.23046875000000000000f, 0.29296875000000000000f, - 0.35546875000000000000f, 0.41406250000000000000f, - -0.46874999999999994000f, -0.45312500000000000000f, - -0.39062500000000000000f, -0.32812500000000000000f, - -0.26171875000000000000f, -0.19140625000000000000f, - -0.12500000000000000000f, -0.06250000000000000000f, - 0.00000000000000000000f, 0.05859374999999999300f, - 0.11718749999999999000f, 0.17968750000000000000f, - 0.24218750000000000000f, 0.30078125000000000000f, - 0.36718750000000000000f, 0.42578124999999994000f, - -0.47265625000000000000f, -0.45312500000000000000f, - -0.39843750000000000000f, -0.33203125000000000000f, - -0.27734375000000000000f, -0.22656250000000000000f, - -0.15234375000000000000f, -0.09375000000000000000f, - -0.01953125000000000000f, 0.03906250000000000000f, - 0.11328125000000000000f, 0.17578125000000000000f, - 0.23828125000000000000f, 0.30078125000000000000f, - 0.35937500000000000000f, 0.41796875000000000000f, - -0.46874999999999994000f, -0.45312500000000000000f, - -0.36718750000000000000f, -0.32421875000000006000f, - -0.26953125000000000000f, -0.22265625000000000000f, - -0.17968750000000000000f, -0.09765625000000000000f, - -0.02734375000000000000f, 0.03906250000000000000f, - 0.10546875000000000000f, 0.16406250000000000000f, - 0.22656250000000000000f, 0.29296875000000000000f, - 0.35546875000000000000f, 0.41796875000000000000f, - -0.44531250000000000000f, -0.42578124999999994000f, - -0.36718750000000000000f, -0.30859375000000000000f, - -0.25781250000000000000f, -0.20312500000000003000f, - -0.13671875000000000000f, -0.07031250000000000000f, - -0.01562500000000000000f, 0.03515625000000000000f, - 0.10156250000000001000f, 0.15625000000000000000f, - 0.20703125000000000000f, 0.25390625000000000000f, - 0.31640625000000000000f, 0.35937500000000000000f, - -0.44531250000000000000f, -0.42187500000000000000f, - -0.37500000000000000000f, -0.28906250000000000000f, - -0.24218750000000000000f, -0.19531250000000000000f, - -0.13281250000000000000f, -0.07031250000000000000f, - 0.00000000000000000000f, 0.07031250000000000000f, - 0.12890625000000000000f, 0.18359375000000000000f, - 0.23828125000000000000f, 0.30078125000000000000f, - 0.36718750000000000000f, 0.41796875000000000000f, - -0.45312500000000000000f, -0.42578124999999994000f, - -0.38671875000000006000f, -0.32812500000000000000f, - -0.27734375000000000000f, -0.23437499999999997000f, - -0.17187499999999997000f, -0.11718749999999999000f, - -0.03515625000000000000f, 0.01953125000000000000f, - 0.07031250000000000000f, 0.12890625000000000000f, - 0.20312500000000003000f, 0.27343750000000000000f, - 0.34374999999999994000f, 0.41406250000000000000f, - -0.46484375000000000000f, -0.44531250000000000000f, - -0.38671875000000006000f, -0.34765625000000000000f, - -0.27734375000000000000f, -0.23437499999999997000f, - -0.19531250000000000000f, -0.14453125000000000000f, - -0.01562500000000000000f, 0.04687500000000000000f, - 0.10937500000000000000f, 0.17968750000000000000f, - 0.23437499999999997000f, 0.30078125000000000000f, - 0.35546875000000000000f, 0.41406250000000000000f, - -0.44140625000000000000f, -0.42578124999999994000f, - -0.33984375000000000000f, -0.30468750000000000000f, - -0.26171875000000000000f, -0.20312500000000003000f, - -0.15625000000000000000f, -0.07421875000000000000f, - -0.03125000000000000000f, 0.04687500000000000000f, - 0.11328125000000000000f, 0.16796875000000000000f, - 0.22656250000000000000f, 0.29296875000000000000f, - 0.36718750000000000000f, 0.44140625000000000000f, - -0.46484375000000000000f, -0.44531250000000000000f, - -0.34374999999999994000f, -0.30078125000000000000f, - -0.24609375000000000000f, -0.19140625000000000000f, - -0.14062500000000000000f, -0.08984375000000000000f, - 0.00390625000000000000f, 0.06640625000000000000f, - 0.12890625000000000000f, 0.19921875000000000000f, - 0.26562500000000000000f, 0.31640625000000000000f, - 0.37890625000000000000f, 0.42578124999999994000f, - -0.46484375000000000000f, -0.44531250000000000000f, - -0.39453125000000000000f, -0.34374999999999994000f, - -0.27734375000000000000f, -0.22265625000000000000f, - -0.16406250000000000000f, -0.06250000000000000000f, - -0.00390625000000000000f, 0.04296874999999999300f, - 0.09375000000000000000f, 0.14843750000000000000f, - 0.21093750000000000000f, 0.26953125000000000000f, - 0.35156250000000000000f, 0.42968750000000000000f, - -0.45312500000000000000f, -0.40234375000000000000f, - -0.33593750000000000000f, -0.28515625000000000000f, - -0.22265625000000000000f, -0.16796875000000000000f, - -0.10546875000000000000f, -0.05078125000000000700f, - 0.00781250000000000000f, 0.06250000000000000000f, - 0.12109375000000000000f, 0.17578125000000000000f, - 0.23828125000000000000f, 0.29687500000000000000f, - 0.35937500000000000000f, 0.42187500000000000000f, - -0.45312500000000000000f, -0.43750000000000000000f, - -0.39062500000000000000f, -0.30078125000000000000f, - -0.26562500000000000000f, -0.19921875000000000000f, - -0.16015625000000000000f, -0.08593749999999998600f, - -0.04296874999999999300f, 0.00000000000000000000f, - 0.06250000000000000000f, 0.14453125000000000000f, - 0.21875000000000000000f, 0.28125000000000000000f, - 0.34374999999999994000f, 0.40625000000000006000f, - -0.46093750000000000000f, -0.44140625000000000000f, - -0.37500000000000000000f, -0.32812500000000000000f, - -0.26953125000000000000f, -0.21484375000000000000f, - -0.16406250000000000000f, -0.11718749999999999000f, - -0.04687500000000000000f, 0.06640625000000000000f, - 0.12890625000000000000f, 0.19921875000000000000f, - 0.27343750000000000000f, 0.32421875000000006000f, - 0.38281250000000000000f, 0.42968750000000000000f, - -0.42578124999999994000f, -0.40625000000000006000f, - -0.35937500000000000000f, -0.31250000000000000000f, - -0.26171875000000000000f, -0.21875000000000000000f, - -0.16015625000000000000f, -0.10937500000000000000f, - -0.05078125000000000700f, 0.00000000000000000000f, - 0.05468750000000000000f, 0.10937500000000000000f, - 0.16796875000000000000f, 0.23437499999999997000f, - 0.33203125000000000000f, 0.40625000000000006000f, - -0.43750000000000000000f, -0.41796875000000000000f, - -0.37109375000000000000f, -0.32031250000000000000f, - -0.27734375000000000000f, -0.22265625000000000000f, - -0.17578125000000000000f, -0.10156250000000001000f, - -0.04296874999999999300f, 0.00390625000000000000f, - 0.10546875000000000000f, 0.16015625000000000000f, - 0.20703125000000000000f, 0.25781250000000000000f, - 0.32812500000000000000f, 0.40625000000000006000f, - -0.44921875000000006000f, -0.43359375000000000000f, - -0.38671875000000006000f, -0.35937500000000000000f, - -0.24609375000000000000f, -0.20312500000000003000f, - -0.15234375000000000000f, -0.09375000000000000000f, - -0.05078125000000000700f, 0.01953125000000000000f, - 0.10546875000000000000f, 0.16406250000000000000f, - 0.23437499999999997000f, 0.30468750000000000000f, - 0.36328124999999994000f, 0.42578124999999994000f, - -0.43750000000000000000f, -0.42187500000000000000f, - -0.37500000000000000000f, -0.34765625000000000000f, - -0.30078125000000000000f, -0.19921875000000000000f, - -0.16015625000000000000f, -0.08593749999999998600f, - -0.04296874999999999300f, 0.05078125000000000700f, - 0.12109375000000000000f, 0.17187499999999997000f, - 0.22265625000000000000f, 0.28125000000000000000f, - 0.33984375000000000000f, 0.41015625000000000000f, - -0.43359375000000000000f, -0.41796875000000000000f, - -0.37109375000000000000f, -0.33984375000000000000f, - -0.30078125000000000000f, -0.19140625000000000000f, - -0.14843750000000000000f, -0.09375000000000000000f, - -0.03906250000000000000f, 0.00000000000000000000f, - 0.05859374999999999300f, 0.11718749999999999000f, - 0.21093750000000000000f, 0.29296875000000000000f, - 0.36328124999999994000f, 0.41796875000000000000f, - -0.41796875000000000000f, -0.40234375000000000000f, - -0.36328124999999994000f, -0.28906250000000000000f, - -0.20312500000000003000f, -0.17187499999999997000f, - -0.12109375000000000000f, -0.06250000000000000000f, - -0.01171875000000000000f, 0.03906250000000000000f, - 0.12890625000000000000f, 0.17578125000000000000f, - 0.22656250000000000000f, 0.27734375000000000000f, - 0.33203125000000000000f, 0.38281250000000000000f, - -0.44921875000000006000f, -0.43359375000000000000f, - -0.38281250000000000000f, -0.28125000000000000000f, - -0.23437499999999997000f, -0.19140625000000000000f, - -0.13671875000000000000f, -0.09375000000000000000f, - 0.00390625000000000000f, 0.04296874999999999300f, - 0.09765625000000000000f, 0.14843750000000000000f, - 0.21875000000000000000f, 0.31640625000000000000f, - 0.38281250000000000000f, 0.43750000000000000000f, - -0.45312500000000000000f, -0.43750000000000000000f, - -0.39843750000000000000f, -0.27343750000000000000f, - -0.23046875000000000000f, -0.19140625000000000000f, - -0.14062500000000000000f, -0.09765625000000000000f, - -0.02734375000000000000f, 0.01953125000000000000f, - 0.06640625000000000000f, 0.11718749999999999000f, - 0.18750000000000000000f, 0.25781250000000000000f, - 0.33984375000000000000f, 0.40234375000000000000f, - -0.44140625000000000000f, -0.42578124999999994000f, - -0.36718750000000000000f, -0.33593750000000000000f, - -0.29296875000000000000f, -0.25000000000000000000f, - -0.20312500000000003000f, -0.09375000000000000000f, - -0.05468750000000000000f, 0.02343750000000000000f, - 0.08984375000000000000f, 0.16796875000000000000f, - 0.23828125000000000000f, 0.30078125000000000000f, - 0.35937500000000000000f, 0.42187500000000000000f, - -0.46093750000000000000f, -0.43750000000000000000f, - -0.39062500000000000000f, -0.35156250000000000000f, - -0.25390625000000000000f, -0.20703125000000000000f, - -0.15234375000000000000f, -0.08593749999999998600f, - 0.02343750000000000000f, 0.07031250000000000000f, - 0.12500000000000000000f, 0.19140625000000000000f, - 0.26171875000000000000f, 0.31640625000000000000f, - 0.37890625000000000000f, 0.42578124999999994000f, - -0.45312500000000000000f, -0.42578124999999994000f, - -0.38671875000000006000f, -0.31250000000000000000f, - -0.26953125000000000000f, -0.21484375000000000000f, - -0.16015625000000000000f, -0.10546875000000000000f, - -0.04296874999999999300f, 0.01171875000000000000f, - 0.08984375000000000000f, 0.15625000000000000000f, - 0.23828125000000000000f, 0.31250000000000000000f, - 0.39453125000000000000f, 0.44140625000000000000f, - -0.42968750000000000000f, -0.41406250000000000000f, - -0.35937500000000000000f, -0.32812500000000000000f, - -0.28515625000000000000f, -0.16406250000000000000f, - -0.12109375000000000000f, -0.06640625000000000000f, - -0.00390625000000000000f, 0.03906250000000000000f, - 0.10156250000000001000f, 0.14453125000000000000f, - 0.19921875000000000000f, 0.29687500000000000000f, - 0.38671875000000006000f, 0.44140625000000000000f, - -0.45312500000000000000f, -0.42968750000000000000f, - -0.36328124999999994000f, -0.29296875000000000000f, - -0.22265625000000000000f, -0.16015625000000000000f, - -0.08203125000000000000f, -0.02343750000000000000f, - 0.03906250000000000000f, 0.09765625000000000000f, - 0.15625000000000000000f, 0.21093750000000000000f, - 0.26562500000000000000f, 0.32031250000000000000f, - 0.37500000000000000000f, 0.42968750000000000000f, - -0.45312500000000000000f, -0.43359375000000000000f, - -0.39062500000000000000f, -0.35937500000000000000f, - -0.31640625000000000000f, -0.17968750000000000000f, - -0.12500000000000000000f, -0.07421875000000000000f, - -0.01953125000000000000f, 0.02734375000000000000f, - 0.09765625000000000000f, 0.16406250000000000000f, - 0.22656250000000000000f, 0.28906250000000000000f, - 0.35937500000000000000f, 0.41796875000000000000f, - -0.43750000000000000000f, -0.42578124999999994000f, - -0.33593750000000000000f, -0.30468750000000000000f, - -0.26562500000000000000f, -0.21875000000000000000f, - -0.17578125000000000000f, -0.08593749999999998600f, - -0.05078125000000000700f, -0.00390625000000000000f, - 0.05078125000000000700f, 0.12500000000000000000f, - 0.22656250000000000000f, 0.30468750000000000000f, - 0.35546875000000000000f, 0.41796875000000000000f, - -0.42187500000000000000f, -0.40625000000000006000f, - -0.34765625000000000000f, -0.29687500000000000000f, - -0.25781250000000000000f, -0.20312500000000003000f, - -0.14843750000000000000f, -0.10156250000000001000f, - -0.02734375000000000000f, 0.01562500000000000000f, - 0.07031250000000000000f, 0.11718749999999999000f, - 0.16796875000000000000f, 0.28906250000000000000f, - 0.38281250000000000000f, 0.43750000000000000000f, - -0.44531250000000000000f, -0.42968750000000000000f, - -0.32031250000000000000f, -0.28125000000000000000f, - -0.23828125000000000000f, -0.19531250000000000000f, - -0.14453125000000000000f, -0.07812500000000000000f, - -0.04296874999999999300f, 0.00390625000000000000f, - 0.06640625000000000000f, 0.17968750000000000000f, - 0.24218750000000000000f, 0.30468750000000000000f, - 0.36328124999999994000f, 0.43750000000000000000f, - -0.43750000000000000000f, -0.42187500000000000000f, - -0.38671875000000006000f, -0.30078125000000000000f, - -0.25781250000000000000f, -0.22656250000000000000f, - -0.12890625000000000000f, -0.08593749999999998600f, - -0.04296874999999999300f, 0.05078125000000000700f, - 0.09765625000000000000f, 0.13671875000000000000f, - 0.18359375000000000000f, 0.25000000000000000000f, - 0.33984375000000000000f, 0.42187500000000000000f, - -0.44140625000000000000f, -0.42578124999999994000f, - -0.37500000000000000000f, -0.27343750000000000000f, - -0.23046875000000000000f, -0.19140625000000000000f, - -0.13671875000000000000f, -0.09375000000000000000f, - -0.02343750000000000000f, 0.02734375000000000000f, - 0.07421875000000000000f, 0.13281250000000000000f, - 0.25390625000000000000f, 0.30859375000000000000f, - 0.36718750000000000000f, 0.41406250000000000000f, - -0.44921875000000006000f, -0.43359375000000000000f, - -0.37500000000000000000f, -0.33203125000000000000f, - -0.28125000000000000000f, -0.23046875000000000000f, - -0.18359375000000000000f, -0.12890625000000000000f, - -0.07812500000000000000f, -0.03125000000000000000f, - 0.03125000000000000000f, 0.13671875000000000000f, - 0.21875000000000000000f, 0.28906250000000000000f, - 0.35937500000000000000f, 0.42968750000000000000f, - -0.43359375000000000000f, -0.42187500000000000000f, - -0.35937500000000000000f, -0.25390625000000000000f, - -0.21093750000000000000f, -0.17578125000000000000f, - -0.12109375000000000000f, -0.07812500000000000000f, - -0.00781250000000000000f, 0.04296874999999999300f, - 0.08984375000000000000f, 0.13281250000000000000f, - 0.18359375000000000000f, 0.24609375000000000000f, - 0.37500000000000000000f, 0.44531250000000000000f, - -0.44140625000000000000f, -0.42187500000000000000f, - -0.38281250000000000000f, -0.33984375000000000000f, - -0.30859375000000000000f, -0.26562500000000000000f, - -0.12500000000000000000f, -0.07421875000000000000f, - -0.01953125000000000000f, 0.04687500000000000000f, - 0.09765625000000000000f, 0.16015625000000000000f, - 0.23437499999999997000f, 0.30078125000000000000f, - 0.37500000000000000000f, 0.42578124999999994000f, - -0.44921875000000006000f, -0.42578124999999994000f, - -0.37500000000000000000f, -0.32031250000000000000f, - -0.22656250000000000000f, -0.18750000000000000000f, - -0.13281250000000000000f, -0.06640625000000000000f, - -0.01562500000000000000f, 0.03515625000000000000f, - 0.14062500000000000000f, 0.19531250000000000000f, - 0.25390625000000000000f, 0.30859375000000000000f, - 0.37890625000000000000f, 0.42578124999999994000f, - -0.44921875000000006000f, -0.42968750000000000000f, - -0.39062500000000000000f, -0.34374999999999994000f, - -0.21875000000000000000f, -0.17578125000000000000f, - -0.13281250000000000000f, -0.08203125000000000000f, - -0.02734375000000000000f, 0.02734375000000000000f, - 0.09375000000000000000f, 0.14453125000000000000f, - 0.19531250000000000000f, 0.25000000000000000000f, - 0.33593750000000000000f, 0.41796875000000000000f, - -0.40625000000000006000f, -0.38281250000000000000f, - -0.34374999999999994000f, -0.30078125000000000000f, - -0.23437499999999997000f, -0.19921875000000000000f, - -0.14453125000000000000f, -0.07031250000000000000f, - -0.01171875000000000000f, 0.03125000000000000000f, - 0.09765625000000000000f, 0.15625000000000000000f, - 0.20703125000000000000f, 0.26562500000000000000f, - 0.35546875000000000000f, 0.41796875000000000000f, - -0.46093750000000000000f, -0.44140625000000000000f, - -0.37890625000000000000f, -0.33203125000000000000f, - -0.28906250000000000000f, -0.24218750000000000000f, - -0.19921875000000000000f, -0.15625000000000000000f, - -0.09765625000000000000f, 0.01562500000000000000f, - 0.09375000000000000000f, 0.15625000000000000000f, - 0.22265625000000000000f, 0.29296875000000000000f, - 0.35937500000000000000f, 0.42578124999999994000f, - -0.41796875000000000000f, -0.40234375000000000000f, - -0.35937500000000000000f, -0.32421875000000006000f, - -0.28906250000000000000f, -0.24218750000000000000f, - -0.10937500000000000000f, -0.07031250000000000000f, - -0.01562500000000000000f, 0.03515625000000000000f, - 0.08593749999999998600f, 0.13281250000000000000f, - 0.19531250000000000000f, 0.26171875000000000000f, - 0.33984375000000000000f, 0.41796875000000000000f, - -0.45312500000000000000f, -0.43750000000000000000f, - -0.29296875000000000000f, -0.26171875000000000000f, - -0.21875000000000000000f, -0.17578125000000000000f, - -0.12109375000000000000f, -0.06250000000000000000f, - -0.01953125000000000000f, 0.03906250000000000000f, - 0.11718749999999999000f, 0.17578125000000000000f, - 0.24609375000000000000f, 0.30859375000000000000f, - 0.37500000000000000000f, 0.43359375000000000000f, - -0.41406250000000000000f, -0.39843750000000000000f, - -0.34374999999999994000f, -0.30078125000000000000f, - -0.26562500000000000000f, -0.20312500000000003000f, - -0.14843750000000000000f, -0.09765625000000000000f, - -0.01562500000000000000f, 0.02734375000000000000f, - 0.08984375000000000000f, 0.14062500000000000000f, - 0.25781250000000000000f, 0.32812500000000000000f, - 0.38281250000000000000f, 0.43359375000000000000f, - -0.40234375000000000000f, -0.38671875000000006000f, - -0.33984375000000000000f, -0.29687500000000000000f, - -0.25781250000000000000f, -0.21875000000000000000f, - -0.11328125000000000000f, -0.05078125000000000700f, - 0.00000000000000000000f, 0.05468750000000000000f, - 0.12109375000000000000f, 0.16406250000000000000f, - 0.22265625000000000000f, 0.27734375000000000000f, - 0.33203125000000000000f, 0.37500000000000000000f, - -0.44531250000000000000f, -0.43359375000000000000f, - -0.35546875000000000000f, -0.22656250000000000000f, - -0.18359375000000000000f, -0.14843750000000000000f, - -0.10156250000000001000f, -0.05468750000000000000f, - 0.01171875000000000000f, 0.05078125000000000700f, - 0.10156250000000001000f, 0.15625000000000000000f, - 0.24218750000000000000f, 0.31250000000000000000f, - 0.37500000000000000000f, 0.42968750000000000000f, - -0.44531250000000000000f, -0.42968750000000000000f, - -0.35156250000000000000f, -0.32421875000000006000f, - -0.28125000000000000000f, -0.25000000000000000000f, - -0.14062500000000000000f, -0.09375000000000000000f, - -0.05078125000000000700f, 0.02343750000000000000f, - 0.10937500000000000000f, 0.19140625000000000000f, - 0.25781250000000000000f, 0.31640625000000000000f, - 0.37890625000000000000f, 0.43750000000000000000f, - -0.42578124999999994000f, -0.41015625000000000000f, - -0.35546875000000000000f, -0.32031250000000000000f, - -0.27734375000000000000f, -0.19921875000000000000f, - -0.14843750000000000000f, -0.09375000000000000000f, - -0.03906250000000000000f, 0.00390625000000000000f, - 0.07812500000000000000f, 0.19140625000000000000f, - 0.25000000000000000000f, 0.30468750000000000000f, - 0.35546875000000000000f, 0.41406250000000000000f, - -0.43359375000000000000f, -0.41796875000000000000f, - -0.35156250000000000000f, -0.32031250000000000000f, - -0.27343750000000000000f, -0.23437499999999997000f, - -0.19140625000000000000f, -0.04687500000000000000f, - 0.00000000000000000000f, 0.04296874999999999300f, - 0.09765625000000000000f, 0.14453125000000000000f, - 0.23437499999999997000f, 0.32031250000000000000f, - 0.39453125000000000000f, 0.44531250000000000000f, - -0.43359375000000000000f, -0.41796875000000000000f, - -0.36328124999999994000f, -0.28125000000000000000f, - -0.16406250000000000000f, -0.11718749999999999000f, - -0.07812500000000000000f, -0.03125000000000000000f, - 0.01562500000000000000f, 0.06250000000000000000f, - 0.13281250000000000000f, 0.17968750000000000000f, - 0.22656250000000000000f, 0.27343750000000000000f, - 0.33203125000000000000f, 0.38281250000000000000f, - -0.43750000000000000000f, -0.42578124999999994000f, - -0.31250000000000000000f, -0.25390625000000000000f, - -0.21875000000000000000f, -0.17187499999999997000f, - -0.12890625000000000000f, -0.06640625000000000000f, - -0.01171875000000000000f, 0.03125000000000000000f, - 0.07812500000000000000f, 0.12109375000000000000f, - 0.19140625000000000000f, 0.30859375000000000000f, - 0.38281250000000000000f, 0.43750000000000000000f, - -0.40625000000000006000f, -0.38281250000000000000f, - -0.32812500000000000000f, -0.28125000000000000000f, - -0.23046875000000000000f, -0.17578125000000000000f, - -0.12109375000000000000f, -0.07031250000000000000f, - -0.00390625000000000000f, 0.04687500000000000000f, - 0.12109375000000000000f, 0.18359375000000000000f, - 0.25000000000000000000f, 0.31640625000000000000f, - 0.38281250000000000000f, 0.42968750000000000000f, - -0.42968750000000000000f, -0.41406250000000000000f, - -0.35937500000000000000f, -0.30859375000000000000f, - -0.27343750000000000000f, -0.23046875000000000000f, - -0.19140625000000000000f, -0.15234375000000000000f, - -0.00390625000000000000f, 0.04296874999999999300f, - 0.08593749999999998600f, 0.13671875000000000000f, - 0.20312500000000003000f, 0.26953125000000000000f, - 0.34765625000000000000f, 0.42578124999999994000f, - -0.44140625000000000000f, -0.42578124999999994000f, - -0.39453125000000000000f, -0.37109375000000000000f, - -0.21875000000000000000f, -0.17187499999999997000f, - -0.11328125000000000000f, -0.06250000000000000000f, - -0.00781250000000000000f, 0.07031250000000000000f, - 0.12890625000000000000f, 0.18750000000000000000f, - 0.24609375000000000000f, 0.30468750000000000000f, - 0.37109375000000000000f, 0.42968750000000000000f, - -0.42578124999999994000f, -0.41406250000000000000f, - -0.36718750000000000000f, -0.33984375000000000000f, - -0.28906250000000000000f, -0.16015625000000000000f, - -0.11328125000000000000f, -0.05468750000000000000f, - 0.00390625000000000000f, 0.05078125000000000700f, - 0.10937500000000000000f, 0.18359375000000000000f, - 0.26953125000000000000f, 0.32812500000000000000f, - 0.38671875000000006000f, 0.43359375000000000000f, - -0.44921875000000006000f, -0.42968750000000000000f, - -0.39453125000000000000f, -0.32812500000000000000f, - -0.19531250000000000000f, -0.12500000000000000000f, - -0.08593749999999998600f, -0.04296874999999999300f, - 0.00390625000000000000f, 0.05078125000000000700f, - 0.11718749999999999000f, 0.17578125000000000000f, - 0.22656250000000000000f, 0.28125000000000000000f, - 0.34765625000000000000f, 0.41796875000000000000f, - -0.41406250000000000000f, -0.39843750000000000000f, - -0.34765625000000000000f, -0.29296875000000000000f, - -0.25000000000000000000f, -0.21484375000000000000f, - -0.17187499999999997000f, -0.13281250000000000000f, - -0.05078125000000000700f, 0.06250000000000000000f, - 0.12500000000000000000f, 0.16796875000000000000f, - 0.23046875000000000000f, 0.28515625000000000000f, - 0.33593750000000000000f, 0.39062500000000000000f, - -0.43359375000000000000f, -0.41796875000000000000f, - -0.36718750000000000000f, -0.27343750000000000000f, - -0.21484375000000000000f, -0.17968750000000000000f, - -0.12890625000000000000f, -0.08203125000000000000f, - -0.02734375000000000000f, 0.01953125000000000000f, - 0.07421875000000000000f, 0.12109375000000000000f, - 0.16796875000000000000f, 0.21484375000000000000f, - 0.27343750000000000000f, 0.40234375000000000000f, - -0.39843750000000000000f, -0.37890625000000000000f, - -0.31250000000000000000f, -0.27734375000000000000f, - -0.23437499999999997000f, -0.19140625000000000000f, - -0.14062500000000000000f, -0.09375000000000000000f, - -0.03125000000000000000f, 0.01562500000000000000f, - 0.07421875000000000000f, 0.12500000000000000000f, - 0.18750000000000000000f, 0.24609375000000000000f, - 0.30859375000000000000f, 0.39062500000000000000f, - -0.44140625000000000000f, -0.42578124999999994000f, - -0.35156250000000000000f, -0.29687500000000000000f, - -0.25781250000000000000f, -0.20703125000000000000f, - -0.16015625000000000000f, -0.11328125000000000000f, - -0.06250000000000000000f, -0.02734375000000000000f, - 0.01953125000000000000f, 0.05859374999999999300f, - 0.16406250000000000000f, 0.26953125000000000000f, - 0.34765625000000000000f, 0.42187500000000000000f, - -0.42187500000000000000f, -0.41015625000000000000f, - -0.36328124999999994000f, -0.33203125000000000000f, - -0.29687500000000000000f, -0.24218750000000000000f, - -0.08984375000000000000f, -0.03125000000000000000f, - 0.01562500000000000000f, 0.07031250000000000000f, - 0.12890625000000000000f, 0.17578125000000000000f, - 0.23437499999999997000f, 0.28906250000000000000f, - 0.35156250000000000000f, 0.41015625000000000000f, - -0.44531250000000000000f, -0.42968750000000000000f, - -0.34765625000000000000f, -0.23828125000000000000f, - -0.20312500000000003000f, -0.16406250000000000000f, - -0.11718749999999999000f, -0.07031250000000000000f, - -0.01562500000000000000f, 0.05078125000000000700f, - 0.10156250000000001000f, 0.15234375000000000000f, - 0.20703125000000000000f, 0.26171875000000000000f, - 0.31640625000000000000f, 0.37500000000000000000f, - -0.38671875000000006000f, -0.37109375000000000000f, - -0.33593750000000000000f, -0.30078125000000000000f, - -0.26953125000000000000f, -0.23437499999999997000f, - -0.12500000000000000000f, -0.05859374999999999300f, - -0.00781250000000000000f, 0.05859374999999999300f, - 0.13671875000000000000f, 0.18359375000000000000f, - 0.25000000000000000000f, 0.31250000000000000000f, - 0.37500000000000000000f, 0.42968750000000000000f, - -0.44921875000000006000f, -0.41015625000000000000f, - -0.31250000000000000000f, -0.23828125000000000000f, - -0.16796875000000000000f, -0.10546875000000000000f, - -0.05468750000000000000f, -0.00390625000000000000f, - 0.05078125000000000700f, 0.10156250000000001000f, - 0.15625000000000000000f, 0.20703125000000000000f, - 0.26171875000000000000f, 0.31250000000000000000f, - 0.37109375000000000000f, 0.42968750000000000000f, - -0.39062500000000000000f, -0.35546875000000000000f, - -0.28125000000000000000f, -0.23046875000000000000f, - -0.18750000000000000000f, -0.14843750000000000000f, - -0.09765625000000000000f, -0.05078125000000000700f, - 0.00390625000000000000f, 0.05859374999999999300f, - 0.10937500000000000000f, 0.15234375000000000000f, - 0.22656250000000000000f, 0.29296875000000000000f, - 0.35546875000000000000f, 0.41015625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.00781250000000000000f, -0.00781250000000000000f, - -0.00781250000000000000f, -0.01562500000000000000f, - -0.01953125000000000000f, -0.01953125000000000000f, - -0.02734375000000000000f, -0.03125000000000000000f, - -0.01953125000000000000f, -0.00781250000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - -0.01171875000000000000f, -0.02343750000000000000f, - -0.03125000000000000000f, -0.00781250000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - 0.00390625000000000000f, 0.00781250000000000000f, - 0.01171875000000000000f, 0.01562500000000000000f, - 0.01171875000000000000f, 0.01171875000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - -0.01171875000000000000f, -0.01171875000000000000f, - -0.02343750000000000000f, 0.01562500000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, -0.00781250000000000000f, - 0.03515625000000000000f, 0.02734375000000000000f, - 0.01562500000000000000f, 0.01171875000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, -0.00390625000000000000f, - -0.00781250000000000000f, -0.00781250000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.00781250000000000000f, -0.00781250000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - -0.00781250000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - -0.01171875000000000000f, -0.00390625000000000000f, - -0.01171875000000000000f, -0.00781250000000000000f, - -0.01953125000000000000f, -0.02343750000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - -0.01562500000000000000f, -0.03125000000000000000f, - 0.01171875000000000000f, 0.00781250000000000000f, - 0.00390625000000000000f, 0.01171875000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, 0.00390625000000000000f, - 0.00781250000000000000f, 0.01171875000000000000f, - 0.01171875000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, -0.01562500000000000000f, - -0.01953125000000000000f, -0.02734375000000000000f, - -0.03515625000000000000f, 0.01562500000000000000f, - 0.00781250000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.01171875000000000000f, -0.01171875000000000000f, - -0.00390625000000000000f, 0.03515625000000000000f, - 0.02734375000000000000f, 0.02343750000000000000f, - 0.01953125000000000000f, 0.01562500000000000000f, - 0.01171875000000000000f, 0.01171875000000000000f, - 0.01562500000000000000f, 0.01562500000000000000f, - 0.01171875000000000000f, 0.01171875000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - 0.03125000000000000000f, 0.03125000000000000000f, - 0.02343750000000000000f, 0.01171875000000000000f, - 0.00781250000000000000f, 0.00000000000000000000f, - 0.00781250000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00781250000000000000f, 0.00781250000000000000f, - 0.01171875000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.02343750000000000000f, - 0.02343750000000000000f, 0.02343750000000000000f, - 0.02734375000000000000f, 0.02343750000000000000f, - 0.01562500000000000000f, 0.01171875000000000000f, - 0.00781250000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.01171875000000000000f, -0.01562500000000000000f, - -0.02734375000000000000f, -0.03906250000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00781250000000000000f, - 0.01171875000000000000f, 0.00781250000000000000f, - 0.01171875000000000000f, 0.00781250000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - -0.01562500000000000000f, -0.01953125000000000000f, - 0.03125000000000000000f, 0.01953125000000000000f, - 0.01171875000000000000f, 0.01171875000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - -0.01171875000000000000f, -0.01171875000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00781250000000000000f, 0.00781250000000000000f, - 0.00781250000000000000f, 0.00781250000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, -0.01171875000000000000f, - -0.02343750000000000000f, -0.03906250000000000000f, - -0.03906250000000000000f, -0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - -0.01171875000000000000f, -0.01953125000000000000f, - -0.03125000000000000000f, -0.03515625000000000000f, - 0.01562500000000000000f, 0.01171875000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, -0.01171875000000000000f, - 0.03906250000000000000f, 0.03515625000000000000f, - 0.02734375000000000000f, 0.01562500000000000000f, - 0.00781250000000000000f, 0.00781250000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.01171875000000000000f, - -0.01171875000000000000f, -0.00781250000000000000f, - 0.00781250000000000000f, 0.00781250000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, -0.01562500000000000000f, - 0.03515625000000000000f, 0.02734375000000000000f, - 0.01562500000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - -0.00781250000000000000f, -0.00781250000000000000f, - -0.01171875000000000000f, -0.01171875000000000000f, - -0.01171875000000000000f, -0.00390625000000000000f, - -0.00781250000000000000f, -0.01562500000000000000f, - -0.01171875000000000000f, -0.00781250000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.01171875000000000000f, 0.01562500000000000000f, - 0.01171875000000000000f, 0.00781250000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, -0.00781250000000000000f, - -0.01171875000000000000f, -0.01953125000000000000f, - -0.02343750000000000000f, -0.00781250000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, -0.00781250000000000000f, - -0.01562500000000000000f, -0.01562500000000000000f, - 0.01562500000000000000f, 0.00781250000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, -0.00781250000000000000f, - -0.01562500000000000000f, 0.01953125000000000000f, - 0.01562500000000000000f, 0.01171875000000000000f, - 0.01562500000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.01171875000000000000f, 0.01171875000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.01171875000000000000f, - 0.00000000000000000000f, 0.01171875000000000000f, - 0.01171875000000000000f, 0.01171875000000000000f, - 0.01171875000000000000f, 0.01171875000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.01171875000000000000f, - -0.01171875000000000000f, -0.01953125000000000000f, - -0.02734375000000000000f, 0.01953125000000000000f, - 0.01171875000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00781250000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00781250000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.01171875000000000000f, 0.01171875000000000000f, - 0.00390625000000000000f, -0.00781250000000000000f, - -0.02343750000000000000f, -0.02734375000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.02734375000000000000f, 0.01953125000000000000f, - 0.01171875000000000000f, 0.00781250000000000000f, - 0.01171875000000000000f, 0.00781250000000000000f, - 0.01171875000000000000f, 0.00781250000000000000f, - -0.00781250000000000000f, -0.00781250000000000000f, - -0.00781250000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, 0.01953125000000000000f, - 0.00781250000000000000f, 0.00781250000000000000f, - 0.00781250000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - -0.01171875000000000000f, -0.01953125000000000000f, - 0.01562500000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - -0.00781250000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00781250000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00781250000000000000f, 0.00781250000000000000f, - 0.00000000000000000000f, -0.01171875000000000000f, - 0.01171875000000000000f, 0.00781250000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, -0.00781250000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00390625000000000000f, 0.01171875000000000000f, - 0.00781250000000000000f, 0.00781250000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.00781250000000000000f, -0.00781250000000000000f, - -0.01562500000000000000f, -0.00781250000000000000f, - 0.00781250000000000000f, 0.00781250000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - -0.00781250000000000000f, -0.00390625000000000000f, - -0.00781250000000000000f, -0.00781250000000000000f, - -0.01171875000000000000f, -0.01562500000000000000f, - 0.01562500000000000000f, 0.01171875000000000000f, - 0.00781250000000000000f, 0.00781250000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - -0.01171875000000000000f, -0.02343750000000000000f, - 0.01562500000000000000f, 0.00781250000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.01171875000000000000f, 0.01171875000000000000f, - 0.00781250000000000000f, 0.00781250000000000000f, - 0.01171875000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, 0.01562500000000000000f, - 0.01171875000000000000f, 0.01171875000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - -0.01562500000000000000f, -0.02343750000000000000f, - 0.01562500000000000000f, 0.00781250000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.01562500000000000000f, 0.01171875000000000000f, - 0.00781250000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, -0.00781250000000000000f, - -0.00781250000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - -0.01171875000000000000f, 0.01171875000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - -0.01562500000000000000f, 0.01562500000000000000f, - 0.00781250000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, -0.00781250000000000000f, - -0.00781250000000000000f, -0.01171875000000000000f, - 0.00781250000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00781250000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, -0.01171875000000000000f, - -0.00781250000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00781250000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - 0.01171875000000000000f, 0.01562500000000000000f, - 0.01171875000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - -0.00781250000000000000f, -0.00781250000000000000f, - 0.01562500000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - -0.00781250000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, -0.00781250000000000000f, - -0.01562500000000000000f, 0.01953125000000000000f, - 0.01562500000000000000f, 0.00781250000000000000f, - 0.00390625000000000000f, 0.00781250000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.01171875000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - -0.01953125000000000000f, 0.01171875000000000000f, - 0.01171875000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00781250000000000000f, 0.00781250000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.01171875000000000000f, -0.00781250000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00781250000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.01171875000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, 0.00781250000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.01171875000000000000f, 0.01171875000000000000f, - 0.00390625000000000000f, 0.00781250000000000000f, - 0.00781250000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, 0.01562500000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - 0.01171875000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, -0.00781250000000000000f, - -0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00781250000000000000f, 0.00781250000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00781250000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, -0.00781250000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - -0.01562500000000000000f, 0.00781250000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.01562500000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, -0.01171875000000000000f, - 0.00390625000000000000f, 0.00781250000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - 0.00000000000000000000f, -0.01562500000000000000f, - 0.00781250000000000000f, 0.01562500000000000000f, - 0.00000000000000000000f, -0.00781250000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - -0.00781250000000000000f, 0.00390625000000000000f, - -0.00781250000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - -0.00781250000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00781250000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00781250000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, -0.00781250000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - -0.01171875000000000000f, 0.00781250000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - -0.00781250000000000000f, 0.01171875000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.01171875000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00781250000000000000f, 0.00781250000000000000f, - -0.00390625000000000000f, -0.01171875000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.01171875000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00781250000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00781250000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.01171875000000000000f, - 0.01171875000000000000f, 0.00000000000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - -0.01171875000000000000f, 0.01562500000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00781250000000000000f, - -0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.00781250000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00781250000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00781250000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - 0.00000000000000000000f, 0.00781250000000000000f, - -0.00781250000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.00781250000000000000f, 0.00781250000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00781250000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00781250000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00781250000000000000f, - 0.00000000000000000000f, -0.00781250000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, -0.00781250000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00781250000000000000f, 0.00781250000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00781250000000000000f, -0.01171875000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00781250000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.00781250000000000000f, -0.00781250000000000000f, - 0.00781250000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00781250000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - -0.01171875000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00781250000000000000f, 0.00781250000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00781250000000000000f, - 0.00781250000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00781250000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00781250000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - -0.00781250000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - -0.00781250000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00781250000000000000f, - -0.00781250000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - 0.00781250000000000000f, -0.00781250000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00781250000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00781250000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00781250000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00781250000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - -0.00781250000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, -0.00781250000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00781250000000000000f, -0.00781250000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00781250000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00390625000000000000f, -0.00781250000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f -}; - -const SKP_Silk_NLSF_CBS_FLP SKP_Silk_NLSF_CB0_16_Stage_info_FLP[ NLSF_MSVQ_CB0_16_STAGES ] = -{ - { 64, &SKP_Silk_NLSF_MSVQ_CB0_16[ 16 * 0 ], &SKP_Silk_NLSF_MSVQ_CB0_16_rates[ 0 ] }, - { 16, &SKP_Silk_NLSF_MSVQ_CB0_16[ 16 * 64 ], &SKP_Silk_NLSF_MSVQ_CB0_16_rates[ 64 ] }, - { 8, &SKP_Silk_NLSF_MSVQ_CB0_16[ 16 * 80 ], &SKP_Silk_NLSF_MSVQ_CB0_16_rates[ 80 ] }, - { 8, &SKP_Silk_NLSF_MSVQ_CB0_16[ 16 * 88 ], &SKP_Silk_NLSF_MSVQ_CB0_16_rates[ 88 ] }, - { 8, &SKP_Silk_NLSF_MSVQ_CB0_16[ 16 * 96 ], &SKP_Silk_NLSF_MSVQ_CB0_16_rates[ 96 ] }, - { 8, &SKP_Silk_NLSF_MSVQ_CB0_16[ 16 * 104 ], &SKP_Silk_NLSF_MSVQ_CB0_16_rates[ 104 ] }, - { 8, &SKP_Silk_NLSF_MSVQ_CB0_16[ 16 * 112 ], &SKP_Silk_NLSF_MSVQ_CB0_16_rates[ 112 ] }, - { 8, &SKP_Silk_NLSF_MSVQ_CB0_16[ 16 * 120 ], &SKP_Silk_NLSF_MSVQ_CB0_16_rates[ 120 ] }, - { 8, &SKP_Silk_NLSF_MSVQ_CB0_16[ 16 * 128 ], &SKP_Silk_NLSF_MSVQ_CB0_16_rates[ 128 ] }, - { 16, &SKP_Silk_NLSF_MSVQ_CB0_16[ 16 * 136 ], &SKP_Silk_NLSF_MSVQ_CB0_16_rates[ 136 ] } -}; - -const SKP_Silk_NLSF_CB_FLP SKP_Silk_NLSF_CB0_16_FLP = -{ - NLSF_MSVQ_CB0_16_STAGES, - SKP_Silk_NLSF_CB0_16_Stage_info_FLP, - SKP_Silk_NLSF_MSVQ_CB0_16_ndelta_min, - SKP_Silk_NLSF_MSVQ_CB0_16_CDF, - SKP_Silk_NLSF_MSVQ_CB0_16_CDF_start_ptr, - SKP_Silk_NLSF_MSVQ_CB0_16_CDF_middle_idx -}; - diff --git a/src_FLP/SKP_Silk_tables_NLSF_CB1_10_FLP.c b/src_FLP/SKP_Silk_tables_NLSF_CB1_10_FLP.c deleted file mode 100644 index 38d6bca3fef2697cc22a99a108298a77b83a787d..0000000000000000000000000000000000000000 --- a/src_FLP/SKP_Silk_tables_NLSF_CB1_10_FLP.c +++ /dev/null @@ -1,520 +0,0 @@ -/*********************************************************************** -Copyright (c) 2006-2010, Skype Limited. All rights reserved. -Redistribution and use in source and binary forms, with or without -modification, (subject to the limitations in the disclaimer below) -are permitted provided that the following conditions are met: -- Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. -- Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -- Neither the name of Skype Limited, nor the names of specific -contributors, may be used to endorse or promote products derived from -this software without specific prior written permission. -NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED -BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, -BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -***********************************************************************/ - -/**********************************************/ -/* This file has been automatically generated */ -/* */ -/* ROM usage: 3.56 kB */ -/**********************************************/ - -#include "SKP_Silk_tables_FLP.h" -#include "SKP_Silk_tables_NLSF_CB1_10.h" - -const SKP_float SKP_Silk_NLSF_MSVQ_CB1_10_rates[ NLSF_MSVQ_CB1_10_VECTORS ] = -{ - 1.62500000000000000000f, 3.18750000000000000000f, - 3.43750000000000000000f, 4.00000000000000000000f, - 4.75000000000000000000f, 4.81250000000000000000f, - 5.00000000000000000000f, 5.31250000000000000000f, - 5.43750000000000000000f, 5.62500000000000000000f, - 5.68750000000000000000f, 5.75000000000000000000f, - 5.75000000000000000000f, 6.12500000000000000000f, - 6.18750000000000000000f, 6.31250000000000000000f, - 6.37500000000000000000f, 6.43750000000000000000f, - 6.43750000000000000000f, 6.50000000000000000000f, - 6.56250000000000000000f, 6.75000000000000000000f, - 6.93750000000000000000f, 7.06250000000000000000f, - 7.06250000000000000000f, 7.06250000000000000000f, - 7.06250000000000000000f, 7.06250000000000000000f, - 7.06250000000000000000f, 7.06250000000000000000f, - 7.06250000000000000000f, 7.06250000000000000000f, - 0.93750000000000000000f, 2.87500000000000000000f, - 3.68750000000000000000f, 4.00000000000000000000f, - 4.25000000000000000000f, 4.25000000000000000000f, - 4.25000000000000000000f, 4.37500000000000000000f, - 1.12500000000000000000f, 2.62500000000000000000f, - 3.50000000000000000000f, 3.93750000000000000000f, - 4.00000000000000000000f, 4.18750000000000000000f, - 4.25000000000000000000f, 4.25000000000000000000f, - 1.06250000000000000000f, 3.18750000000000000000f, - 3.62500000000000000000f, 3.75000000000000000000f, - 3.87500000000000000000f, 3.93750000000000000000f, - 3.93750000000000000000f, 4.25000000000000000000f, - 2.18750000000000000000f, 2.56250000000000000000f, - 2.75000000000000000000f, 2.87500000000000000000f, - 2.93750000000000000000f, 3.56250000000000000000f, - 4.06250000000000000000f, 4.31250000000000000000f, - 1.31250000000000000000f, 2.75000000000000000000f, - 2.93750000000000000000f, 3.62500000000000000000f, - 3.93750000000000000000f, 4.00000000000000000000f, - 4.12500000000000000000f, 4.12500000000000000000f, - 1.68750000000000000000f, 2.50000000000000000000f, - 3.25000000000000000000f, 3.37500000000000000000f, - 3.37500000000000000000f, 3.43750000000000000000f, - 3.56250000000000000000f, 4.31250000000000000000f -}; - -const SKP_float SKP_Silk_NLSF_MSVQ_CB1_10_ndelta_min[ 10 + 1 ] = -{ - 0.00894165039062500000f, - 0.00097656250000000000f, - 0.00686645507812500000f, - 0.00854492187500000000f, - 0.00466918945312500000f, - 0.00070190429687500000f, - 0.00039672851562500005f, - 0.00042724609375000000f, - 0.00027465820312500000f, - 0.00009155273437500000f, - 0.02099609375000000000f -}; - -const SKP_float SKP_Silk_NLSF_MSVQ_CB1_10[ 10 * NLSF_MSVQ_CB1_10_VECTORS ] = -{ - -0.44140625000000000000f, -0.35937500000000000000f, - -0.26562500000000000000f, -0.16796875000000000000f, - -0.07812500000000000000f, 0.01171875000000000000f, - 0.10937500000000000000f, 0.20312500000000003000f, - 0.30468750000000000000f, 0.39062500000000000000f, - -0.44531250000000000000f, -0.39453125000000000000f, - -0.29296875000000000000f, -0.20703125000000000000f, - -0.11718749999999999000f, -0.02734375000000000000f, - 0.07812500000000000000f, 0.17578125000000000000f, - 0.28125000000000000000f, 0.37500000000000000000f, - -0.38281250000000000000f, -0.31640625000000000000f, - -0.22656250000000000000f, -0.12890625000000000000f, - -0.03906250000000000000f, 0.03906250000000000000f, - 0.13671875000000000000f, 0.22656250000000000000f, - 0.32031250000000000000f, 0.40234375000000000000f, - -0.42968750000000000000f, -0.38671875000000006000f, - -0.31250000000000000000f, -0.23828125000000000000f, - -0.14843750000000000000f, -0.05859374999999999300f, - 0.04687500000000000000f, 0.14843750000000000000f, - 0.25781250000000000000f, 0.34765625000000000000f, - -0.44921875000000006000f, -0.42187500000000000000f, - -0.30078125000000000000f, -0.19140625000000000000f, - -0.08203125000000000000f, 0.01562500000000000000f, - 0.11328125000000000000f, 0.20703125000000000000f, - 0.30859375000000000000f, 0.39843750000000000000f, - -0.39453125000000000000f, -0.31640625000000000000f, - -0.21484375000000000000f, -0.11328125000000000000f, - -0.02734375000000000000f, 0.08984375000000000000f, - 0.18359375000000000000f, 0.27734375000000000000f, - 0.36328124999999994000f, 0.42968750000000000000f, - -0.39062500000000000000f, -0.32421875000000006000f, - -0.25390625000000000000f, -0.17187499999999997000f, - -0.09765625000000000000f, -0.02734375000000000000f, - 0.07421875000000000000f, 0.17578125000000000000f, - 0.28125000000000000000f, 0.37500000000000000000f, - -0.42968750000000000000f, -0.39062500000000000000f, - -0.33203125000000000000f, -0.17578125000000000000f, - -0.09765625000000000000f, -0.03125000000000000000f, - 0.08593749999999998600f, 0.15234375000000000000f, - 0.30468750000000000000f, 0.37890625000000000000f, - -0.44921875000000006000f, -0.41796875000000000000f, - -0.34765625000000000000f, -0.26953125000000000000f, - -0.14062500000000000000f, -0.03515625000000000000f, - 0.07812500000000000000f, 0.17578125000000000000f, - 0.28125000000000000000f, 0.38671875000000006000f, - -0.44140625000000000000f, -0.38671875000000006000f, - -0.26953125000000000000f, -0.14843750000000000000f, - -0.04687500000000000000f, 0.06250000000000000000f, - 0.17187499999999997000f, 0.26562500000000000000f, - 0.35937500000000000000f, 0.42578124999999994000f, - -0.42578124999999994000f, -0.38281250000000000000f, - -0.32812500000000000000f, -0.23437499999999997000f, - -0.07421875000000000000f, -0.01171875000000000000f, - 0.07031250000000000000f, 0.16796875000000000000f, - 0.23828125000000000000f, 0.38281250000000000000f, - -0.38671875000000006000f, -0.30078125000000000000f, - -0.17968750000000000000f, -0.06640625000000000000f, - 0.03906250000000000000f, 0.13671875000000000000f, - 0.21484375000000000000f, 0.28906250000000000000f, - 0.35937500000000000000f, 0.41406250000000000000f, - -0.41015625000000000000f, -0.35546875000000000000f, - -0.27343750000000000000f, -0.16406250000000000000f, - -0.00390625000000000000f, 0.06640625000000000000f, - 0.13671875000000000000f, 0.22656250000000000000f, - 0.29296875000000000000f, 0.38671875000000006000f, - -0.35156250000000000000f, -0.30078125000000000000f, - -0.20703125000000000000f, -0.14843750000000000000f, - -0.08203125000000000000f, 0.00000000000000000000f, - 0.10937500000000000000f, 0.19140625000000000000f, - 0.29687500000000000000f, 0.37890625000000000000f, - -0.42968750000000000000f, -0.39453125000000000000f, - -0.31250000000000000000f, -0.11328125000000000000f, - -0.03125000000000000000f, 0.02343750000000000000f, - 0.11718749999999999000f, 0.18750000000000000000f, - 0.32031250000000000000f, 0.38671875000000006000f, - -0.42968750000000000000f, -0.35937500000000000000f, - -0.21484375000000000000f, -0.07421875000000000000f, - 0.01562500000000000000f, 0.09765625000000000000f, - 0.16796875000000000000f, 0.24218750000000000000f, - 0.32812500000000000000f, 0.39453125000000000000f, - -0.39453125000000000000f, -0.34374999999999994000f, - -0.28515625000000000000f, -0.22656250000000000000f, - -0.17578125000000000000f, -0.10156250000000001000f, - 0.08203125000000000000f, 0.17968750000000000000f, - 0.27734375000000000000f, 0.38281250000000000000f, - -0.32421875000000006000f, -0.26171875000000000000f, - -0.15625000000000000000f, -0.08593749999999998600f, - -0.00781250000000000000f, 0.07421875000000000000f, - 0.16015625000000000000f, 0.24609375000000000000f, - 0.33203125000000000000f, 0.40234375000000000000f, - -0.43750000000000000000f, -0.40234375000000000000f, - -0.34765625000000000000f, -0.24218750000000000000f, - -0.03125000000000000000f, 0.05859374999999999300f, - 0.12890625000000000000f, 0.21875000000000000000f, - 0.28906250000000000000f, 0.37890625000000000000f, - -0.45703125000000000000f, -0.28515625000000000000f, - -0.21875000000000000000f, -0.12890625000000000000f, - -0.05078125000000000700f, 0.04296874999999999300f, - 0.13281250000000000000f, 0.22265625000000000000f, - 0.31250000000000000000f, 0.39453125000000000000f, - -0.42968750000000000000f, -0.39062500000000000000f, - -0.32812500000000000000f, -0.28125000000000000000f, - -0.23046875000000000000f, -0.05859374999999999300f, - 0.08203125000000000000f, 0.17578125000000000000f, - 0.29687500000000000000f, 0.37500000000000000000f, - -0.40234375000000000000f, -0.35156250000000000000f, - -0.28125000000000000000f, -0.23046875000000000000f, - -0.15625000000000000000f, 0.00390625000000000000f, - 0.12500000000000000000f, 0.21875000000000000000f, - 0.32031250000000000000f, 0.38281250000000000000f, - -0.41796875000000000000f, -0.37890625000000000000f, - -0.30859375000000000000f, -0.21093750000000000000f, - -0.14453125000000000000f, -0.08203125000000000000f, - -0.01562500000000000000f, 0.08593749999999998600f, - 0.27734375000000000000f, 0.36718750000000000000f, - -0.37890625000000000000f, -0.26171875000000000000f, - -0.10546875000000000000f, -0.00781250000000000000f, - 0.11328125000000000000f, 0.17187499999999997000f, - 0.22656250000000000000f, 0.27734375000000000000f, - 0.32031250000000000000f, 0.38281250000000000000f, - -0.34765625000000000000f, -0.28906250000000000000f, - -0.21484375000000000000f, -0.17578125000000000000f, - -0.11718749999999999000f, -0.07031250000000000000f, - -0.00781250000000000000f, 0.08984375000000000000f, - 0.25390625000000000000f, 0.37890625000000000000f, - -0.41406250000000000000f, -0.32031250000000000000f, - -0.21875000000000000000f, -0.12109375000000000000f, - -0.01953125000000000000f, 0.13281250000000000000f, - 0.23046875000000000000f, 0.25390625000000000000f, - 0.26562500000000000000f, 0.30468750000000000000f, - -0.41796875000000000000f, -0.32031250000000000000f, - -0.22265625000000000000f, -0.12109375000000000000f, - 0.07812500000000000000f, 0.12109375000000000000f, - 0.13281250000000000000f, 0.13671875000000000000f, - 0.26562500000000000000f, 0.40234375000000000000f, - -0.42578124999999994000f, -0.32421875000000006000f, - -0.21875000000000000000f, -0.12500000000000000000f, - -0.02343750000000000000f, 0.07031250000000000000f, - 0.19140625000000000000f, 0.32031250000000000000f, - 0.42578124999999994000f, 0.45312500000000000000f, - -0.40234375000000000000f, -0.32031250000000000000f, - -0.19531250000000000000f, -0.06640625000000000000f, - -0.02343750000000000000f, 0.00781250000000000000f, - 0.07421875000000000000f, 0.21875000000000000000f, - 0.32421875000000006000f, 0.41015625000000000000f, - -0.41406250000000000000f, -0.32031250000000000000f, - -0.21093750000000000000f, -0.11718749999999999000f, - -0.00390625000000000000f, 0.12500000000000000000f, - 0.16015625000000000000f, 0.19140625000000000000f, - 0.20312500000000003000f, 0.38281250000000000000f, - -0.38281250000000000000f, -0.25781250000000000000f, - -0.14062500000000000000f, 0.00000000000000000000f, - 0.01953125000000000000f, 0.04687500000000000000f, - 0.05468750000000000000f, 0.10156250000000001000f, - 0.25000000000000000000f, 0.37890625000000000000f, - -0.41015625000000000000f, -0.31250000000000000000f, - -0.20703125000000000000f, -0.11328125000000000000f, - 0.00781250000000000000f, 0.11718749999999999000f, - 0.29687500000000000000f, 0.35156250000000000000f, - 0.36718750000000000000f, 0.37500000000000000000f, - -0.00781250000000000000f, -0.00781250000000000000f, - -0.00781250000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00781250000000000000f, 0.00781250000000000000f, - 0.01171875000000000000f, 0.01562500000000000000f, - 0.01171875000000000000f, 0.01953125000000000000f, - 0.02734375000000000000f, 0.02343750000000000000f, - 0.01562500000000000000f, 0.00781250000000000000f, - 0.03125000000000000000f, 0.03515625000000000000f, - 0.01953125000000000000f, -0.00781250000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, -0.00781250000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00781250000000000000f, -0.00781250000000000000f, - -0.02734375000000000000f, -0.04296874999999999300f, - -0.04296874999999999300f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.01171875000000000000f, -0.00781250000000000000f, - -0.02343750000000000000f, -0.01171875000000000000f, - 0.00781250000000000000f, -0.01562500000000000000f, - 0.03906250000000000000f, 0.01953125000000000000f, - -0.00390625000000000000f, -0.01171875000000000000f, - -0.01953125000000000000f, -0.02734375000000000000f, - 0.04296874999999999300f, 0.02734375000000000000f, - 0.01562500000000000000f, -0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.02734375000000000000f, 0.03906250000000000000f, - 0.01171875000000000000f, -0.00390625000000000000f, - -0.02343750000000000000f, -0.00781250000000000000f, - -0.01171875000000000000f, -0.01562500000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.00781250000000000000f, -0.00781250000000000000f, - 0.00000000000000000000f, 0.01171875000000000000f, - 0.00000000000000000000f, -0.01953125000000000000f, - -0.04296874999999999300f, -0.03906250000000000000f, - -0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - -0.00781250000000000000f, -0.01562500000000000000f, - -0.01953125000000000000f, -0.01171875000000000000f, - -0.01171875000000000000f, -0.01171875000000000000f, - -0.01171875000000000000f, -0.01171875000000000000f, - 0.01171875000000000000f, 0.00781250000000000000f, - 0.01171875000000000000f, 0.01953125000000000000f, - 0.01562500000000000000f, 0.00000000000000000000f, - -0.01171875000000000000f, -0.03515625000000000000f, - -0.01953125000000000000f, -0.00390625000000000000f, - 0.01171875000000000000f, 0.00781250000000000000f, - 0.00781250000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - -0.00781250000000000000f, 0.02343750000000000000f, - 0.02734375000000000000f, 0.02343750000000000000f, - -0.00781250000000000000f, -0.01953125000000000000f, - -0.03515625000000000000f, -0.01562500000000000000f, - -0.00390625000000000000f, -0.01171875000000000000f, - -0.01171875000000000000f, 0.00390625000000000000f, - 0.00781250000000000000f, 0.00781250000000000000f, - -0.02343750000000000000f, -0.03515625000000000000f, - 0.02343750000000000000f, 0.01171875000000000000f, - 0.01171875000000000000f, 0.00390625000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.01171875000000000000f, 0.00390625000000000000f, - -0.00781250000000000000f, 0.00781250000000000000f, - 0.01562500000000000000f, -0.01171875000000000000f, - 0.03515625000000000000f, 0.01171875000000000000f, - -0.01171875000000000000f, 0.01562500000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.01562500000000000000f, - -0.02343750000000000000f, 0.04296874999999999300f, - 0.01562500000000000000f, 0.00390625000000000000f, - 0.00781250000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.02343750000000000000f, 0.01171875000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - 0.00390625000000000000f, 0.00781250000000000000f, - -0.01953125000000000000f, 0.02343750000000000000f, - 0.01171875000000000000f, 0.00781250000000000000f, - 0.01171875000000000000f, 0.01562500000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.00781250000000000000f, 0.00781250000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - -0.02343750000000000000f, -0.03125000000000000000f, - 0.00781250000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.03125000000000000000f, 0.00390625000000000000f, - -0.01953125000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, -0.03125000000000000000f, - 0.01171875000000000000f, 0.00000000000000000000f, - 0.00781250000000000000f, 0.00781250000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, 0.03906250000000000000f, - 0.00390625000000000000f, -0.01562500000000000000f, - -0.00390625000000000000f, -0.01562500000000000000f, - -0.02343750000000000000f, 0.02343750000000000000f, - 0.01171875000000000000f, 0.01562500000000000000f, - 0.01562500000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.01562500000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - 0.00000000000000000000f, 0.01562500000000000000f, - 0.00781250000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - -0.00781250000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, -0.01562500000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.01562500000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.00781250000000000000f, -0.01562500000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.01171875000000000000f, 0.01171875000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, -0.01171875000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - 0.01562500000000000000f, 0.01171875000000000000f, - 0.00781250000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - 0.01953125000000000000f, -0.00390625000000000000f, - -0.01171875000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00781250000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.02734375000000000000f, 0.02343750000000000000f, - 0.00781250000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, 0.01562500000000000000f, - -0.01562500000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - 0.00390625000000000000f, 0.00781250000000000000f, - 0.00781250000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, -0.01562500000000000000f, - 0.00781250000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.01171875000000000000f, -0.00390625000000000000f, - -0.00781250000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, -0.01171875000000000000f, - -0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - -0.00781250000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - -0.01953125000000000000f, 0.00390625000000000000f, - -0.00781250000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - -0.00781250000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.01953125000000000000f, -0.01171875000000000000f, - 0.00000000000000000000f, -0.01171875000000000000f, - 0.00781250000000000000f, 0.00000000000000000000f, - -0.01171875000000000000f, -0.00781250000000000000f, - -0.00781250000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00781250000000000000f, 0.00781250000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.01562500000000000000f, -0.00390625000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, -0.01171875000000000000f, - -0.01953125000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00781250000000000000f, - -0.00781250000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00781250000000000000f, 0.00781250000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.00781250000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00781250000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.01171875000000000000f, - -0.00781250000000000000f, -0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.01562500000000000000f, -0.00390625000000000000f, - 0.00390625000000000000f, -0.01171875000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.01562500000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - -0.00781250000000000000f, -0.01171875000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - -0.01171875000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00781250000000000000f, - -0.01562500000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.01171875000000000000f, -0.00781250000000000000f, - -0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.01562500000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f -}; - -const SKP_Silk_NLSF_CBS_FLP SKP_Silk_NLSF_CB1_10_Stage_info_FLP[ NLSF_MSVQ_CB1_10_STAGES ] = -{ - { 32, &SKP_Silk_NLSF_MSVQ_CB1_10[ 10 * 0 ], &SKP_Silk_NLSF_MSVQ_CB1_10_rates[ 0 ] }, - { 8, &SKP_Silk_NLSF_MSVQ_CB1_10[ 10 * 32 ], &SKP_Silk_NLSF_MSVQ_CB1_10_rates[ 32 ] }, - { 8, &SKP_Silk_NLSF_MSVQ_CB1_10[ 10 * 40 ], &SKP_Silk_NLSF_MSVQ_CB1_10_rates[ 40 ] }, - { 8, &SKP_Silk_NLSF_MSVQ_CB1_10[ 10 * 48 ], &SKP_Silk_NLSF_MSVQ_CB1_10_rates[ 48 ] }, - { 8, &SKP_Silk_NLSF_MSVQ_CB1_10[ 10 * 56 ], &SKP_Silk_NLSF_MSVQ_CB1_10_rates[ 56 ] }, - { 8, &SKP_Silk_NLSF_MSVQ_CB1_10[ 10 * 64 ], &SKP_Silk_NLSF_MSVQ_CB1_10_rates[ 64 ] }, - { 8, &SKP_Silk_NLSF_MSVQ_CB1_10[ 10 * 72 ], &SKP_Silk_NLSF_MSVQ_CB1_10_rates[ 72 ] } -}; - -const SKP_Silk_NLSF_CB_FLP SKP_Silk_NLSF_CB1_10_FLP = -{ - NLSF_MSVQ_CB1_10_STAGES, - SKP_Silk_NLSF_CB1_10_Stage_info_FLP, - SKP_Silk_NLSF_MSVQ_CB1_10_ndelta_min, - SKP_Silk_NLSF_MSVQ_CB1_10_CDF, - SKP_Silk_NLSF_MSVQ_CB1_10_CDF_start_ptr, - SKP_Silk_NLSF_MSVQ_CB1_10_CDF_middle_idx -}; - diff --git a/src_FLP/SKP_Silk_tables_NLSF_CB1_16_FLP.c b/src_FLP/SKP_Silk_tables_NLSF_CB1_16_FLP.c deleted file mode 100644 index 3c969551071c1fb620494974d4a0fa816c4d0627..0000000000000000000000000000000000000000 --- a/src_FLP/SKP_Silk_tables_NLSF_CB1_16_FLP.c +++ /dev/null @@ -1,973 +0,0 @@ -/*********************************************************************** -Copyright (c) 2006-2010, Skype Limited. All rights reserved. -Redistribution and use in source and binary forms, with or without -modification, (subject to the limitations in the disclaimer below) -are permitted provided that the following conditions are met: -- Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. -- Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -- Neither the name of Skype Limited, nor the names of specific -contributors, may be used to endorse or promote products derived from -this software without specific prior written permission. -NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED -BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, -BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -***********************************************************************/ - -/**********************************************/ -/* This file has been automatically generated */ -/* */ -/* ROM usage: 7.14 kB */ -/**********************************************/ - -#include "SKP_Silk_tables_FLP.h" -#include "SKP_Silk_tables_NLSF_CB1_16.h" - -const SKP_float SKP_Silk_NLSF_MSVQ_CB1_16_rates[ NLSF_MSVQ_CB1_16_VECTORS ] = -{ - 1.93750000000000000000f, 3.25000000000000000000f, - 3.81250000000000000000f, 4.31250000000000000000f, - 4.56250000000000000000f, 4.75000000000000000000f, - 5.06250000000000000000f, 5.06250000000000000000f, - 5.18750000000000000000f, 5.25000000000000000000f, - 5.31250000000000000000f, 5.37500000000000000000f, - 5.37500000000000000000f, 5.50000000000000000000f, - 5.50000000000000000000f, 5.62500000000000000000f, - 5.87500000000000000000f, 5.87500000000000000000f, - 5.93750000000000000000f, 6.06250000000000000000f, - 6.12500000000000000000f, 6.25000000000000000000f, - 6.37500000000000000000f, 6.68750000000000000000f, - 6.68750000000000000000f, 7.00000000000000000000f, - 7.00000000000000000000f, 7.00000000000000000000f, - 7.00000000000000000000f, 7.00000000000000000000f, - 7.00000000000000000000f, 7.00000000000000000000f, - 1.25000000000000000000f, 2.62500000000000000000f, - 2.75000000000000000000f, 3.87500000000000000000f, - 4.00000000000000000000f, 4.25000000000000000000f, - 4.62500000000000000000f, 4.62500000000000000000f, - 1.06250000000000000000f, 2.87500000000000000000f, - 3.68750000000000000000f, 3.75000000000000000000f, - 3.87500000000000000000f, 3.87500000000000000000f, - 4.31250000000000000000f, 4.37500000000000000000f, - 0.75000000000000000000f, 3.75000000000000000000f, - 3.93750000000000000000f, 4.06250000000000000000f, - 4.18750000000000000000f, 4.31250000000000000000f, - 4.31250000000000000000f, 4.43750000000000000000f, - 0.62500000000000000000f, 3.87500000000000000000f, - 3.93750000000000000000f, 4.00000000000000000000f, - 4.25000000000000000000f, 4.62500000000000000000f, - 4.75000000000000000000f, 5.00000000000000000000f, - 0.56250000000000000000f, 4.06250000000000000000f, - 4.31250000000000000000f, 4.37500000000000000000f, - 4.43750000000000000000f, 4.56250000000000000000f, - 4.56250000000000000000f, 4.68750000000000000000f, - 0.68750000000000000000f, 3.81250000000000000000f, - 3.87500000000000000000f, 4.18750000000000000000f, - 4.25000000000000000000f, 4.37500000000000000000f, - 4.43750000000000000000f, 4.50000000000000000000f, - 1.06250000000000000000f, 3.06250000000000000000f, - 3.56250000000000000000f, 3.62500000000000000000f, - 3.68750000000000000000f, 4.12500000000000000000f, - 4.18750000000000000000f, 4.68750000000000000000f, - 1.18750000000000000000f, 2.56250000000000000000f, - 3.00000000000000000000f, 3.75000000000000000000f, - 4.31250000000000000000f, 4.31250000000000000000f, - 4.37500000000000000000f, 4.37500000000000000000f, - 1.87500000000000000000f, 2.00000000000000000000f, - 2.93750000000000000000f, 3.25000000000000000000f, - 3.50000000000000000000f, 4.12500000000000000000f, - 4.37500000000000000000f, 4.50000000000000000000f -}; - -const SKP_float SKP_Silk_NLSF_MSVQ_CB1_16_ndelta_min[ 16 + 1 ] = -{ - 0.00335693359375000000f, - 0.00085449218750000000f, - 0.00372314453125000000f, - 0.00207519531250000000f, - 0.00228881835937500000f, - 0.00216674804687500000f, - 0.00195312500000000000f, - 0.00238037109375000000f, - 0.00253295898437500040f, - 0.00234985351562500000f, - 0.00247192382812500000f, - 0.00231933593750000000f, - 0.00256347656250000000f, - 0.00222778320312500000f, - 0.00210571289062500000f, - 0.00064086914062500000f, - 0.02374267578125000000f -}; - -const SKP_float SKP_Silk_NLSF_MSVQ_CB1_16[ 16 * NLSF_MSVQ_CB1_16_VECTORS ] = -{ - -0.46093750000000000000f, -0.41015625000000000000f, - -0.35156250000000000000f, -0.28906250000000000000f, - -0.22656250000000000000f, -0.17187499999999997000f, - -0.11328125000000000000f, -0.05078125000000000700f, - 0.01171875000000000000f, 0.07031250000000000000f, - 0.12890625000000000000f, 0.19140625000000000000f, - 0.25000000000000000000f, 0.30859375000000000000f, - 0.37109375000000000000f, 0.42578124999999994000f, - -0.46093750000000000000f, -0.42968750000000000000f, - -0.37109375000000000000f, -0.31640625000000000000f, - -0.25781250000000000000f, -0.20312500000000003000f, - -0.14453125000000000000f, -0.08203125000000000000f, - -0.01562500000000000000f, 0.04687500000000000000f, - 0.10546875000000000000f, 0.16796875000000000000f, - 0.23437499999999997000f, 0.30078125000000000000f, - 0.36328124999999994000f, 0.41796875000000000000f, - -0.46874999999999994000f, -0.44531250000000000000f, - -0.36718750000000000000f, -0.30468750000000000000f, - -0.23437499999999997000f, -0.17578125000000000000f, - -0.11328125000000000000f, -0.05078125000000000700f, - 0.01171875000000000000f, 0.07421875000000000000f, - 0.13281250000000000000f, 0.19140625000000000000f, - 0.25390625000000000000f, 0.31250000000000000000f, - 0.37109375000000000000f, 0.42968750000000000000f, - -0.47656250000000000000f, -0.45703125000000000000f, - -0.40234375000000000000f, -0.34374999999999994000f, - -0.26953125000000000000f, -0.20312500000000003000f, - -0.14453125000000000000f, -0.07421875000000000000f, - -0.00781250000000000000f, 0.05859374999999999300f, - 0.12109375000000000000f, 0.18359375000000000000f, - 0.24609375000000000000f, 0.30859375000000000000f, - 0.37109375000000000000f, 0.42968750000000000000f, - -0.46484375000000000000f, -0.43359375000000000000f, - -0.37109375000000000000f, -0.31640625000000000000f, - -0.26562500000000000000f, -0.20703125000000000000f, - -0.14062500000000000000f, -0.08593749999999998600f, - -0.01953125000000000000f, 0.03515625000000000000f, - 0.10546875000000000000f, 0.15625000000000000000f, - 0.21875000000000000000f, 0.27343750000000000000f, - 0.33203125000000000000f, 0.37500000000000000000f, - -0.45703125000000000000f, -0.41406250000000000000f, - -0.35156250000000000000f, -0.29687500000000000000f, - -0.24218750000000000000f, -0.19140625000000000000f, - -0.12109375000000000000f, -0.05859374999999999300f, - -0.00781250000000000000f, 0.03906250000000000000f, - 0.10156250000000001000f, 0.15234375000000000000f, - 0.19921875000000000000f, 0.25000000000000000000f, - 0.31250000000000000000f, 0.35156250000000000000f, - -0.44140625000000000000f, -0.39843750000000000000f, - -0.32812500000000000000f, -0.26953125000000000000f, - -0.21093750000000000000f, -0.16406250000000000000f, - -0.10546875000000000000f, -0.05859374999999999300f, - -0.00390625000000000000f, 0.05078125000000000700f, - 0.10937500000000000000f, 0.16406250000000000000f, - 0.22656250000000000000f, 0.28515625000000000000f, - 0.35156250000000000000f, 0.41406250000000000000f, - -0.44921875000000006000f, -0.40625000000000006000f, - -0.35156250000000000000f, -0.29687500000000000000f, - -0.24609375000000000000f, -0.19531250000000000000f, - -0.13671875000000000000f, -0.08203125000000000000f, - -0.03125000000000000000f, 0.02734375000000000000f, - 0.08593749999999998600f, 0.14453125000000000000f, - 0.20703125000000000000f, 0.27343750000000000000f, - 0.34374999999999994000f, 0.41796875000000000000f, - -0.42578124999999994000f, -0.38281250000000000000f, - -0.32031250000000000000f, -0.25781250000000000000f, - -0.19140625000000000000f, -0.13671875000000000000f, - -0.07031250000000000000f, -0.00781250000000000000f, - 0.05468750000000000000f, 0.11718749999999999000f, - 0.17578125000000000000f, 0.22656250000000000000f, - 0.28515625000000000000f, 0.33593750000000000000f, - 0.39062500000000000000f, 0.44140625000000000000f, - -0.41406250000000000000f, -0.37500000000000000000f, - -0.32031250000000000000f, -0.26562500000000000000f, - -0.20703125000000000000f, -0.15625000000000000000f, - -0.09765625000000000000f, -0.03906250000000000000f, - 0.01953125000000000000f, 0.07421875000000000000f, - 0.13281250000000000000f, 0.19140625000000000000f, - 0.25390625000000000000f, 0.31250000000000000000f, - 0.37500000000000000000f, 0.42968750000000000000f, - -0.46874999999999994000f, -0.44140625000000000000f, - -0.38671875000000006000f, -0.33593750000000000000f, - -0.28125000000000000000f, -0.23046875000000000000f, - -0.19531250000000000000f, -0.14062500000000000000f, - -0.02734375000000000000f, 0.03906250000000000000f, - 0.10546875000000000000f, 0.17578125000000000000f, - 0.23828125000000000000f, 0.30468750000000000000f, - 0.36718750000000000000f, 0.42578124999999994000f, - -0.45703125000000000000f, -0.42578124999999994000f, - -0.37500000000000000000f, -0.32812500000000000000f, - -0.28125000000000000000f, -0.22656250000000000000f, - -0.18359375000000000000f, -0.12500000000000000000f, - -0.07421875000000000000f, -0.00781250000000000000f, - 0.08984375000000000000f, 0.15625000000000000000f, - 0.22265625000000000000f, 0.29296875000000000000f, - 0.35937500000000000000f, 0.42578124999999994000f, - -0.46484375000000000000f, -0.43750000000000000000f, - -0.38671875000000006000f, -0.33984375000000000000f, - -0.30468750000000000000f, -0.25781250000000000000f, - -0.16406250000000000000f, -0.07812500000000000000f, - -0.02343750000000000000f, 0.04296874999999999300f, - 0.10937500000000000000f, 0.17187499999999997000f, - 0.23437499999999997000f, 0.30468750000000000000f, - 0.36718750000000000000f, 0.42968750000000000000f, - -0.42968750000000000000f, -0.37890625000000000000f, - -0.30859375000000000000f, -0.24218750000000000000f, - -0.17187499999999997000f, -0.10156250000000001000f, - -0.03125000000000000000f, 0.03125000000000000000f, - 0.08984375000000000000f, 0.14062500000000000000f, - 0.19140625000000000000f, 0.23437499999999997000f, - 0.28125000000000000000f, 0.32812500000000000000f, - 0.37890625000000000000f, 0.43359375000000000000f, - -0.42578124999999994000f, -0.36718750000000000000f, - -0.28515625000000000000f, -0.21484375000000000000f, - -0.14453125000000000000f, -0.08593749999999998600f, - -0.03125000000000000000f, 0.00781250000000000000f, - 0.05078125000000000700f, 0.09375000000000000000f, - 0.14453125000000000000f, 0.19531250000000000000f, - 0.25390625000000000000f, 0.30859375000000000000f, - 0.37109375000000000000f, 0.42968750000000000000f, - -0.44531250000000000000f, -0.39453125000000000000f, - -0.32421875000000006000f, -0.26171875000000000000f, - -0.18750000000000000000f, -0.12109375000000000000f, - -0.05859374999999999300f, -0.00390625000000000000f, - 0.03906250000000000000f, 0.08203125000000000000f, - 0.13281250000000000000f, 0.19140625000000000000f, - 0.25390625000000000000f, 0.31250000000000000000f, - 0.37500000000000000000f, 0.43359375000000000000f, - -0.46093750000000000000f, -0.43750000000000000000f, - -0.39062500000000000000f, -0.35937500000000000000f, - -0.31250000000000000000f, -0.19140625000000000000f, - -0.13281250000000000000f, -0.07421875000000000000f, - -0.02734375000000000000f, 0.03125000000000000000f, - 0.10156250000000001000f, 0.16796875000000000000f, - 0.23437499999999997000f, 0.30468750000000000000f, - 0.36718750000000000000f, 0.42968750000000000000f, - -0.46093750000000000000f, -0.43750000000000000000f, - -0.39062500000000000000f, -0.30468750000000000000f, - -0.23828125000000000000f, -0.19921875000000000000f, - -0.14843750000000000000f, -0.10156250000000001000f, - -0.02343750000000000000f, 0.02343750000000000000f, - 0.07421875000000000000f, 0.12890625000000000000f, - 0.20312500000000003000f, 0.28515625000000000000f, - 0.36718750000000000000f, 0.42968750000000000000f, - -0.45703125000000000000f, -0.42968750000000000000f, - -0.36718750000000000000f, -0.30859375000000000000f, - -0.26171875000000000000f, -0.21093750000000000000f, - -0.16406250000000000000f, -0.10546875000000000000f, - -0.06250000000000000000f, -0.02343750000000000000f, - 0.03125000000000000000f, 0.13671875000000000000f, - 0.22265625000000000000f, 0.29296875000000000000f, - 0.35937500000000000000f, 0.42578124999999994000f, - -0.44140625000000000000f, -0.35937500000000000000f, - -0.27734375000000000000f, -0.22265625000000000000f, - -0.17578125000000000000f, -0.13281250000000000000f, - -0.08593749999999998600f, -0.03906250000000000000f, - 0.01562500000000000000f, 0.06640625000000000000f, - 0.12500000000000000000f, 0.17968750000000000000f, - 0.24218750000000000000f, 0.30078125000000000000f, - 0.36328124999999994000f, 0.41796875000000000000f, - -0.46874999999999994000f, -0.42968750000000000000f, - -0.35156250000000000000f, -0.27734375000000000000f, - -0.21093750000000000000f, -0.14453125000000000000f, - -0.06640625000000000000f, -0.00390625000000000000f, - 0.06250000000000000000f, 0.12109375000000000000f, - 0.17187499999999997000f, 0.21875000000000000000f, - 0.27343750000000000000f, 0.32031250000000000000f, - 0.37890625000000000000f, 0.43359375000000000000f, - -0.42968750000000000000f, -0.39453125000000000000f, - -0.34374999999999994000f, -0.31250000000000000000f, - -0.26953125000000000000f, -0.19531250000000000000f, - -0.11718749999999999000f, -0.05078125000000000700f, - 0.00781250000000000000f, 0.06640625000000000000f, - 0.12500000000000000000f, 0.18750000000000000000f, - 0.25000000000000000000f, 0.31250000000000000000f, - 0.37890625000000000000f, 0.43359375000000000000f, - -0.46093750000000000000f, -0.43750000000000000000f, - -0.39453125000000000000f, -0.33593750000000000000f, - -0.21484375000000000000f, -0.16015625000000000000f, - -0.11328125000000000000f, -0.06250000000000000000f, - -0.01562500000000000000f, 0.03906250000000000000f, - 0.11718749999999999000f, 0.16796875000000000000f, - 0.21875000000000000000f, 0.28125000000000000000f, - 0.35156250000000000000f, 0.41796875000000000000f, - -0.43750000000000000000f, -0.40234375000000000000f, - -0.34374999999999994000f, -0.28906250000000000000f, - -0.23828125000000000000f, -0.19140625000000000000f, - -0.14062500000000000000f, -0.09375000000000000000f, - -0.03906250000000000000f, 0.01562500000000000000f, - 0.06640625000000000000f, 0.11328125000000000000f, - 0.16796875000000000000f, 0.22265625000000000000f, - 0.28906250000000000000f, 0.39843750000000000000f, - -0.46093750000000000000f, -0.41796875000000000000f, - -0.32812500000000000000f, -0.26953125000000000000f, - -0.20312500000000003000f, -0.13671875000000000000f, - -0.06640625000000000000f, -0.01953125000000000000f, - 0.03515625000000000000f, 0.07812500000000000000f, - 0.13281250000000000000f, 0.17578125000000000000f, - 0.23046875000000000000f, 0.26953125000000000000f, - 0.32812500000000000000f, 0.36328124999999994000f, - -0.41406250000000000000f, -0.37109375000000000000f, - -0.30468750000000000000f, -0.24609375000000000000f, - -0.18750000000000000000f, -0.14062500000000000000f, - -0.09375000000000000000f, -0.05078125000000000700f, - -0.00390625000000000000f, 0.03515625000000000000f, - 0.08203125000000000000f, 0.12500000000000000000f, - 0.17968750000000000000f, 0.23437499999999997000f, - 0.29687500000000000000f, 0.35937500000000000000f, - -0.45312500000000000000f, -0.39453125000000000000f, - -0.33203125000000000000f, -0.26953125000000000000f, - -0.21093750000000000000f, -0.14453125000000000000f, - -0.08203125000000000000f, -0.02343750000000000000f, - 0.04296874999999999300f, 0.09375000000000000000f, - 0.15234375000000000000f, 0.20703125000000000000f, - 0.29687500000000000000f, 0.36328124999999994000f, - 0.40625000000000006000f, 0.43750000000000000000f, - -0.44531250000000000000f, -0.40625000000000006000f, - -0.33984375000000000000f, -0.28906250000000000000f, - -0.23828125000000000000f, -0.19531250000000000000f, - -0.15625000000000000000f, -0.11718749999999999000f, - -0.07421875000000000000f, -0.03906250000000000000f, - 0.01562500000000000000f, 0.05468750000000000000f, - 0.14062500000000000000f, 0.26953125000000000000f, - 0.34765625000000000000f, 0.42578124999999994000f, - -0.43750000000000000000f, -0.38281250000000000000f, - -0.33203125000000000000f, -0.28125000000000000000f, - -0.21093750000000000000f, -0.13671875000000000000f, - -0.08984375000000000000f, -0.04296874999999999300f, - 0.01171875000000000000f, 0.07812500000000000000f, - 0.14843750000000000000f, 0.21875000000000000000f, - 0.26953125000000000000f, 0.31640625000000000000f, - 0.35156250000000000000f, 0.42187500000000000000f, - -0.45312500000000000000f, -0.39453125000000000000f, - -0.32812500000000000000f, -0.27343750000000000000f, - -0.21484375000000000000f, -0.15625000000000000000f, - -0.09765625000000000000f, -0.03125000000000000000f, - 0.04296874999999999300f, 0.11718749999999999000f, - 0.16015625000000000000f, 0.19140625000000000000f, - 0.24218750000000000000f, 0.32421875000000006000f, - 0.41015625000000000000f, 0.45703125000000000000f, - -0.44921875000000006000f, -0.38281250000000000000f, - -0.32031250000000000000f, -0.23828125000000000000f, - -0.18750000000000000000f, -0.15625000000000000000f, - -0.11328125000000000000f, -0.05468750000000000000f, - 0.02343750000000000000f, 0.08593749999999998600f, - 0.15234375000000000000f, 0.20703125000000000000f, - 0.26562500000000000000f, 0.32031250000000000000f, - 0.37500000000000000000f, 0.42968750000000000000f, - -0.44140625000000000000f, -0.37500000000000000000f, - -0.29687500000000000000f, -0.26562500000000000000f, - -0.23046875000000000000f, -0.17187499999999997000f, - -0.08203125000000000000f, -0.03125000000000000000f, - 0.01171875000000000000f, 0.05859374999999999300f, - 0.12890625000000000000f, 0.19140625000000000000f, - 0.25390625000000000000f, 0.31250000000000000000f, - 0.37109375000000000000f, 0.42968750000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00781250000000000000f, - 0.00781250000000000000f, 0.00781250000000000000f, - 0.00781250000000000000f, 0.00781250000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.01171875000000000000f, -0.02343750000000000000f, - -0.02343750000000000000f, -0.01953125000000000000f, - -0.01562500000000000000f, -0.01562500000000000000f, - -0.01171875000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - -0.01171875000000000000f, -0.01171875000000000000f, - -0.01562500000000000000f, -0.01953125000000000000f, - -0.01953125000000000000f, -0.01562500000000000000f, - -0.01171875000000000000f, -0.00781250000000000000f, - -0.00781250000000000000f, 0.00000000000000000000f, - 0.03515625000000000000f, 0.03125000000000000000f, - 0.01953125000000000000f, 0.00781250000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - -0.00781250000000000000f, -0.00781250000000000000f, - -0.00781250000000000000f, -0.00781250000000000000f, - -0.01953125000000000000f, -0.03125000000000000000f, - 0.01171875000000000000f, 0.00781250000000000000f, - 0.00781250000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00781250000000000000f, 0.03125000000000000000f, - 0.03515625000000000000f, 0.03125000000000000000f, - 0.01953125000000000000f, 0.00781250000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - -0.00781250000000000000f, -0.00781250000000000000f, - -0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00781250000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00781250000000000000f, - 0.01562500000000000000f, 0.01953125000000000000f, - 0.01562500000000000000f, 0.00781250000000000000f, - -0.00390625000000000000f, -0.01953125000000000000f, - -0.03125000000000000000f, -0.03125000000000000000f, - -0.02343750000000000000f, -0.00781250000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, -0.00781250000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00781250000000000000f, - 0.01953125000000000000f, 0.01953125000000000000f, - 0.01953125000000000000f, 0.03125000000000000000f, - 0.03515625000000000000f, 0.02734375000000000000f, - 0.02343750000000000000f, 0.01171875000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.01562500000000000000f, 0.01171875000000000000f, - 0.01562500000000000000f, 0.01171875000000000000f, - 0.01171875000000000000f, 0.01171875000000000000f, - 0.01171875000000000000f, 0.01171875000000000000f, - 0.00781250000000000000f, 0.00781250000000000000f, - 0.00781250000000000000f, 0.00781250000000000000f, - 0.00781250000000000000f, 0.00781250000000000000f, - 0.00781250000000000000f, 0.00781250000000000000f, - -0.00390625000000000000f, -0.01171875000000000000f, - -0.02343750000000000000f, -0.02734375000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.01562500000000000000f, 0.01171875000000000000f, - 0.01171875000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - -0.01562500000000000000f, 0.02734375000000000000f, - 0.01562500000000000000f, 0.01562500000000000000f, - 0.01171875000000000000f, 0.01171875000000000000f, - 0.00781250000000000000f, 0.00781250000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - -0.00781250000000000000f, -0.01953125000000000000f, - -0.02734375000000000000f, 0.01953125000000000000f, - 0.01171875000000000000f, 0.01171875000000000000f, - 0.01171875000000000000f, 0.01171875000000000000f, - 0.00781250000000000000f, 0.00781250000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - 0.01562500000000000000f, 0.01171875000000000000f, - 0.00000000000000000000f, -0.01171875000000000000f, - -0.02734375000000000000f, -0.02343750000000000000f, - -0.01953125000000000000f, -0.01171875000000000000f, - -0.00781250000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00781250000000000000f, 0.01171875000000000000f, - 0.01171875000000000000f, 0.01562500000000000000f, - 0.01171875000000000000f, 0.01562500000000000000f, - 0.01953125000000000000f, 0.01562500000000000000f, - 0.00390625000000000000f, -0.01171875000000000000f, - -0.02343750000000000000f, -0.02734375000000000000f, - 0.00781250000000000000f, 0.00781250000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - -0.01171875000000000000f, -0.00781250000000000000f, - -0.00781250000000000000f, -0.00390625000000000000f, - 0.00781250000000000000f, -0.00390625000000000000f, - -0.02343750000000000000f, -0.03515625000000000000f, - -0.01562500000000000000f, -0.00390625000000000000f, - 0.00390625000000000000f, 0.00781250000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.01171875000000000000f, 0.01171875000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - -0.01953125000000000000f, -0.02734375000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00781250000000000000f, 0.01171875000000000000f, - 0.01562500000000000000f, 0.01562500000000000000f, - 0.01171875000000000000f, 0.00000000000000000000f, - -0.01171875000000000000f, -0.01953125000000000000f, - -0.01562500000000000000f, -0.01171875000000000000f, - -0.00781250000000000000f, -0.00390625000000000000f, - 0.00781250000000000000f, 0.00781250000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, -0.00781250000000000000f, - -0.00781250000000000000f, -0.00781250000000000000f, - 0.00390625000000000000f, 0.01171875000000000000f, - 0.01171875000000000000f, 0.00000000000000000000f, - -0.01562500000000000000f, -0.02343750000000000000f, - -0.01562500000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00781250000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, -0.01953125000000000000f, - -0.02734375000000000000f, -0.01953125000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00781250000000000000f, 0.00781250000000000000f, - 0.01171875000000000000f, 0.00781250000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.01562500000000000000f, -0.02734375000000000000f, - 0.01953125000000000000f, 0.01171875000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.01171875000000000000f, - -0.02734375000000000000f, 0.00781250000000000000f, - 0.00000000000000000000f, 0.01562500000000000000f, - 0.01171875000000000000f, 0.01171875000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00781250000000000000f, 0.01171875000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00781250000000000000f, 0.00781250000000000000f, - 0.01562500000000000000f, 0.02343750000000000000f, - 0.02343750000000000000f, 0.01171875000000000000f, - 0.00000000000000000000f, -0.00781250000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.01562500000000000000f, -0.01562500000000000000f, - 0.00781250000000000000f, 0.00000000000000000000f, - 0.00781250000000000000f, 0.00781250000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - -0.01562500000000000000f, 0.01171875000000000000f, - 0.00390625000000000000f, -0.00781250000000000000f, - -0.00390625000000000000f, -0.01562500000000000000f, - 0.00781250000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - -0.00781250000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, -0.00781250000000000000f, - -0.00390625000000000000f, 0.01171875000000000000f, - 0.01562500000000000000f, 0.00000000000000000000f, - -0.01171875000000000000f, -0.01953125000000000000f, - -0.01562500000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00781250000000000000f, 0.00781250000000000000f, - 0.00000000000000000000f, -0.01171875000000000000f, - -0.01562500000000000000f, 0.00390625000000000000f, - 0.01562500000000000000f, 0.01562500000000000000f, - 0.01171875000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00781250000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - -0.01953125000000000000f, 0.01562500000000000000f, - -0.00390625000000000000f, -0.01953125000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.01562500000000000000f, - -0.02734375000000000000f, 0.01953125000000000000f, - 0.00781250000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.01171875000000000000f, -0.01171875000000000000f, - 0.02343750000000000000f, 0.01953125000000000000f, - 0.00000000000000000000f, -0.01171875000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.01171875000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - -0.01171875000000000000f, -0.01562500000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, 0.00000000000000000000f, - 0.01562500000000000000f, 0.00000000000000000000f, - -0.01562500000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00781250000000000000f, - 0.01562500000000000000f, 0.01171875000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - -0.00781250000000000000f, 0.01171875000000000000f, - -0.00781250000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, 0.00781250000000000000f, - -0.00781250000000000000f, -0.01953125000000000000f, - 0.01562500000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, 0.00781250000000000000f, - 0.00781250000000000000f, 0.00000000000000000000f, - 0.01953125000000000000f, 0.01171875000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, 0.00390625000000000000f, - 0.01171875000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - 0.00390625000000000000f, 0.01953125000000000000f, - 0.01171875000000000000f, -0.00781250000000000000f, - -0.01562500000000000000f, 0.00781250000000000000f, - -0.00781250000000000000f, 0.01953125000000000000f, - 0.01171875000000000000f, -0.00781250000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - -0.01171875000000000000f, -0.00390625000000000000f, - -0.01171875000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.00781250000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - -0.00781250000000000000f, -0.00781250000000000000f, - 0.00390625000000000000f, 0.00781250000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.01562500000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.01562500000000000000f, 0.00781250000000000000f, - -0.01171875000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, -0.00781250000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00390625000000000000f, -0.00781250000000000000f, - 0.00781250000000000000f, 0.00781250000000000000f, - -0.00781250000000000000f, 0.01171875000000000000f, - 0.00000000000000000000f, -0.00781250000000000000f, - -0.00781250000000000000f, -0.00390625000000000000f, - -0.01171875000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00781250000000000000f, - -0.01171875000000000000f, 0.00781250000000000000f, - 0.01171875000000000000f, 0.00000000000000000000f, - -0.01562500000000000000f, 0.00390625000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, -0.00781250000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, -0.00390625000000000000f, - 0.01171875000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.01171875000000000000f, - 0.00781250000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - -0.01171875000000000000f, -0.01562500000000000000f, - 0.01953125000000000000f, 0.01171875000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00781250000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00781250000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00781250000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, -0.00781250000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, 0.01171875000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, -0.01171875000000000000f, - 0.01171875000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, -0.00781250000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, 0.00390625000000000000f, - 0.00781250000000000000f, -0.00781250000000000000f, - 0.00781250000000000000f, 0.01171875000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - -0.00781250000000000000f, 0.01562500000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - -0.01953125000000000000f, 0.01171875000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00781250000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00390625000000000000f, 0.00781250000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00781250000000000000f, -0.01171875000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.01562500000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, -0.01562500000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, -0.00781250000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - 0.00781250000000000000f, -0.01562500000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00390625000000000000f, - -0.00781250000000000000f, 0.01171875000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, -0.00390625000000000000f, - 0.00390625000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00390625000000000000f, -0.00781250000000000000f, - 0.00000000000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00781250000000000000f, - -0.01171875000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - -0.00781250000000000000f, 0.01171875000000000000f, - -0.00390625000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00390625000000000000f, 0.00781250000000000000f, - -0.01562500000000000000f, -0.00390625000000000000f, - -0.00781250000000000000f, -0.00390625000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - -0.00390625000000000000f, 0.00390625000000000000f, - 0.00000000000000000000f, 0.00390625000000000000f, - 0.00390625000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f, - 0.00000000000000000000f, 0.00000000000000000000f -}; - -const SKP_Silk_NLSF_CBS_FLP SKP_Silk_NLSF_CB1_16_Stage_info_FLP[ NLSF_MSVQ_CB1_16_STAGES ] = -{ - { 32, &SKP_Silk_NLSF_MSVQ_CB1_16[ 16 * 0 ], &SKP_Silk_NLSF_MSVQ_CB1_16_rates[ 0 ] }, - { 8, &SKP_Silk_NLSF_MSVQ_CB1_16[ 16 * 32 ], &SKP_Silk_NLSF_MSVQ_CB1_16_rates[ 32 ] }, - { 8, &SKP_Silk_NLSF_MSVQ_CB1_16[ 16 * 40 ], &SKP_Silk_NLSF_MSVQ_CB1_16_rates[ 40 ] }, - { 8, &SKP_Silk_NLSF_MSVQ_CB1_16[ 16 * 48 ], &SKP_Silk_NLSF_MSVQ_CB1_16_rates[ 48 ] }, - { 8, &SKP_Silk_NLSF_MSVQ_CB1_16[ 16 * 56 ], &SKP_Silk_NLSF_MSVQ_CB1_16_rates[ 56 ] }, - { 8, &SKP_Silk_NLSF_MSVQ_CB1_16[ 16 * 64 ], &SKP_Silk_NLSF_MSVQ_CB1_16_rates[ 64 ] }, - { 8, &SKP_Silk_NLSF_MSVQ_CB1_16[ 16 * 72 ], &SKP_Silk_NLSF_MSVQ_CB1_16_rates[ 72 ] }, - { 8, &SKP_Silk_NLSF_MSVQ_CB1_16[ 16 * 80 ], &SKP_Silk_NLSF_MSVQ_CB1_16_rates[ 80 ] }, - { 8, &SKP_Silk_NLSF_MSVQ_CB1_16[ 16 * 88 ], &SKP_Silk_NLSF_MSVQ_CB1_16_rates[ 88 ] }, - { 8, &SKP_Silk_NLSF_MSVQ_CB1_16[ 16 * 96 ], &SKP_Silk_NLSF_MSVQ_CB1_16_rates[ 96 ] } -}; - -const SKP_Silk_NLSF_CB_FLP SKP_Silk_NLSF_CB1_16_FLP = -{ - NLSF_MSVQ_CB1_16_STAGES, - SKP_Silk_NLSF_CB1_16_Stage_info_FLP, - SKP_Silk_NLSF_MSVQ_CB1_16_ndelta_min, - SKP_Silk_NLSF_MSVQ_CB1_16_CDF, - SKP_Silk_NLSF_MSVQ_CB1_16_CDF_start_ptr, - SKP_Silk_NLSF_MSVQ_CB1_16_CDF_middle_idx -}; - diff --git a/src_FLP/SKP_Silk_tables_other_FLP.c b/src_FLP/SKP_Silk_tables_other_FLP.c deleted file mode 100644 index 00384b4b97aead003e55efb1d37688a1e03a0b83..0000000000000000000000000000000000000000 --- a/src_FLP/SKP_Silk_tables_other_FLP.c +++ /dev/null @@ -1,35 +0,0 @@ -/*********************************************************************** -Copyright (c) 2006-2010, Skype Limited. All rights reserved. -Redistribution and use in source and binary forms, with or without -modification, (subject to the limitations in the disclaimer below) -are permitted provided that the following conditions are met: -- Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. -- Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -- Neither the name of Skype Limited, nor the names of specific -contributors, may be used to endorse or promote products derived from -this software without specific prior written permission. -NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED -BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, -BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -***********************************************************************/ - -#include "SKP_Silk_structs_FLP.h" -#include "SKP_Silk_tables_FLP.h" - -const SKP_float SKP_Silk_HarmShapeFIR_FLP[ HARM_SHAPE_FIR_TAPS ] = { 16384.0f / 65536.0f, 32767.0f / 65536.0f, 16384.0f / 65536.0f }; - -const SKP_float SKP_Silk_Quantization_Offsets[ 2 ][ 2 ] = { - { OFFSET_VL_Q10 / 1024.0f, OFFSET_VH_Q10 / 1024.0f }, { OFFSET_UVL_Q10 / 1024.0f, OFFSET_UVH_Q10 / 1024.0f } -}; diff --git a/src_FLP/SKP_Silk_wrappers_FLP.c b/src_FLP/SKP_Silk_wrappers_FLP.c index e27cf2639b0f596c1c0bacbe4dd9493046ee08b7..6a8ae0e018a7a9793e9aef92a0739e3e92dbf990 100644 --- a/src_FLP/SKP_Silk_wrappers_FLP.c +++ b/src_FLP/SKP_Silk_wrappers_FLP.c @@ -76,7 +76,7 @@ void SKP_Silk_NLSF2A_stable_FLP( /* LSF stabilizer, for a single input data vector */ void SKP_Silk_NLSF_stabilize_FLP( SKP_float *pNLSF, /* I/O (Un)stable NLSF vector [ LPC_order ] */ - const SKP_float *pNDelta_min, /* I Normalized delta min vector[LPC_order+1]*/ + const SKP_int *pNDelta_min_Q15, /* I Normalized delta min vector[LPC_order+1]*/ const SKP_int LPC_order /* I LPC order */ ) { @@ -84,10 +84,10 @@ void SKP_Silk_NLSF_stabilize_FLP( SKP_int NLSF_Q15[ MAX_LPC_ORDER ], ndelta_min_Q15[ MAX_LPC_ORDER + 1 ]; for( i = 0; i < LPC_order; i++ ) { - NLSF_Q15[ i ] = ( SKP_int )SKP_float2int( pNLSF[ i ] * 32768.0f ); - ndelta_min_Q15[ i ] = ( SKP_int )SKP_float2int( pNDelta_min[ i ] * 32768.0f ); + NLSF_Q15[ i ] = ( SKP_int )SKP_float2int( pNLSF[ i ] * 32768.0f ); + ndelta_min_Q15[ i ] = ( SKP_int )SKP_float2int( pNDelta_min_Q15[ i ] ); } - ndelta_min_Q15[ LPC_order ] = ( SKP_int )SKP_float2int( pNDelta_min[ LPC_order ] * 32768.0f ); + ndelta_min_Q15[ LPC_order ] = ( SKP_int )SKP_float2int( pNDelta_min_Q15[ LPC_order ] ); /* NLSF stabilizer, for a single input data vector */ SKP_Silk_NLSF_stabilize( NLSF_Q15, ndelta_min_Q15, LPC_order ); @@ -243,3 +243,34 @@ void SKP_Silk_NSQ_wrapper_FLP( } } } + +/***********************************************/ +/* Floating-point Silk LTP quantiation wrapper */ +/***********************************************/ +void SKP_Silk_quant_LTP_gains_FLP( + SKP_float B[ MAX_NB_SUBFR * LTP_ORDER ], /* I/O (Un-)quantized LTP gains */ + SKP_int cbk_index[ MAX_NB_SUBFR ], /* O Codebook index */ + SKP_int *periodicity_index, /* O Periodicity index */ + const SKP_float W[ MAX_NB_SUBFR * LTP_ORDER * LTP_ORDER ], /* I Error weights */ + const SKP_int mu_Q10, /* I Mu value (R/D tradeoff) */ + const SKP_int lowComplexity, /* I Flag for low complexity */ + const SKP_int nb_subfr /* I number of subframes */ +) +{ + SKP_int i; + SKP_int16 B_Q14[ MAX_NB_SUBFR * LTP_ORDER ]; + SKP_int32 W_Q18[ MAX_NB_SUBFR*LTP_ORDER*LTP_ORDER ]; + + for( i = 0; i < MAX_NB_SUBFR * LTP_ORDER; i++ ) { + B_Q14[ i ] = (SKP_int16)SKP_float2int( B[ i ] * 16384.0f ); + } + for( i = 0; i < MAX_NB_SUBFR * LTP_ORDER * LTP_ORDER; i++ ) { + W_Q18[ i ] = (SKP_int32)SKP_float2int( W[ i ] * 262144.0f ); + } + + SKP_Silk_quant_LTP_gains( B_Q14, cbk_index, periodicity_index, W_Q18, mu_Q10, lowComplexity, nb_subfr ); + + for( i = 0; i < MAX_NB_SUBFR * LTP_ORDER; i++ ) { + B[ i ] = ( (SKP_float)B_Q14[ i ] ) / 16384.0f; + } +} diff --git a/src_FLP/Silk_FLP.vcproj b/src_FLP/Silk_FLP.vcproj deleted file mode 100644 index 9decc1e01047d1a6a39e42713880f828045c96f1..0000000000000000000000000000000000000000 --- a/src_FLP/Silk_FLP.vcproj +++ /dev/null @@ -1,328 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="8.00" - Name="Silk_FLP" - ProjectGUID="{56B91D01-9150-4BBF-AFA1-5B68AB991B76}" - RootNamespace="Silk" - Keyword="Win32Proj" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory="$(SolutionDir)" - IntermediateDirectory="$(ConfigurationName)" - ConfigurationType="4" - CharacterSet="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - FavorSizeOrSpeed="0" - AdditionalIncludeDirectories="../../../celt-0.8.0/libcelt;../interface;../src_common;../src_SigProc_FLP;../src_SigProc_FIX" - PreprocessorDefinitions="WIN32;_DEBUG;_LIB;HAVE_CONFIG_H" - MinimalRebuild="true" - BasicRuntimeChecks="3" - RuntimeLibrary="1" - FloatingPointModel="2" - UsePrecompiledHeader="0" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="4" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - OutputFile="SKP_Silk_FLP_Win32_debug.lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - CommandLine="" - /> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory="$(SolutionDir)" - IntermediateDirectory="$(ConfigurationName)" - ConfigurationType="4" - CharacterSet="1" - WholeProgramOptimization="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - InlineFunctionExpansion="0" - FavorSizeOrSpeed="0" - AdditionalIncludeDirectories="../../../celt-0.8.0/libcelt;../interface;../src_common;../src_SigProc_FLP;../src_SigProc_FIX" - PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_CONFIG_H" - GeneratePreprocessedFile="0" - RuntimeLibrary="0" - FloatingPointModel="2" - UsePrecompiledHeader="0" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - OutputFile="SKP_Silk_FLP_Win32_mt.lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - CommandLine="" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="Source Files" - Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx" - UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" - > - <File - RelativePath=".\SKP_Silk_apply_sine_window_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_control_codec_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_corrMatrix_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_encode_frame_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_find_LPC_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_find_LTP_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_find_pitch_lags_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_find_pred_coefs_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_HP_variable_cutoff_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_init_encoder_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_LPC_analysis_filter_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_LTP_analysis_filter_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_LTP_scale_ctrl_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_NLSF_MSVQ_decode_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_NLSF_MSVQ_encode_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_NLSF_VQ_rate_distortion_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_NLSF_VQ_sum_error_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_noise_shape_analysis_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_prefilter_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_process_gains_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_process_NLSFs_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_quant_LTP_gains_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_regularize_correlations_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_residual_energy_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_solve_LS_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_tables_NLSF_CB0_10_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_tables_NLSF_CB0_16_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_tables_NLSF_CB1_10_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_tables_NLSF_CB1_16_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_tables_other_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_VQ_nearest_neighbor_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_warped_autocorrelation_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_wrappers_FLP.c" - > - </File> - </Filter> - <Filter - Name="Header Files" - Filter="h;hpp;hxx;hm;inl;inc;xsd" - UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}" - > - <File - RelativePath=".\SKP_Silk_assembler_FLP.h" - > - </File> - <File - RelativePath=".\SKP_Silk_define_FLP.h" - > - </File> - <File - RelativePath=".\SKP_Silk_main_FLP.h" - > - </File> - <File - RelativePath=".\SKP_Silk_perceptual_parameters_FLP.h" - > - </File> - <File - RelativePath=".\SKP_Silk_structs_FLP.h" - > - </File> - <File - RelativePath=".\SKP_Silk_tables_FLP.h" - > - </File> - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/src_FLP/src_FLP.vcxproj b/src_FLP/src_FLP.vcxproj new file mode 100644 index 0000000000000000000000000000000000000000..97d8035c30a1796370bb6d1bc1c4902171aeb12f --- /dev/null +++ b/src_FLP/src_FLP.vcxproj @@ -0,0 +1,113 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|Win32"> + <Configuration>Debug</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{9C4961D2-5DDB-40C7-9BE8-CA918DC4E782}</ProjectGuid> + <Keyword>Win32Proj</Keyword> + <RootNamespace>src_FLP</RootNamespace> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <CharacterSet>Unicode</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <WholeProgramOptimization>true</WholeProgramOptimization> + <CharacterSet>Unicode</CharacterSet> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="ExtensionSettings"> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup /> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <ClCompile> + <PrecompiledHeader> + </PrecompiledHeader> + <WarningLevel>Level3</WarningLevel> + <Optimization>Disabled</Optimization> + <PreprocessorDefinitions>HAVE_CONFIG_H;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>../interface;../src_SigProc_FLP;../src_SigProc_FIX;../src_common;../../celt/libcelt</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Windows</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <PrecompiledHeader> + </PrecompiledHeader> + <Optimization>MaxSpeed</Optimization> + <FunctionLevelLinking>true</FunctionLevelLinking> + <IntrinsicFunctions>true</IntrinsicFunctions> + <PreprocessorDefinitions>HAVE_CONFIG_H;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>../interface;../src_SigProc_FLP;../src_SigProc_FIX;../src_common;../../celt/libcelt</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Windows</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <OptimizeReferences>true</OptimizeReferences> + </Link> + </ItemDefinitionGroup> + <ItemGroup> + <None Include="ReadMe.txt" /> + </ItemGroup> + <ItemGroup> + <ClInclude Include="SKP_Silk_assembler_FLP.h" /> + <ClInclude Include="SKP_Silk_main_FLP.h" /> + <ClInclude Include="SKP_Silk_structs_FLP.h" /> + </ItemGroup> + <ItemGroup> + <ClCompile Include="SKP_Silk_apply_sine_window_FLP.c" /> + <ClCompile Include="SKP_Silk_control_codec_FLP.c" /> + <ClCompile Include="SKP_Silk_corrMatrix_FLP.c" /> + <ClCompile Include="SKP_Silk_encode_frame_FLP.c" /> + <ClCompile Include="SKP_Silk_find_LPC_FLP.c" /> + <ClCompile Include="SKP_Silk_find_LTP_FLP.c" /> + <ClCompile Include="SKP_Silk_find_pitch_lags_FLP.c" /> + <ClCompile Include="SKP_Silk_find_pred_coefs_FLP.c" /> + <ClCompile Include="SKP_Silk_HP_variable_cutoff_FLP.c" /> + <ClCompile Include="SKP_Silk_init_encoder_FLP.c" /> + <ClCompile Include="SKP_Silk_LPC_analysis_filter_FLP.c" /> + <ClCompile Include="SKP_Silk_LTP_analysis_filter_FLP.c" /> + <ClCompile Include="SKP_Silk_LTP_scale_ctrl_FLP.c" /> + <ClCompile Include="SKP_Silk_NLSF_MSVQ_decode_FLP.c" /> + <ClCompile Include="SKP_Silk_NLSF_MSVQ_encode_FLP.c" /> + <ClCompile Include="SKP_Silk_NLSF_VQ_rate_distortion_FLP.c" /> + <ClCompile Include="SKP_Silk_NLSF_VQ_sum_error_FLP.c" /> + <ClCompile Include="SKP_Silk_NLSF_VQ_weights_laroia_FLP.c" /> + <ClCompile Include="SKP_Silk_noise_shape_analysis_FLP.c" /> + <ClCompile Include="SKP_Silk_prefilter_FLP.c" /> + <ClCompile Include="SKP_Silk_process_gains_FLP.c" /> + <ClCompile Include="SKP_Silk_process_NLSFs_FLP.c" /> + <ClCompile Include="SKP_Silk_regularize_correlations_FLP.c" /> + <ClCompile Include="SKP_Silk_residual_energy_FLP.c" /> + <ClCompile Include="SKP_Silk_solve_LS_FLP.c" /> + <ClCompile Include="SKP_Silk_warped_autocorrelation_FLP.c" /> + <ClCompile Include="SKP_Silk_wrappers_FLP.c" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project> \ No newline at end of file diff --git a/src_FLP/src_FLP.vcxproj.filters b/src_FLP/src_FLP.vcxproj.filters new file mode 100644 index 0000000000000000000000000000000000000000..eb30f7f181ef50cac74391f5b375049c5e22f4eb --- /dev/null +++ b/src_FLP/src_FLP.vcxproj.filters @@ -0,0 +1,114 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Source Files"> + <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> + <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> + </Filter> + <Filter Include="Header Files"> + <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> + <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions> + </Filter> + <Filter Include="Resource Files"> + <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> + <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> + </Filter> + </ItemGroup> + <ItemGroup> + <None Include="ReadMe.txt" /> + </ItemGroup> + <ItemGroup> + <ClInclude Include="SKP_Silk_assembler_FLP.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="SKP_Silk_main_FLP.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="SKP_Silk_structs_FLP.h"> + <Filter>Header Files</Filter> + </ClInclude> + </ItemGroup> + <ItemGroup> + <ClCompile Include="SKP_Silk_apply_sine_window_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_control_codec_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_corrMatrix_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_encode_frame_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_find_LPC_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_find_LTP_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_find_pitch_lags_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_find_pred_coefs_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_HP_variable_cutoff_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_init_encoder_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_LPC_analysis_filter_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_LTP_analysis_filter_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_LTP_scale_ctrl_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_NLSF_MSVQ_decode_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_NLSF_MSVQ_encode_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_NLSF_VQ_rate_distortion_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_NLSF_VQ_sum_error_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_NLSF_VQ_weights_laroia_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_noise_shape_analysis_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_prefilter_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_process_gains_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_process_NLSFs_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_regularize_correlations_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_residual_energy_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_solve_LS_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_warped_autocorrelation_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_wrappers_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + </ItemGroup> +</Project> \ No newline at end of file diff --git a/src_SigProc_FIX/SKP_Silk_NLSF2A.c b/src_SigProc_FIX/SKP_Silk_NLSF2A.c index b262068f04ae9a08c1e4108a0494c2f4595a0772..fc477a5857c526d5b7fac0ef825903549d6f152f 100644 --- a/src_SigProc_FIX/SKP_Silk_NLSF2A.c +++ b/src_SigProc_FIX/SKP_Silk_NLSF2A.c @@ -72,7 +72,7 @@ void SKP_Silk_NLSF2A( SKP_int32 a_int32[SKP_Silk_MAX_ORDER_LPC]; SKP_int32 maxabs, absval, idx=0, sc_Q16; - SKP_assert(LSF_COS_TAB_SZ_FIX == 128); + SKP_assert( LSF_COS_TAB_SZ_FIX == 128 ); /* convert LSFs to 2*cos(LSF(i)), using piecewise linear curve from table */ for( k = 0; k < d; k++ ) { diff --git a/src_SigProc_FIX/SKP_Silk_NLSF_stabilize.c b/src_SigProc_FIX/SKP_Silk_NLSF_stabilize.c index 19e134fd74f5cc541e48dfb659d3dbc3bdb50425..9c595d997755c9ee779f3486b5fc408ca9ddf52d 100644 --- a/src_SigProc_FIX/SKP_Silk_NLSF_stabilize.c +++ b/src_SigProc_FIX/SKP_Silk_NLSF_stabilize.c @@ -45,10 +45,10 @@ void SKP_Silk_NLSF_stabilize( const SKP_int L /* I: Number of NLSF parameters in the input vector */ ) { - SKP_int center_freq_Q15, diff_Q15, min_center_Q15, max_center_Q15; - SKP_int32 min_diff_Q15; - SKP_int loops; - SKP_int i, I=0, k; + SKP_int center_freq_Q15, diff_Q15, min_center_Q15, max_center_Q15; + SKP_int32 min_diff_Q15; + SKP_int loops; + SKP_int i, I=0, k; /* This is necessary to ensure an output within range of a SKP_int16 */ SKP_assert( NDeltaMin_Q15[L] >= 1 ); diff --git a/src_SigProc_FIX/SKP_Silk_biquad.c b/src_SigProc_FIX/SKP_Silk_biquad.c index 699a43d0090214480aaa793f376f215697a93dfe..39392f023fe65fb8347fde97341ddc12e03f5784 100644 --- a/src_SigProc_FIX/SKP_Silk_biquad.c +++ b/src_SigProc_FIX/SKP_Silk_biquad.c @@ -48,7 +48,7 @@ void SKP_Silk_biquad( ) { SKP_int k, in16; - SKP_int32 A0_neg, A1_neg, S0, S1, out32, tmp32; + SKP_int32 A0_neg, A1_neg, S0, S1, out32; S0 = S[ 0 ]; S1 = S[ 1 ]; @@ -64,8 +64,7 @@ void SKP_Silk_biquad( S1 = SKP_LSHIFT( SKP_SMULWB( out32, A1_neg ), 3 ); S1 = SKP_SMLABB( S1, in16, B[ 2 ] ); - tmp32 = SKP_RSHIFT_ROUND( out32, 13 ) + 1; - out[ k ] = (SKP_int16)SKP_SAT16( tmp32 ); + out[ k ] = (SKP_int16)SKP_SAT16( SKP_RSHIFT_ROUND( out32, 13 ) ); } S[ 0 ] = S0; S[ 1 ] = S1; diff --git a/src_SigProc_FIX/SKP_Silk_biquad_alt.c b/src_SigProc_FIX/SKP_Silk_biquad_alt.c index 658d4d6b8b0175386a6118ce7852065d5489ef70..4f114299f3fa5b031bd3ed9d6c96bb8ce6ab78a7 100644 --- a/src_SigProc_FIX/SKP_Silk_biquad_alt.c +++ b/src_SigProc_FIX/SKP_Silk_biquad_alt.c @@ -39,7 +39,7 @@ void SKP_Silk_biquad_alt( const SKP_int16 *in, /* I: Input signal */ const SKP_int32 *B_Q28, /* I: MA coefficients [3] */ const SKP_int32 *A_Q28, /* I: AR coefficients [2] */ - SKP_int32 *S, /* I/O: State vector [2] */ + SKP_int32 *S, /* I/O: State vector [2] */ SKP_int16 *out, /* O: Output signal */ const SKP_int32 len /* I: Signal length (must be even) */ ) @@ -59,15 +59,15 @@ void SKP_Silk_biquad_alt( inval = in[ k ]; out32_Q14 = SKP_LSHIFT( SKP_SMLAWB( S[ 0 ], B_Q28[ 0 ], inval ), 2 ); - S[ 0 ] = S[1] + SKP_RSHIFT( SKP_SMULWB( out32_Q14, A0_L_Q28 ), 14 ); + S[ 0 ] = S[1] + SKP_RSHIFT_ROUND( SKP_SMULWB( out32_Q14, A0_L_Q28 ), 14 ); S[ 0 ] = SKP_SMLAWB( S[ 0 ], out32_Q14, A0_U_Q28 ); S[ 0 ] = SKP_SMLAWB( S[ 0 ], B_Q28[ 1 ], inval); - S[ 1 ] = SKP_RSHIFT( SKP_SMULWB( out32_Q14, A1_L_Q28 ), 14 ); + S[ 1 ] = SKP_RSHIFT_ROUND( SKP_SMULWB( out32_Q14, A1_L_Q28 ), 14 ); S[ 1 ] = SKP_SMLAWB( S[ 1 ], out32_Q14, A1_U_Q28 ); S[ 1 ] = SKP_SMLAWB( S[ 1 ], B_Q28[ 2 ], inval ); /* Scale back to Q0 and saturate */ - out[ k ] = (SKP_int16)SKP_SAT16( SKP_RSHIFT( out32_Q14, 14 ) + 2 ); + out[ k ] = (SKP_int16)SKP_SAT16( SKP_RSHIFT( out32_Q14 + (1<<14) - 1, 14 ) ); } } diff --git a/src_SigProc_FIX/SKP_Silk_common_pitch_est_defines.h b/src_SigProc_FIX/SKP_Silk_common_pitch_est_defines.h index e7f5ce778008b65b66540e1fb193b2b760cf210a..cf0a456dfae12bd7e4770da331e9ae4eecd80fb3 100644 --- a/src_SigProc_FIX/SKP_Silk_common_pitch_est_defines.h +++ b/src_SigProc_FIX/SKP_Silk_common_pitch_est_defines.h @@ -47,7 +47,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define PE_MAX_FRAME_LENGTH_ST_2 (PE_MAX_FRAME_LENGTH >> 1) #define PE_MAX_SF_FRAME_LENGTH (PE_SUB_FRAME * PE_MAX_FS_KHZ) -#define PE_MAX_LAG_MS 18 /* 18 ms -> 56 Hz */ +#define PE_MAX_LAG_MS 18 /* 18 ms -> 56 Hz */ #define PE_MIN_LAG_MS 2 /* 2 ms -> 500 Hz */ #define PE_MAX_LAG (PE_MAX_LAG_MS * PE_MAX_FS_KHZ) #define PE_MIN_LAG (PE_MIN_LAG_MS * PE_MAX_FS_KHZ) @@ -71,11 +71,14 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define PE_NB_CBKS_STAGE3_10MS 12 #define PE_NB_CBKS_STAGE2_10MS 3 +#define PE_SHORTLAG_BIAS 0.2f /* for logarithmic weighting */ +#define PE_PREVLAG_BIAS 0.2f /* for logarithmic weighting */ +#define PE_FLATCONTOUR_BIAS 0.05f + extern const SKP_int8 SKP_Silk_CB_lags_stage2[ PE_MAX_NB_SUBFR ][ PE_NB_CBKS_STAGE2_EXT ]; extern const SKP_int8 SKP_Silk_CB_lags_stage3[ PE_MAX_NB_SUBFR ][ PE_NB_CBKS_STAGE3_MAX ]; extern const SKP_int8 SKP_Silk_Lag_range_stage3[ SKP_Silk_PE_MAX_COMPLEX + 1 ] [ PE_MAX_NB_SUBFR ][ 2 ]; extern const SKP_int8 SKP_Silk_nb_cbk_searchs_stage3[ SKP_Silk_PE_MAX_COMPLEX + 1 ]; -extern const SKP_int8 SKP_Silk_cbk_offsets_stage3[ SKP_Silk_PE_MAX_COMPLEX + 1 ]; /* Tables added for 10 ms frames */ extern const SKP_int8 SKP_Silk_CB_lags_stage2_10_ms[ PE_MAX_NB_SUBFR >> 1][ 3 ]; diff --git a/src_SigProc_FIX/SKP_Silk_debug.c b/src_SigProc_FIX/SKP_Silk_debug.c index 31468f739b9cd7a3a03e322a518447f2dea0ee11..29c67c82ca1e9985e285fbe29e68d35a6272b28f 100644 --- a/src_SigProc_FIX/SKP_Silk_debug.c +++ b/src_SigProc_FIX/SKP_Silk_debug.c @@ -167,3 +167,9 @@ void SKP_TimerSave(char *file_name) #endif #endif /* SKP_TIC_TOC */ + +#if SKP_DEBUG +FILE *SKP_debug_store_fp[ SKP_NUM_STORES_MAX ]; +int SKP_debug_store_count = 0; +#endif /* SKP_DEBUG */ + diff --git a/src_SigProc_FIX/SKP_Silk_pitch_analysis_core.c b/src_SigProc_FIX/SKP_Silk_pitch_analysis_core.c index 0c36f0649036f9ffa4785744c6bd1a623a9a8971..8f43abe776e1cd70ef65204c152f1ad5533e900c 100644 --- a/src_SigProc_FIX/SKP_Silk_pitch_analysis_core.c +++ b/src_SigProc_FIX/SKP_Silk_pitch_analysis_core.c @@ -98,8 +98,8 @@ SKP_int SKP_Silk_pitch_analysis_core( /* O Voicing estimate: 0 voiced, 1 u SKP_int sf_length, sf_length_8kHz, sf_length_4kHz; SKP_int min_lag, min_lag_8kHz, min_lag_4kHz; SKP_int max_lag, max_lag_8kHz, max_lag_4kHz; - SKP_int32 contour_bias, diff, lz, lshift; - SKP_int cbk_offset, nb_cbk_search, cbk_size; + SKP_int32 contour_bias_Q20, diff, lz, lshift; + SKP_int nb_cbk_search, cbk_size; SKP_int32 delta_lag_log2_sqr_Q7, lag_log2_Q7, prevLag_log2_Q7, prev_lag_bias_Q15, corr_thres_Q15; const SKP_int8 *Lag_CB_ptr; /* Check for valid sampling frequency */ @@ -122,9 +122,9 @@ SKP_int SKP_Silk_pitch_analysis_core( /* O Voicing estimate: 0 voiced, 1 u min_lag = PE_MIN_LAG_MS * Fs_kHz; min_lag_4kHz = PE_MIN_LAG_MS * 4; min_lag_8kHz = PE_MIN_LAG_MS * 8; - max_lag = PE_MAX_LAG_MS * Fs_kHz; + max_lag = PE_MAX_LAG_MS * Fs_kHz - 1; max_lag_4kHz = PE_MAX_LAG_MS * 4; - max_lag_8kHz = PE_MAX_LAG_MS * 8; + max_lag_8kHz = PE_MAX_LAG_MS * 8 - 1; SKP_memset( C, 0, sizeof( SKP_int16 ) * nb_subfr * ( ( PE_MAX_LAG >> 1 ) + 5) ); @@ -391,7 +391,7 @@ SKP_int SKP_Silk_pitch_analysis_core( /* O Voicing estimate: 0 voiced, 1 u nb_cbk_search = PE_NB_CBKS_STAGE2; } corr_thres_Q15 = SKP_RSHIFT( SKP_SMULBB( search_thres2_Q15, search_thres2_Q15 ), 13 ); - }else{ + } else { cbk_size = PE_NB_CBKS_STAGE2_10MS; Lag_CB_ptr = &SKP_Silk_CB_lags_stage2_10_ms[ 0 ][ 0 ]; nb_cbk_search = PE_NB_CBKS_STAGE2_10MS; @@ -420,16 +420,16 @@ SKP_int SKP_Silk_pitch_analysis_core( /* O Voicing estimate: 0 voiced, 1 u /* Bias towards shorter lags */ lag_log2_Q7 = SKP_Silk_lin2log( (SKP_int32)d ); /* Q7 */ SKP_assert( lag_log2_Q7 == SKP_SAT16( lag_log2_Q7 ) ); - SKP_assert( nb_subfr * PE_SHORTLAG_BIAS_Q15 == SKP_SAT16( nb_subfr * PE_SHORTLAG_BIAS_Q15 ) ); - CCmax_new_b = CCmax_new - SKP_RSHIFT( SKP_SMULBB( nb_subfr * PE_SHORTLAG_BIAS_Q15, lag_log2_Q7 ), 7 ); /* Q15 */ + SKP_assert( nb_subfr * SKP_FIX_CONST( PE_SHORTLAG_BIAS, 15 ) == SKP_SAT16( nb_subfr * SKP_FIX_CONST( PE_SHORTLAG_BIAS, 15 ) ) ); + CCmax_new_b = CCmax_new - SKP_RSHIFT( SKP_SMULBB( nb_subfr * SKP_FIX_CONST( PE_SHORTLAG_BIAS, 15 ), lag_log2_Q7 ), 7 ); /* Q15 */ /* Bias towards previous lag */ - SKP_assert( nb_subfr * PE_PREVLAG_BIAS_Q15 == SKP_SAT16( nb_subfr * PE_PREVLAG_BIAS_Q15 ) ); + SKP_assert( nb_subfr * SKP_FIX_CONST( PE_PREVLAG_BIAS, 15 ) == SKP_SAT16( nb_subfr * SKP_FIX_CONST( PE_PREVLAG_BIAS, 15 ) ) ); if( prevLag > 0 ) { delta_lag_log2_sqr_Q7 = lag_log2_Q7 - prevLag_log2_Q7; SKP_assert( delta_lag_log2_sqr_Q7 == SKP_SAT16( delta_lag_log2_sqr_Q7 ) ); delta_lag_log2_sqr_Q7 = SKP_RSHIFT( SKP_SMULBB( delta_lag_log2_sqr_Q7, delta_lag_log2_sqr_Q7 ), 7 ); - prev_lag_bias_Q15 = SKP_RSHIFT( SKP_SMULBB( nb_subfr * PE_PREVLAG_BIAS_Q15, ( *LTPCorr_Q15 ) ), 15 ); /* Q15 */ + prev_lag_bias_Q15 = SKP_RSHIFT( SKP_SMULBB( nb_subfr * SKP_FIX_CONST( PE_PREVLAG_BIAS, 15 ), *LTPCorr_Q15 ), 15 ); /* Q15 */ prev_lag_bias_Q15 = SKP_DIV32( SKP_MUL( prev_lag_bias_Q15, delta_lag_log2_sqr_Q7 ), delta_lag_log2_sqr_Q7 + ( 1 << 6 ) ); CCmax_new_b -= prev_lag_bias_Q15; /* Q15 */ } @@ -505,22 +505,20 @@ SKP_int SKP_Silk_pitch_analysis_core( /* O Voicing estimate: 0 voiced, 1 u lag_counter = 0; SKP_assert( lag == SKP_SAT16( lag ) ); - contour_bias = SKP_DIV32_16( PE_FLATCONTOUR_BIAS_Q20, lag ); + contour_bias_Q20 = SKP_DIV32_16( SKP_FIX_CONST( PE_FLATCONTOUR_BIAS, 20 ), lag ); /* Setup cbk parameters acording to complexity setting and frame length */ if( nb_subfr == PE_MAX_NB_SUBFR ) { - nb_cbk_search = (SKP_int)SKP_Silk_nb_cbk_searchs_stage3[ complexity ]; + nb_cbk_search = (SKP_int)SKP_Silk_nb_cbk_searchs_stage3[ complexity ]; cbk_size = PE_NB_CBKS_STAGE3_MAX; - cbk_offset = (SKP_int)SKP_Silk_cbk_offsets_stage3[ complexity ]; Lag_CB_ptr = &SKP_Silk_CB_lags_stage3[ 0 ][ 0 ]; } else { nb_cbk_search = PE_NB_CBKS_STAGE3_10MS; cbk_size = PE_NB_CBKS_STAGE3_10MS; - cbk_offset = 0; Lag_CB_ptr = &SKP_Silk_CB_lags_stage3_10_ms[ 0 ][ 0 ]; } for( d = start_lag; d <= end_lag; d++ ) { - for( j = cbk_offset; j < ( cbk_offset + nb_cbk_search ); j++ ) { + for( j = 0; j < nb_cbk_search; j++ ) { cross_corr = 0; energy = 0; for( k = 0; k < nb_subfr; k++ ) { @@ -544,9 +542,7 @@ SKP_int SKP_Silk_pitch_analysis_core( /* O Voicing estimate: 0 voiced, 1 u CCmax_new = SKP_LSHIFT( CCmax_new, 3 ); } /* Reduce depending on flatness of contour */ - diff = j - SKP_RSHIFT( cbk_size, 1 ); - diff = SKP_MUL( diff, diff ); - diff = SKP_int16_MAX - SKP_RSHIFT( SKP_MUL( contour_bias, diff ), 5 ); /* Q20 -> Q15 */ + diff = SKP_int16_MAX - SKP_RSHIFT( SKP_MUL( contour_bias_Q20, j ), 5 ); /* Q20 -> Q15 */ SKP_assert( diff == SKP_SAT16( diff ) ); CCmax_new = SKP_LSHIFT( SKP_SMULWB( CCmax_new, diff ), 1 ); } else { @@ -554,7 +550,7 @@ SKP_int SKP_Silk_pitch_analysis_core( /* O Voicing estimate: 0 voiced, 1 u } if( CCmax_new > CCmax && - ( d + (SKP_int)SKP_Silk_CB_lags_stage3[ 0 ][ j ] ) <= max_lag + ( d + SKP_Silk_CB_lags_stage3[ 0 ][ j ] ) <= max_lag ) { CCmax = CCmax_new; lag_new = d; @@ -600,7 +596,7 @@ void SKP_FIX_P_Ana_calc_corr_st3( const SKP_int16 *target_ptr, *basis_ptr; SKP_int32 cross_corr; SKP_int i, j, k, lag_counter, lag_low, lag_high; - SKP_int cbk_offset, nb_cbk_search, delta, idx, cbk_size; + SKP_int nb_cbk_search, delta, idx, cbk_size; SKP_int32 scratch_mem[ SCRATCH_SIZE ]; const SKP_int8 *Lag_range_ptr, *Lag_CB_ptr; @@ -610,14 +606,12 @@ void SKP_FIX_P_Ana_calc_corr_st3( if( nb_subfr == PE_MAX_NB_SUBFR ){ Lag_range_ptr = &SKP_Silk_Lag_range_stage3[ complexity ][ 0 ][ 0 ]; Lag_CB_ptr = &SKP_Silk_CB_lags_stage3[ 0 ][ 0 ]; - cbk_offset = SKP_Silk_cbk_offsets_stage3[ complexity ]; - nb_cbk_search = SKP_Silk_nb_cbk_searchs_stage3[ complexity ]; + nb_cbk_search = SKP_Silk_nb_cbk_searchs_stage3[ complexity ]; cbk_size = PE_NB_CBKS_STAGE3_MAX; } else { SKP_assert( nb_subfr == PE_MAX_NB_SUBFR >> 1); Lag_range_ptr = &SKP_Silk_Lag_range_stage3_10_ms[ 0 ][ 0 ]; Lag_CB_ptr = &SKP_Silk_CB_lags_stage3_10_ms[ 0 ][ 0 ]; - cbk_offset = 0; nb_cbk_search = PE_NB_CBKS_STAGE3_10MS; cbk_size = PE_NB_CBKS_STAGE3_10MS; } @@ -638,7 +632,7 @@ void SKP_FIX_P_Ana_calc_corr_st3( } delta = matrix_ptr( Lag_range_ptr, k, 0, 2 ); - for( i = cbk_offset; i < ( cbk_offset + nb_cbk_search ); i++ ) { + for( i = 0; i < nb_cbk_search; i++ ) { /* Fill out the 3 dim array that stores the correlations for */ /* each code_book vector for each start lag */ idx = matrix_ptr( Lag_CB_ptr, k, i, cbk_size ) - delta; @@ -668,7 +662,7 @@ void SKP_FIX_P_Ana_calc_energy_st3( const SKP_int16 *target_ptr, *basis_ptr; SKP_int32 energy; SKP_int k, i, j, lag_counter; - SKP_int cbk_offset, nb_cbk_search, delta, idx, cbk_size, lag_diff; + SKP_int nb_cbk_search, delta, idx, cbk_size, lag_diff; SKP_int32 scratch_mem[ SCRATCH_SIZE ]; const SKP_int8 *Lag_range_ptr, *Lag_CB_ptr; @@ -678,14 +672,12 @@ void SKP_FIX_P_Ana_calc_energy_st3( if( nb_subfr == PE_MAX_NB_SUBFR ){ Lag_range_ptr = &SKP_Silk_Lag_range_stage3[ complexity ][ 0 ][ 0 ]; Lag_CB_ptr = &SKP_Silk_CB_lags_stage3[ 0 ][ 0 ]; - cbk_offset = SKP_Silk_cbk_offsets_stage3[ complexity ]; - nb_cbk_search = SKP_Silk_nb_cbk_searchs_stage3[ complexity ]; + nb_cbk_search = SKP_Silk_nb_cbk_searchs_stage3[ complexity ]; cbk_size = PE_NB_CBKS_STAGE3_MAX; } else { SKP_assert( nb_subfr == PE_MAX_NB_SUBFR >> 1); Lag_range_ptr = &SKP_Silk_Lag_range_stage3_10_ms[ 0 ][ 0 ]; Lag_CB_ptr = &SKP_Silk_CB_lags_stage3_10_ms[ 0 ][ 0 ]; - cbk_offset = 0; nb_cbk_search = PE_NB_CBKS_STAGE3_10MS; cbk_size = PE_NB_CBKS_STAGE3_10MS; } @@ -715,7 +707,7 @@ void SKP_FIX_P_Ana_calc_energy_st3( } delta = matrix_ptr( Lag_range_ptr, k, 0, 2 ); - for( i = cbk_offset; i < ( cbk_offset + nb_cbk_search ); i++ ) { + for( i = 0; i < nb_cbk_search; i++ ) { /* Fill out the 3 dim array that stores the correlations for */ /* each code_book vector for each start lag */ idx = matrix_ptr( Lag_CB_ptr, k, i, cbk_size ) - delta; diff --git a/src_SigProc_FIX/SKP_Silk_pitch_est_defines.h b/src_SigProc_FIX/SKP_Silk_pitch_est_defines.h index 86aabb15fce621c076256cb39f83b53cb436355c..87d90d566b712f209506f8518dba8b09ed9691ed 100644 --- a/src_SigProc_FIX/SKP_Silk_pitch_est_defines.h +++ b/src_SigProc_FIX/SKP_Silk_pitch_est_defines.h @@ -29,15 +29,61 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define SKP_SILK_PE_DEFINES_H #include "SKP_Silk_SigProc_FIX.h" -#include "SKP_Silk_common_pitch_est_defines.h" /************************************************************/ /* Definitions For Fix pitch estimator */ /************************************************************/ -#define PE_SHORTLAG_BIAS_Q15 6554 /* 0.2f. for logarithmic weighting */ -#define PE_PREVLAG_BIAS_Q15 6554 /* Prev lag bias */ -#define PE_FLATCONTOUR_BIAS_Q20 52429 /* 0.05f */ +#define PE_MAX_FS_KHZ 24 /* Maximum sampling frequency used */ + +#define PE_MAX_NB_SUBFR 4 +#define PE_SUBFR_LENGTH_MS 5 /* 5 ms */ + +#define PE_LTP_MEM_LENGTH_MS (4 * PE_SUBFR_LENGTH_MS) + +#define PE_MAX_FRAME_LENGTH_MS (PE_LTP_MEM_LENGTH_MS + PE_MAX_NB_SUBFR * PE_SUBFR_LENGTH_MS) +#define PE_MAX_FRAME_LENGTH (PE_MAX_FRAME_LENGTH_MS * PE_MAX_FS_KHZ) +#define PE_MAX_FRAME_LENGTH_ST_1 (PE_MAX_FRAME_LENGTH >> 2) +#define PE_MAX_FRAME_LENGTH_ST_2 (PE_MAX_FRAME_LENGTH >> 1) +#define PE_MAX_SF_FRAME_LENGTH (PE_SUB_FRAME * PE_MAX_FS_KHZ) + +#define PE_MAX_LAG_MS 18 /* 18 ms -> 56 Hz */ +#define PE_MIN_LAG_MS 2 /* 2 ms -> 500 Hz */ +#define PE_MAX_LAG (PE_MAX_LAG_MS * PE_MAX_FS_KHZ) +#define PE_MIN_LAG (PE_MIN_LAG_MS * PE_MAX_FS_KHZ) + +#define PE_D_SRCH_LENGTH 24 + +#define PE_MAX_DECIMATE_STATE_LENGTH 7 + +#define PE_NB_STAGE3_LAGS 5 + +#define PE_NB_CBKS_STAGE2 3 +#define PE_NB_CBKS_STAGE2_EXT 11 + +#define PE_CB_mn2 1 +#define PE_CB_mx2 2 + +#define PE_NB_CBKS_STAGE3_MAX 34 +#define PE_NB_CBKS_STAGE3_MID 24 +#define PE_NB_CBKS_STAGE3_MIN 16 + +#define PE_NB_CBKS_STAGE3_10MS 12 +#define PE_NB_CBKS_STAGE2_10MS 3 + +#define PE_SHORTLAG_BIAS 0.2f /* for logarithmic weighting */ +#define PE_PREVLAG_BIAS 0.2f /* for logarithmic weighting */ +#define PE_FLATCONTOUR_BIAS 0.05f + +extern const SKP_int8 SKP_Silk_CB_lags_stage2[ PE_MAX_NB_SUBFR ][ PE_NB_CBKS_STAGE2_EXT ]; +extern const SKP_int8 SKP_Silk_CB_lags_stage3[ PE_MAX_NB_SUBFR ][ PE_NB_CBKS_STAGE3_MAX ]; +extern const SKP_int8 SKP_Silk_Lag_range_stage3[ SKP_Silk_PE_MAX_COMPLEX + 1 ] [ PE_MAX_NB_SUBFR ][ 2 ]; +extern const SKP_int8 SKP_Silk_nb_cbk_searchs_stage3[ SKP_Silk_PE_MAX_COMPLEX + 1 ]; + +/* Tables added for 10 ms frames */ +extern const SKP_int8 SKP_Silk_CB_lags_stage2_10_ms[ PE_MAX_NB_SUBFR >> 1][ 3 ]; +extern const SKP_int8 SKP_Silk_CB_lags_stage3_10_ms[ PE_MAX_NB_SUBFR >> 1 ][ 12 ]; +extern const SKP_int8 SKP_Silk_Lag_range_stage3_10_ms[ PE_MAX_NB_SUBFR >> 1 ][ 2 ]; #endif diff --git a/src_SigProc_FIX/SKP_Silk_pitch_est_tables.c b/src_SigProc_FIX/SKP_Silk_pitch_est_tables.c index efacf4499ec0ce4c04e5889ee6e59721e7a3dc69..5d9f68d7429c221711554e70e4f04af3240453cb 100644 --- a/src_SigProc_FIX/SKP_Silk_pitch_est_tables.c +++ b/src_SigProc_FIX/SKP_Silk_pitch_est_tables.c @@ -36,8 +36,8 @@ const SKP_int8 SKP_Silk_CB_lags_stage2_10_ms[ PE_MAX_NB_SUBFR >> 1][ PE_NB_CBKS_ const SKP_int8 SKP_Silk_CB_lags_stage3_10_ms[ PE_MAX_NB_SUBFR >> 1 ][ PE_NB_CBKS_STAGE3_10MS ] = { - {-3,-2,-2,-1,-1, 0, 0, 1, 1, 2, 2, 3}, - { 3, 3, 2, 2, 1, 1, 0, 0,-1,-1,-2,-2} + { 0, 0, 1,-1, 1,-1, 2,-2, 2,-2, 3,-3}, + { 0, 1, 0, 1,-1, 2,-1, 2,-2, 3,-2, 3} }; const SKP_int8 SKP_Silk_Lag_range_stage3_10_ms[ PE_MAX_NB_SUBFR >> 1 ][ 2 ] = @@ -46,10 +46,6 @@ const SKP_int8 SKP_Silk_Lag_range_stage3_10_ms[ PE_MAX_NB_SUBFR >> 1 ][ 2 ] = {-2, 7} }; -/********************************************************/ -/* Auto Generated File from generate_pitch_est_tables.m */ -/********************************************************/ - const SKP_int8 SKP_Silk_CB_lags_stage2[ PE_MAX_NB_SUBFR ][ PE_NB_CBKS_STAGE2_EXT ] = { {0, 2,-1,-1,-1, 0, 0, 1, 1, 0, 1}, @@ -60,27 +56,27 @@ const SKP_int8 SKP_Silk_CB_lags_stage2[ PE_MAX_NB_SUBFR ][ PE_NB_CBKS_STAGE2_EXT const SKP_int8 SKP_Silk_CB_lags_stage3[ PE_MAX_NB_SUBFR ][ PE_NB_CBKS_STAGE3_MAX ] = { - {-9,-7,-6,-5,-5,-4,-4,-3,-3,-2,-2,-2,-1,-1,-1, 0, 0, 0, 1, 1, 0, 1, 2, 2, 2, 3, 3, 4, 4, 5, 6, 5, 6, 8}, - {-3,-2,-2,-2,-1,-1,-1,-1,-1, 0, 0,-1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 2, 1, 2, 2, 2, 2, 3}, - { 3, 3, 2, 2, 2, 2, 1, 2, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,-1, 0, 0,-1,-1,-1,-1,-1,-2,-2,-2}, - { 9, 8, 6, 5, 6, 5, 4, 4, 3, 3, 2, 2, 2, 1, 0, 1, 1, 0, 0, 0,-1,-1,-1,-2,-2,-2,-3,-3,-4,-4,-5,-5,-6,-7} - }; + {0, 0, 1,-1, 0, 1,-1, 0,-1, 1,-2, 2,-2,-2, 2,-3, 2, 3,-3,-4, 3,-4, 4, 4,-5, 5,-6,-5, 6,-7, 6, 5, 8,-9}, + {0, 0, 1, 0, 0, 0, 0, 0, 0, 0,-1, 1, 0, 0, 1,-1, 0, 1,-1,-1, 1,-1, 2, 1,-1, 2,-2,-2, 2,-2, 2, 2, 3,-3}, + {0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1,-1, 1, 0, 0, 2, 1,-1, 2,-1,-1, 2,-1, 2, 2,-1, 3,-2,-2,-2, 3}, + {0, 1, 0, 0, 1, 0, 1,-1, 2,-1, 2,-1, 2, 3,-2, 3,-2,-2, 4, 4,-3, 5,-3,-4, 6,-4, 6, 5,-5, 8,-6,-5,-7, 9} +}; const SKP_int8 SKP_Silk_Lag_range_stage3[ SKP_Silk_PE_MAX_COMPLEX + 1 ] [ PE_MAX_NB_SUBFR ][ 2 ] = { /* Lags to search for low number of stage3 cbks */ { - {-2,6}, - {-1,5}, - {-1,5}, - {-2,7} + {-5,8}, + {-1,6}, + {-1,6}, + {-4,10} }, /* Lags to search for middle number of stage3 cbks */ { - {-4,8}, - {-1,6}, + {-6,10}, + {-2,6}, {-1,6}, - {-4,9} + {-5,10} }, /* Lags to search for max number of stage3 cbks */ { @@ -97,11 +93,3 @@ const SKP_int8 SKP_Silk_nb_cbk_searchs_stage3[ SKP_Silk_PE_MAX_COMPLEX + 1 ] = PE_NB_CBKS_STAGE3_MID, PE_NB_CBKS_STAGE3_MAX }; - -const SKP_int8 SKP_Silk_cbk_offsets_stage3[ SKP_Silk_PE_MAX_COMPLEX + 1 ] = -{ - ((PE_NB_CBKS_STAGE3_MAX - PE_NB_CBKS_STAGE3_MIN) >> 1), - ((PE_NB_CBKS_STAGE3_MAX - PE_NB_CBKS_STAGE3_MID) >> 1), - 0 -}; - diff --git a/src_SigProc_FIX/SigProc_FIX.vcproj b/src_SigProc_FIX/SigProc_FIX.vcproj deleted file mode 100644 index 4a07d15edf440366e8612731139c9d250e7deac1..0000000000000000000000000000000000000000 --- a/src_SigProc_FIX/SigProc_FIX.vcproj +++ /dev/null @@ -1,408 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="8,00" - Name="SigProc_FIX" - ProjectGUID="{2769AFC5-8FC2-42E8-803C-528ACBA89C74}" - RootNamespace="Silk" - Keyword="Win32Proj" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory="$(SolutionDir)" - IntermediateDirectory="$(ConfigurationName)" - ConfigurationType="4" - CharacterSet="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - FavorSizeOrSpeed="0" - AdditionalIncludeDirectories="../interface" - PreprocessorDefinitions="WIN32;_DEBUG;_LIB;" - MinimalRebuild="true" - BasicRuntimeChecks="3" - RuntimeLibrary="1" - FloatingPointModel="2" - UsePrecompiledHeader="0" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="4" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - OutputFile="SKP_Silk_SigProcFLP_Win32_debug.lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - CommandLine="" - /> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory="$(SolutionDir)" - IntermediateDirectory="$(ConfigurationName)" - ConfigurationType="4" - CharacterSet="1" - WholeProgramOptimization="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - InlineFunctionExpansion="0" - FavorSizeOrSpeed="0" - AdditionalIncludeDirectories="../interface" - PreprocessorDefinitions="WIN32;NDEBUG;_LIB" - GeneratePreprocessedFile="0" - RuntimeLibrary="0" - FloatingPointModel="2" - UsePrecompiledHeader="0" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - OutputFile="SKP_Silk_SigProcFLP_Win32_mt.lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - CommandLine="" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="Source Files" - Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx" - UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" - > - <File - RelativePath=".\SKP_Silk_A2NLSF.c" - > - </File> - <File - RelativePath=".\SKP_Silk_allpass_int.c" - > - </File> - <File - RelativePath=".\SKP_Silk_ana_filt_bank_1.c" - > - </File> - <File - RelativePath=".\SKP_Silk_apply_sine_window.c" - > - </File> - <File - RelativePath=".\SKP_Silk_array_maxabs.c" - > - </File> - <File - RelativePath=".\SKP_Silk_autocorr.c" - > - </File> - <File - RelativePath=".\SKP_Silk_biquad.c" - > - </File> - <File - RelativePath=".\SKP_Silk_biquad_alt.c" - > - </File> - <File - RelativePath=".\SKP_Silk_burg_modified.c" - > - </File> - <File - RelativePath=".\SKP_Silk_bwexpander.c" - > - </File> - <File - RelativePath=".\SKP_Silk_bwexpander_32.c" - > - </File> - <File - RelativePath=".\SKP_Silk_decode_pitch.c" - > - </File> - <File - RelativePath=".\SKP_Silk_inner_prod_aligned.c" - > - </File> - <File - RelativePath=".\SKP_Silk_k2a.c" - > - </File> - <File - RelativePath=".\SKP_Silk_k2a_Q16.c" - > - </File> - <File - RelativePath=".\SKP_Silk_lin2log.c" - > - </File> - <File - RelativePath=".\SKP_Silk_log2lin.c" - > - </File> - <File - RelativePath=".\SKP_Silk_lowpass_int.c" - > - </File> - <File - RelativePath=".\SKP_Silk_lowpass_short.c" - > - </File> - <File - RelativePath=".\SKP_Silk_LPC_inv_pred_gain.c" - > - </File> - <File - RelativePath=".\SKP_Silk_LPC_stabilize.c" - > - </File> - <File - RelativePath=".\SKP_Silk_LPC_synthesis_filter.c" - > - </File> - <File - RelativePath=".\SKP_Silk_LPC_synthesis_order16.c" - > - </File> - <File - RelativePath=".\SKP_Silk_LSF_cos_table.c" - > - </File> - <File - RelativePath=".\SKP_Silk_MA.c" - > - </File> - <File - RelativePath=".\SKP_Silk_NLSF2A.c" - > - </File> - <File - RelativePath=".\SKP_Silk_NLSF_stabilize.c" - > - </File> - <File - RelativePath=".\SKP_Silk_NLSF_VQ_weights_laroia.c" - > - </File> - <File - RelativePath=".\SKP_Silk_pitch_analysis_core.c" - > - </File> - <File - RelativePath=".\SKP_Silk_pitch_est_tables.c" - > - </File> - <File - RelativePath=".\SKP_Silk_resampler.c" - > - </File> - <File - RelativePath=".\SKP_Silk_resampler_down2.c" - > - </File> - <File - RelativePath=".\SKP_Silk_resampler_down2_3.c" - > - </File> - <File - RelativePath=".\SKP_Silk_resampler_down3.c" - > - </File> - <File - RelativePath=".\SKP_Silk_resampler_private_AR2.c" - > - </File> - <File - RelativePath=".\SKP_Silk_resampler_private_ARMA4.c" - > - </File> - <File - RelativePath=".\SKP_Silk_resampler_private_copy.c" - > - </File> - <File - RelativePath=".\SKP_Silk_resampler_private_down4.c" - > - </File> - <File - RelativePath=".\SKP_Silk_resampler_private_down_FIR.c" - > - </File> - <File - RelativePath=".\SKP_Silk_resampler_private_IIR_FIR.c" - > - </File> - <File - RelativePath=".\SKP_Silk_resampler_private_up2_HQ.c" - > - </File> - <File - RelativePath=".\SKP_Silk_resampler_private_up4.c" - > - </File> - <File - RelativePath=".\SKP_Silk_resampler_rom.c" - > - </File> - <File - RelativePath=".\SKP_Silk_resampler_up2.c" - > - </File> - <File - RelativePath=".\SKP_Silk_scale_copy_vector16.c" - > - </File> - <File - RelativePath=".\SKP_Silk_scale_vector.c" - > - </File> - <File - RelativePath=".\SKP_Silk_schur.c" - > - </File> - <File - RelativePath=".\SKP_Silk_schur64.c" - > - </File> - <File - RelativePath=".\SKP_Silk_sigm_Q15.c" - > - </File> - <File - RelativePath=".\SKP_Silk_sort.c" - > - </File> - <File - RelativePath=".\SKP_Silk_sum_sqr_shift.c" - > - </File> - </Filter> - <Filter - Name="Header Files" - Filter="h;hpp;hxx;hm;inl;inc;xsd" - UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}" - > - <File - RelativePath=".\SKP_Silk_common_pitch_est_defines.h" - > - </File> - <File - RelativePath=".\SKP_Silk_Inlines.h" - > - </File> - <File - RelativePath=".\SKP_Silk_macros.h" - > - </File> - <File - RelativePath=".\SKP_Silk_pitch_est_defines.h" - > - </File> - <File - RelativePath=".\SKP_Silk_resample_rom.h" - > - </File> - <File - RelativePath=".\SKP_Silk_resampler_rom.h" - > - </File> - <File - RelativePath=".\SKP_Silk_resampler_structs.h" - > - </File> - <File - RelativePath=".\SKP_Silk_SigProc_FIX.h" - > - </File> - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/src_SigProc_FIX/src_SigProc_FIX.vcxproj b/src_SigProc_FIX/src_SigProc_FIX.vcxproj new file mode 100644 index 0000000000000000000000000000000000000000..8cf007d552d347014585f8c37168d2dd6d11535d --- /dev/null +++ b/src_SigProc_FIX/src_SigProc_FIX.vcxproj @@ -0,0 +1,144 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|Win32"> + <Configuration>Debug</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{950F7176-3D29-4CBF-8C40-58B918EAEBB2}</ProjectGuid> + <Keyword>Win32Proj</Keyword> + <RootNamespace>src_SigProc_FIX</RootNamespace> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <CharacterSet>Unicode</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <WholeProgramOptimization>true</WholeProgramOptimization> + <CharacterSet>Unicode</CharacterSet> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="ExtensionSettings"> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup /> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <ClCompile> + <PrecompiledHeader> + </PrecompiledHeader> + <WarningLevel>Level3</WarningLevel> + <Optimization>Disabled</Optimization> + <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>../interface</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Windows</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <PrecompiledHeader> + </PrecompiledHeader> + <Optimization>MaxSpeed</Optimization> + <FunctionLevelLinking>true</FunctionLevelLinking> + <IntrinsicFunctions>true</IntrinsicFunctions> + <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>../interface</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Windows</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <OptimizeReferences>true</OptimizeReferences> + </Link> + </ItemDefinitionGroup> + <ItemGroup> + <None Include="ReadMe.txt" /> + </ItemGroup> + <ItemGroup> + <ClInclude Include="SKP_Silk_pitch_est_defines.h" /> + <ClInclude Include="SKP_Silk_Inlines.h" /> + <ClInclude Include="SKP_Silk_MacroCount.h" /> + <ClInclude Include="SKP_Silk_MacroDebug.h" /> + <ClInclude Include="SKP_Silk_macros.h" /> + <ClInclude Include="SKP_Silk_resampler_private.h" /> + <ClInclude Include="SKP_Silk_resampler_rom.h" /> + <ClInclude Include="SKP_Silk_resampler_structs.h" /> + <ClInclude Include="SKP_Silk_SigProc_FIX.h" /> + </ItemGroup> + <ItemGroup> + <ClCompile Include="SKP_Silk_A2NLSF.c" /> + <ClCompile Include="SKP_Silk_allpass_int.c" /> + <ClCompile Include="SKP_Silk_ana_filt_bank_1.c" /> + <ClCompile Include="SKP_Silk_apply_sine_window.c" /> + <ClCompile Include="SKP_Silk_array_maxabs.c" /> + <ClCompile Include="SKP_Silk_autocorr.c" /> + <ClCompile Include="SKP_Silk_biquad.c" /> + <ClCompile Include="SKP_Silk_biquad_alt.c" /> + <ClCompile Include="SKP_Silk_burg_modified.c" /> + <ClCompile Include="SKP_Silk_bwexpander.c" /> + <ClCompile Include="SKP_Silk_bwexpander_32.c" /> + <ClCompile Include="SKP_Silk_debug.c" /> + <ClCompile Include="SKP_Silk_decode_pitch.c" /> + <ClCompile Include="SKP_Silk_inner_prod_aligned.c" /> + <ClCompile Include="SKP_Silk_k2a.c" /> + <ClCompile Include="SKP_Silk_k2a_Q16.c" /> + <ClCompile Include="SKP_Silk_lin2log.c" /> + <ClCompile Include="SKP_Silk_log2lin.c" /> + <ClCompile Include="SKP_Silk_lowpass_int.c" /> + <ClCompile Include="SKP_Silk_lowpass_short.c" /> + <ClCompile Include="SKP_Silk_LPC_inv_pred_gain.c" /> + <ClCompile Include="SKP_Silk_LPC_stabilize.c" /> + <ClCompile Include="SKP_Silk_LPC_synthesis_filter.c" /> + <ClCompile Include="SKP_Silk_LPC_synthesis_order16.c" /> + <ClCompile Include="SKP_Silk_LSF_cos_table.c" /> + <ClCompile Include="SKP_Silk_MA.c" /> + <ClCompile Include="SKP_Silk_NLSF2A.c" /> + <ClCompile Include="SKP_Silk_NLSF_stabilize.c" /> + <ClCompile Include="SKP_Silk_NLSF_VQ_weights_laroia.c" /> + <ClCompile Include="SKP_Silk_pitch_analysis_core.c" /> + <ClCompile Include="SKP_Silk_pitch_est_tables.c" /> + <ClCompile Include="SKP_Silk_resampler.c" /> + <ClCompile Include="SKP_Silk_resampler_down2.c" /> + <ClCompile Include="SKP_Silk_resampler_down2_3.c" /> + <ClCompile Include="SKP_Silk_resampler_down3.c" /> + <ClCompile Include="SKP_Silk_resampler_private_AR2.c" /> + <ClCompile Include="SKP_Silk_resampler_private_ARMA4.c" /> + <ClCompile Include="SKP_Silk_resampler_private_copy.c" /> + <ClCompile Include="SKP_Silk_resampler_private_down4.c" /> + <ClCompile Include="SKP_Silk_resampler_private_down_FIR.c" /> + <ClCompile Include="SKP_Silk_resampler_private_IIR_FIR.c" /> + <ClCompile Include="SKP_Silk_resampler_private_up2_HQ.c" /> + <ClCompile Include="SKP_Silk_resampler_private_up4.c" /> + <ClCompile Include="SKP_Silk_resampler_rom.c" /> + <ClCompile Include="SKP_Silk_resampler_up2.c" /> + <ClCompile Include="SKP_Silk_scale_copy_vector16.c" /> + <ClCompile Include="SKP_Silk_scale_vector.c" /> + <ClCompile Include="SKP_Silk_schur.c" /> + <ClCompile Include="SKP_Silk_schur64.c" /> + <ClCompile Include="SKP_Silk_sigm_Q15.c" /> + <ClCompile Include="SKP_Silk_sort.c" /> + <ClCompile Include="SKP_Silk_sum_sqr_shift.c" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project> \ No newline at end of file diff --git a/src_SigProc_FIX/src_SigProc_FIX.vcxproj.filters b/src_SigProc_FIX/src_SigProc_FIX.vcxproj.filters new file mode 100644 index 0000000000000000000000000000000000000000..d22c016638b0b32cd184e7eb2997273ec42bf1af --- /dev/null +++ b/src_SigProc_FIX/src_SigProc_FIX.vcxproj.filters @@ -0,0 +1,207 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Source Files"> + <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> + <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> + </Filter> + <Filter Include="Header Files"> + <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> + <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions> + </Filter> + <Filter Include="Resource Files"> + <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> + <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> + </Filter> + </ItemGroup> + <ItemGroup> + <None Include="ReadMe.txt" /> + </ItemGroup> + <ItemGroup> + <ClInclude Include="SKP_Silk_Inlines.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="SKP_Silk_MacroCount.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="SKP_Silk_MacroDebug.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="SKP_Silk_macros.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="SKP_Silk_resampler_private.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="SKP_Silk_resampler_rom.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="SKP_Silk_resampler_structs.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="SKP_Silk_SigProc_FIX.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="SKP_Silk_pitch_est_defines.h"> + <Filter>Header Files</Filter> + </ClInclude> + </ItemGroup> + <ItemGroup> + <ClCompile Include="SKP_Silk_A2NLSF.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_allpass_int.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_ana_filt_bank_1.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_apply_sine_window.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_array_maxabs.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_autocorr.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_biquad.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_biquad_alt.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_burg_modified.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_bwexpander.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_bwexpander_32.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_decode_pitch.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_inner_prod_aligned.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_k2a.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_k2a_Q16.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_lin2log.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_log2lin.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_lowpass_int.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_lowpass_short.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_LPC_inv_pred_gain.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_LPC_stabilize.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_LPC_synthesis_filter.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_LPC_synthesis_order16.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_LSF_cos_table.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_MA.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_NLSF_stabilize.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_NLSF_VQ_weights_laroia.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_NLSF2A.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_pitch_analysis_core.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_pitch_est_tables.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_resampler.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_resampler_down2.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_resampler_down2_3.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_resampler_down3.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_resampler_private_AR2.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_resampler_private_ARMA4.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_resampler_private_copy.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_resampler_private_down_FIR.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_resampler_private_down4.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_resampler_private_IIR_FIR.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_resampler_private_up2_HQ.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_resampler_private_up4.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_resampler_rom.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_resampler_up2.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_scale_copy_vector16.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_scale_vector.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_schur.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_schur64.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_sigm_Q15.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_sort.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_sum_sqr_shift.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_debug.c"> + <Filter>Source Files</Filter> + </ClCompile> + </ItemGroup> +</Project> \ No newline at end of file diff --git a/src_SigProc_FLP/SKP_Silk_decimate2_coarsest_FLP.c b/src_SigProc_FLP/SKP_Silk_decimate2_coarsest_FLP.c index 8291a8f0efa75168da9f2345b3568f14724c03c3..55bc75cd1b74ef1985f9d8fc1d4528c5a77b5026 100644 --- a/src_SigProc_FLP/SKP_Silk_decimate2_coarsest_FLP.c +++ b/src_SigProc_FLP/SKP_Silk_decimate2_coarsest_FLP.c @@ -59,7 +59,7 @@ void SKP_Silk_decimate2_coarsest_FLP( /* allpass filters */ SKP_Silk_allpass_int_FLP( scratch, S + 0, A21cst_FLP[ 0 ], scratch + 2 * len, len ); - SKP_Silk_allpass_int_FLP( scratch + len, S + 1, A20cst_FLP[ 0 ], scratch, len ); + SKP_Silk_allpass_int_FLP( scratch + len, S + 1, A20cst_FLP[ 0 ], scratch, len ); /* add two allpass outputs */ for ( k = 0; k < len; k++ ) { diff --git a/src_SigProc_FLP/SKP_Silk_pitch_analysis_core_FLP.c b/src_SigProc_FLP/SKP_Silk_pitch_analysis_core_FLP.c index 4758952fefbf6e606fcb6d678063a3ac46ec9634..410487be36772c16346616ca90487de902988f81 100644 --- a/src_SigProc_FLP/SKP_Silk_pitch_analysis_core_FLP.c +++ b/src_SigProc_FLP/SKP_Silk_pitch_analysis_core_FLP.c @@ -32,8 +32,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ #include "SKP_Silk_SigProc_FLP.h" #include "SKP_Silk_SigProc_FIX.h" -#include "SKP_Silk_pitch_est_defines_FLP.h" -#include "SKP_Silk_common_pitch_est_defines.h" +#include "SKP_Silk_pitch_est_defines.h" #define SCRATCH_SIZE 22 @@ -70,7 +69,7 @@ static void SKP_P_Ana_calc_energy_st3( //% CORE PITCH ANALYSIS FUNCTION % //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% SKP_int SKP_Silk_pitch_analysis_core_FLP( /* O voicing estimate: 0 voiced, 1 unvoiced */ - const SKP_float *signal, /* I signal of length PE_FRAME_LENGTH_MS*Fs_kHz */ + const SKP_float *signal, /* I signal of length PE_FRAME_LENGTH_MS*Fs_kHz */ SKP_int *pitch_out, /* O 4 pitch lag values */ SKP_int *lagIndex, /* O lag Index */ SKP_int *contourIndex, /* O pitch contour Index */ @@ -98,11 +97,11 @@ SKP_int SKP_Silk_pitch_analysis_core_FLP( /* O voicing estimate: 0 voiced, 1 unv SKP_int length_d_srch, length_d_comp; SKP_float Cmax, CCmax, CCmax_b, CCmax_new_b, CCmax_new; SKP_int CBimax, CBimax_new, lag, start_lag, end_lag, lag_new; - SKP_int cbk_offset, cbk_size; + SKP_int cbk_size; SKP_float lag_log2, prevLag_log2, delta_lag_log2_sqr; SKP_float energies_st3[ PE_MAX_NB_SUBFR ][ PE_NB_CBKS_STAGE3_MAX ][ PE_NB_STAGE3_LAGS ]; SKP_float cross_corr_st3[ PE_MAX_NB_SUBFR ][ PE_NB_CBKS_STAGE3_MAX ][ PE_NB_STAGE3_LAGS ]; - SKP_int diff, lag_counter; + SKP_int lag_counter; SKP_int frame_length, frame_length_8kHz, frame_length_4kHz; SKP_int sf_length, sf_length_8kHz, sf_length_4kHz; SKP_int min_lag, min_lag_8kHz, min_lag_4kHz; @@ -130,9 +129,9 @@ SKP_int SKP_Silk_pitch_analysis_core_FLP( /* O voicing estimate: 0 voiced, 1 unv min_lag = PE_MIN_LAG_MS * Fs_kHz; min_lag_4kHz = PE_MIN_LAG_MS * 4; min_lag_8kHz = PE_MIN_LAG_MS * 8; - max_lag = PE_MAX_LAG_MS * Fs_kHz; + max_lag = PE_MAX_LAG_MS * Fs_kHz - 1; max_lag_4kHz = PE_MAX_LAG_MS * 4; - max_lag_8kHz = PE_MAX_LAG_MS * 8; + max_lag_8kHz = PE_MAX_LAG_MS * 8 - 1; SKP_memset(C, 0, sizeof(SKP_float) * nb_subfr * ((PE_MAX_LAG >> 1) + 5)); @@ -402,13 +401,13 @@ SKP_int SKP_Silk_pitch_analysis_core_FLP( /* O voicing estimate: 0 voiced, 1 unv /* Bias towards shorter lags */ lag_log2 = SKP_P_log2((SKP_float)d); - CCmax_new_b -= PE_FLP_SHORTLAG_BIAS * nb_subfr * lag_log2; + CCmax_new_b -= PE_SHORTLAG_BIAS * nb_subfr * lag_log2; /* Bias towards previous lag */ if ( prevLag > 0 ) { delta_lag_log2_sqr = lag_log2 - prevLag_log2; delta_lag_log2_sqr *= delta_lag_log2_sqr; - CCmax_new_b -= PE_FLP_PREVLAG_BIAS * nb_subfr * (*LTPCorr) * delta_lag_log2_sqr / (delta_lag_log2_sqr + 0.5f); + CCmax_new_b -= PE_PREVLAG_BIAS * nb_subfr * (*LTPCorr) * delta_lag_log2_sqr / (delta_lag_log2_sqr + 0.5f); } if ( CCmax_new_b > CCmax_b && /* Find maximum biased correlation */ @@ -460,23 +459,21 @@ SKP_int SKP_Silk_pitch_analysis_core_FLP( /* O voicing estimate: 0 voiced, 1 unv lag_counter = 0; SKP_assert( lag == SKP_SAT16( lag ) ); - contour_bias = PE_FLP_FLATCONTOUR_BIAS / lag; + contour_bias = PE_FLATCONTOUR_BIAS / lag; /* Setup cbk parameters acording to complexity setting and frame length */ if( nb_subfr == PE_MAX_NB_SUBFR ) { - nb_cbk_search = (SKP_int)SKP_Silk_nb_cbk_searchs_stage3[ complexity ]; - cbk_size = PE_NB_CBKS_STAGE3_MAX; - cbk_offset = (SKP_int)SKP_Silk_cbk_offsets_stage3[ complexity ]; - Lag_CB_ptr = &SKP_Silk_CB_lags_stage3[ 0 ][ 0 ]; + nb_cbk_search = (SKP_int)SKP_Silk_nb_cbk_searchs_stage3[ complexity ]; + cbk_size = PE_NB_CBKS_STAGE3_MAX; + Lag_CB_ptr = &SKP_Silk_CB_lags_stage3[ 0 ][ 0 ]; } else { - nb_cbk_search = PE_NB_CBKS_STAGE3_10MS; - cbk_size = PE_NB_CBKS_STAGE3_10MS; - cbk_offset = 0; - Lag_CB_ptr = &SKP_Silk_CB_lags_stage3_10_ms[ 0 ][ 0 ]; + nb_cbk_search = PE_NB_CBKS_STAGE3_10MS; + cbk_size = PE_NB_CBKS_STAGE3_10MS; + Lag_CB_ptr = &SKP_Silk_CB_lags_stage3_10_ms[ 0 ][ 0 ]; } for( d = start_lag; d <= end_lag; d++ ) { - for( j = cbk_offset; j < ( cbk_offset + nb_cbk_search ); j++ ) { + for( j = 0; j < nb_cbk_search; j++ ) { cross_corr = 0.0; energy = eps; for( k = 0; k < nb_subfr; k++ ) { @@ -486,8 +483,7 @@ SKP_int SKP_Silk_pitch_analysis_core_FLP( /* O voicing estimate: 0 voiced, 1 unv if( cross_corr > 0.0 ) { CCmax_new = (SKP_float)(cross_corr * cross_corr / energy); /* Reduce depending on flatness of contour */ - diff = j - SKP_RSHIFT( cbk_size, 1 ); - CCmax_new *= ( 1.0f - contour_bias * diff * diff ); + CCmax_new *= 1.0f - contour_bias * j; } else { CCmax_new = 0.0f; } @@ -547,7 +543,7 @@ static void SKP_P_Ana_calc_corr_st3( { const SKP_float *target_ptr, *basis_ptr; SKP_int i, j, k, lag_counter, lag_low, lag_high; - SKP_int cbk_offset, nb_cbk_search, delta, idx, cbk_size; + SKP_int nb_cbk_search, delta, idx, cbk_size; SKP_float scratch_mem[ SCRATCH_SIZE ]; const SKP_int8 *Lag_range_ptr, *Lag_CB_ptr; @@ -557,14 +553,12 @@ static void SKP_P_Ana_calc_corr_st3( if( nb_subfr == PE_MAX_NB_SUBFR ){ Lag_range_ptr = &SKP_Silk_Lag_range_stage3[ complexity ][ 0 ][ 0 ]; Lag_CB_ptr = &SKP_Silk_CB_lags_stage3[ 0 ][ 0 ]; - cbk_offset = SKP_Silk_cbk_offsets_stage3[ complexity ]; - nb_cbk_search = SKP_Silk_nb_cbk_searchs_stage3[ complexity ]; + nb_cbk_search = SKP_Silk_nb_cbk_searchs_stage3[ complexity ]; cbk_size = PE_NB_CBKS_STAGE3_MAX; } else { SKP_assert( nb_subfr == PE_MAX_NB_SUBFR >> 1); Lag_range_ptr = &SKP_Silk_Lag_range_stage3_10_ms[ 0 ][ 0 ]; Lag_CB_ptr = &SKP_Silk_CB_lags_stage3_10_ms[ 0 ][ 0 ]; - cbk_offset = 0; nb_cbk_search = PE_NB_CBKS_STAGE3_10MS; cbk_size = PE_NB_CBKS_STAGE3_10MS; } @@ -584,7 +578,7 @@ static void SKP_P_Ana_calc_corr_st3( } delta = matrix_ptr( Lag_range_ptr, k, 0, 2 ); - for( i = cbk_offset; i < ( cbk_offset + nb_cbk_search ); i++ ) { + for( i = 0; i < nb_cbk_search; i++ ) { /* Fill out the 3 dim array that stores the correlations for */ /* each code_book vector for each start lag */ idx = matrix_ptr( Lag_CB_ptr, k, i, cbk_size ) - delta; @@ -614,7 +608,7 @@ calculated recursively. const SKP_float *target_ptr, *basis_ptr; double energy; SKP_int k, i, j, lag_counter; - SKP_int cbk_offset, nb_cbk_search, delta, idx, cbk_size, lag_diff; + SKP_int nb_cbk_search, delta, idx, cbk_size, lag_diff; SKP_float scratch_mem[ SCRATCH_SIZE ]; const SKP_int8 *Lag_range_ptr, *Lag_CB_ptr; @@ -624,14 +618,12 @@ calculated recursively. if( nb_subfr == PE_MAX_NB_SUBFR ){ Lag_range_ptr = &SKP_Silk_Lag_range_stage3[ complexity ][ 0 ][ 0 ]; Lag_CB_ptr = &SKP_Silk_CB_lags_stage3[ 0 ][ 0 ]; - cbk_offset = SKP_Silk_cbk_offsets_stage3[ complexity ]; - nb_cbk_search = SKP_Silk_nb_cbk_searchs_stage3[ complexity ]; + nb_cbk_search = SKP_Silk_nb_cbk_searchs_stage3[ complexity ]; cbk_size = PE_NB_CBKS_STAGE3_MAX; } else { SKP_assert( nb_subfr == PE_MAX_NB_SUBFR >> 1); Lag_range_ptr = &SKP_Silk_Lag_range_stage3_10_ms[ 0 ][ 0 ]; Lag_CB_ptr = &SKP_Silk_CB_lags_stage3_10_ms[ 0 ][ 0 ]; - cbk_offset = 0; nb_cbk_search = PE_NB_CBKS_STAGE3_10MS; cbk_size = PE_NB_CBKS_STAGE3_10MS; } @@ -662,7 +654,7 @@ calculated recursively. } delta = matrix_ptr( Lag_range_ptr, k, 0, 2 ); - for( i = cbk_offset; i < ( cbk_offset + nb_cbk_search ); i++ ) { + for( i = 0; i < nb_cbk_search; i++ ) { /* Fill out the 3 dim array that stores the correlations for */ /* each code_book vector for each start lag */ idx = matrix_ptr( Lag_CB_ptr, k, i, cbk_size ) - delta; diff --git a/src_SigProc_FLP/SKP_Silk_pitch_est_defines_FLP.h b/src_SigProc_FLP/SKP_Silk_pitch_est_defines_FLP.h deleted file mode 100644 index 562768583b27f62144a2ca7f6aedbb0826128bb3..0000000000000000000000000000000000000000 --- a/src_SigProc_FLP/SKP_Silk_pitch_est_defines_FLP.h +++ /dev/null @@ -1,42 +0,0 @@ -/*********************************************************************** -Copyright (c) 2006-2010, Skype Limited. All rights reserved. -Redistribution and use in source and binary forms, with or without -modification, (subject to the limitations in the disclaimer below) -are permitted provided that the following conditions are met: -- Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. -- Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -- Neither the name of Skype Limited, nor the names of specific -contributors, may be used to endorse or promote products derived from -this software without specific prior written permission. -NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED -BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, -BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -***********************************************************************/ - -#ifndef SIGPROCFLP_PE_DEFINES_H -#define SIGPROCFLP_PE_DEFINES_H - -#include "SKP_Silk_common_pitch_est_defines.h" - -/************************************************************/ -/* Definitions For FLP pitch estimator */ -/************************************************************/ - -#define PE_FLP_SHORTLAG_BIAS 0.2f /* for logarithmic weighting */ -#define PE_FLP_PREVLAG_BIAS 0.2f /* for logarithmic weighting */ -#define PE_FLP_FLATCONTOUR_BIAS 0.05f - -#endif - diff --git a/src_SigProc_FLP/SigProc_FLP.vcproj b/src_SigProc_FLP/SigProc_FLP.vcproj deleted file mode 100644 index 2048ea9b01af7cab108f61e412200f58143e96f7..0000000000000000000000000000000000000000 --- a/src_SigProc_FLP/SigProc_FLP.vcproj +++ /dev/null @@ -1,248 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="8,00" - Name="SigProc_FLP" - ProjectGUID="{793D0EC2-8554-4674-9A97-F25DE5DBE926}" - RootNamespace="Silk" - Keyword="Win32Proj" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory="$(SolutionDir)" - IntermediateDirectory="$(ConfigurationName)" - ConfigurationType="4" - CharacterSet="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - FavorSizeOrSpeed="0" - AdditionalIncludeDirectories="../interface;../src_SigProc_FIX" - PreprocessorDefinitions="WIN32;_DEBUG;_LIB;" - MinimalRebuild="true" - BasicRuntimeChecks="3" - RuntimeLibrary="1" - FloatingPointModel="2" - UsePrecompiledHeader="0" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="4" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - OutputFile="SKP_Silk_SigProcFIX_Win32_debug.lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - CommandLine="" - /> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory="$(SolutionDir)" - IntermediateDirectory="$(ConfigurationName)" - ConfigurationType="4" - CharacterSet="1" - WholeProgramOptimization="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - InlineFunctionExpansion="0" - FavorSizeOrSpeed="0" - AdditionalIncludeDirectories="../interface;../src_SigProc_FIX" - PreprocessorDefinitions="WIN32;NDEBUG;_LIB" - GeneratePreprocessedFile="0" - RuntimeLibrary="0" - FloatingPointModel="2" - UsePrecompiledHeader="0" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - OutputFile="SKP_Silk_SigProcFIX_Win32_mt.lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - CommandLine="" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="Source Files" - Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx" - UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" - > - <File - RelativePath=".\SKP_Silk_allpass_int_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_autocorrelation_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_burg_modified_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_bwexpander_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_decimate2_coarse_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_decimate2_coarsest_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_energy_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_inner_product_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_k2a_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_levinsondurbin_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_LPC_inv_pred_gain_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_NLSF_VQ_weights_laroia_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_pitch_analysis_core_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_scale_copy_vector_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_scale_vector_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_schur_FLP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_sort_FLP.c" - > - </File> - </Filter> - <Filter - Name="Header Files" - Filter="h;hpp;hxx;hm;inl;inc;xsd" - UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}" - > - <File - RelativePath=".\SKP_Silk_pitch_est_defines_FLP.h" - > - </File> - <File - RelativePath=".\SKP_Silk_SigProc_FLP.h" - > - </File> - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/src_SigProc_FLP/src_SigProc_FLP.vcxproj b/src_SigProc_FLP/src_SigProc_FLP.vcxproj new file mode 100644 index 0000000000000000000000000000000000000000..9a11f3741626219f2769a3a8ea02614b42393862 --- /dev/null +++ b/src_SigProc_FLP/src_SigProc_FLP.vcxproj @@ -0,0 +1,101 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|Win32"> + <Configuration>Debug</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{06D10292-A23C-4C5E-9C0F-28737769206F}</ProjectGuid> + <Keyword>Win32Proj</Keyword> + <RootNamespace>src_SigProc_FLP</RootNamespace> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <CharacterSet>Unicode</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <WholeProgramOptimization>true</WholeProgramOptimization> + <CharacterSet>Unicode</CharacterSet> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="ExtensionSettings"> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup /> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <ClCompile> + <PrecompiledHeader> + </PrecompiledHeader> + <WarningLevel>Level3</WarningLevel> + <Optimization>Disabled</Optimization> + <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>../interface;../src_SigProc_FIX</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Windows</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <PrecompiledHeader> + </PrecompiledHeader> + <Optimization>MaxSpeed</Optimization> + <FunctionLevelLinking>true</FunctionLevelLinking> + <IntrinsicFunctions>true</IntrinsicFunctions> + <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>../interface;../src_SigProc_FIX</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Windows</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <OptimizeReferences>true</OptimizeReferences> + </Link> + </ItemDefinitionGroup> + <ItemGroup> + <None Include="ReadMe.txt" /> + </ItemGroup> + <ItemGroup> + <ClInclude Include="SKP_Silk_SigProc_FLP.h" /> + </ItemGroup> + <ItemGroup> + <ClCompile Include="SKP_Silk_allpass_int_FLP.c" /> + <ClCompile Include="SKP_Silk_autocorrelation_FLP.c" /> + <ClCompile Include="SKP_Silk_burg_modified_FLP.c" /> + <ClCompile Include="SKP_Silk_bwexpander_FLP.c" /> + <ClCompile Include="SKP_Silk_decimate2_coarsest_FLP.c" /> + <ClCompile Include="SKP_Silk_decimate2_coarse_FLP.c" /> + <ClCompile Include="SKP_Silk_energy_FLP.c" /> + <ClCompile Include="SKP_Silk_inner_product_FLP.c" /> + <ClCompile Include="SKP_Silk_k2a_FLP.c" /> + <ClCompile Include="SKP_Silk_levinsondurbin_FLP.c" /> + <ClCompile Include="SKP_Silk_LPC_inv_pred_gain_FLP.c" /> + <ClCompile Include="SKP_Silk_NLSF_VQ_weights_laroia_FLP.c" /> + <ClCompile Include="SKP_Silk_pitch_analysis_core_FLP.c" /> + <ClCompile Include="SKP_Silk_scale_copy_vector_FLP.c" /> + <ClCompile Include="SKP_Silk_scale_vector_FLP.c" /> + <ClCompile Include="SKP_Silk_schur_FLP.c" /> + <ClCompile Include="SKP_Silk_sort_FLP.c" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project> \ No newline at end of file diff --git a/src_SigProc_FLP/src_SigProc_FLP.vcxproj.filters b/src_SigProc_FLP/src_SigProc_FLP.vcxproj.filters new file mode 100644 index 0000000000000000000000000000000000000000..b25f49a65d157e573b5c3bf344596bb3b0ad4b4d --- /dev/null +++ b/src_SigProc_FLP/src_SigProc_FLP.vcxproj.filters @@ -0,0 +1,78 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Source Files"> + <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> + <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> + </Filter> + <Filter Include="Header Files"> + <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> + <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions> + </Filter> + <Filter Include="Resource Files"> + <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> + <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> + </Filter> + </ItemGroup> + <ItemGroup> + <None Include="ReadMe.txt" /> + </ItemGroup> + <ItemGroup> + <ClInclude Include="SKP_Silk_SigProc_FLP.h"> + <Filter>Header Files</Filter> + </ClInclude> + </ItemGroup> + <ItemGroup> + <ClCompile Include="SKP_Silk_allpass_int_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_autocorrelation_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_burg_modified_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_bwexpander_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_decimate2_coarse_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_decimate2_coarsest_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_energy_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_inner_product_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_k2a_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_levinsondurbin_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_LPC_inv_pred_gain_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_NLSF_VQ_weights_laroia_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_pitch_analysis_core_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_scale_copy_vector_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_scale_vector_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_schur_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_sort_FLP.c"> + <Filter>Source Files</Filter> + </ClCompile> + </ItemGroup> +</Project> \ No newline at end of file diff --git a/src_common/SKP_Silk_NSQ_del_dec.c b/src_common/SKP_Silk_NSQ_del_dec.c index 3138c1e704ec88738ffbee270162fb743fde5893..4113c200e281a1de9d092b320bb4536305ff6cf7 100644 --- a/src_common/SKP_Silk_NSQ_del_dec.c +++ b/src_common/SKP_Silk_NSQ_del_dec.c @@ -294,8 +294,8 @@ void SKP_Silk_NSQ_del_dec( SKP_memmove( NSQ->sLTP_shp_Q10, &NSQ->sLTP_shp_Q10[ psEncC->frame_length ], psEncC->ltp_mem_length * sizeof( SKP_int32 ) ); #ifdef SAVE_ALL_INTERNAL_DATA - DEBUG_STORE_DATA( sLTP_Q16, &sLTP_Q16[ psEncC->frame_length ], psEncC->frame_length * sizeof( SKP_int32 ) ); - DEBUG_STORE_DATA( xq.dat, NSQ->xq, psEncC->frame_length * sizeof( SKP_int16 ) ); + DEBUG_STORE_DATA( sLTP_Q16.dat, &sLTP_Q16[ psEncC->frame_length ], psEncC->frame_length * sizeof( SKP_int32 ) ); + DEBUG_STORE_DATA( xq.dat, NSQ->xq, psEncC->frame_length * sizeof( SKP_int16 ) ); #endif } @@ -526,7 +526,7 @@ SKP_INLINE void SKP_Silk_noise_shape_quantizer_del_dec( Winner_ind = 0; for( k = 1; k < nStatesDelayedDecision; k++ ) { if( psSampleState[ k ][ 0 ].RD_Q10 < RDmin_Q10 ) { - RDmin_Q10 = psSampleState[ k ][ 0 ].RD_Q10; + RDmin_Q10 = psSampleState[ k ][ 0 ].RD_Q10; Winner_ind = k; } } diff --git a/src_FIX/SKP_Silk_VQ_nearest_neighbor_FIX.c b/src_common/SKP_Silk_VQ_WMat_EC.c similarity index 84% rename from src_FIX/SKP_Silk_VQ_nearest_neighbor_FIX.c rename to src_common/SKP_Silk_VQ_WMat_EC.c index 5c71574549d6ba9a8a4d6b7c4183403322091343..1b3ceb441c1bc7658461e1e29e93dcfe803ce007 100644 --- a/src_FIX/SKP_Silk_VQ_nearest_neighbor_FIX.c +++ b/src_common/SKP_Silk_VQ_WMat_EC.c @@ -25,37 +25,37 @@ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ***********************************************************************/ -#include "SKP_Silk_main_FIX.h" +#include "SKP_Silk_main.h" -/* Entropy constrained MATRIX-weighted VQ, hard-coded to 5-element vectors, for a single input data vector */ -void SKP_Silk_VQ_WMat_EC_FIX( +/* Entropy constrained matrix-weighted VQ, hard-coded to 5-element vectors, for a single input data vector */ +void SKP_Silk_VQ_WMat_EC( SKP_int *ind, /* O index of best codebook vector */ SKP_int32 *rate_dist_Q14, /* O best weighted quantization error + mu * rate*/ const SKP_int16 *in_Q14, /* I input vector to be quantized */ const SKP_int32 *W_Q18, /* I weighting matrix */ - const SKP_int16 *cb_Q14, /* I codebook */ - const SKP_int16 *cl_Q6, /* I code length for each codebook vector */ - const SKP_int mu_Q8, /* I tradeoff between weighted error and rate */ + const SKP_int8 *cb_Q7, /* I codebook */ + const SKP_int8 *cl_Q4, /* I code length for each codebook vector */ + const SKP_int mu_Q10, /* I tradeoff between weighted error and rate */ SKP_int L /* I number of vectors in codebook */ ) { SKP_int k; - const SKP_int16 *cb_row_Q14; + const SKP_int8 *cb_row_Q7; SKP_int16 diff_Q14[ 5 ]; SKP_int32 sum1_Q14, sum2_Q16; /* Loop over codebook */ *rate_dist_Q14 = SKP_int32_MAX; - cb_row_Q14 = cb_Q14; + cb_row_Q7 = cb_Q7; for( k = 0; k < L; k++ ) { - diff_Q14[ 0 ] = in_Q14[ 0 ] - cb_row_Q14[ 0 ]; - diff_Q14[ 1 ] = in_Q14[ 1 ] - cb_row_Q14[ 1 ]; - diff_Q14[ 2 ] = in_Q14[ 2 ] - cb_row_Q14[ 2 ]; - diff_Q14[ 3 ] = in_Q14[ 3 ] - cb_row_Q14[ 3 ]; - diff_Q14[ 4 ] = in_Q14[ 4 ] - cb_row_Q14[ 4 ]; + diff_Q14[ 0 ] = in_Q14[ 0 ] - SKP_LSHIFT( cb_row_Q7[ 0 ], 7 ); + diff_Q14[ 1 ] = in_Q14[ 1 ] - SKP_LSHIFT( cb_row_Q7[ 1 ], 7 ); + diff_Q14[ 2 ] = in_Q14[ 2 ] - SKP_LSHIFT( cb_row_Q7[ 2 ], 7 ); + diff_Q14[ 3 ] = in_Q14[ 3 ] - SKP_LSHIFT( cb_row_Q7[ 3 ], 7 ); + diff_Q14[ 4 ] = in_Q14[ 4 ] - SKP_LSHIFT( cb_row_Q7[ 4 ], 7 ); /* Weighted rate */ - sum1_Q14 = SKP_SMULBB( mu_Q8, cl_Q6[ k ] ); + sum1_Q14 = SKP_SMULBB( mu_Q10, cl_Q4[ k ] ); SKP_assert( sum1_Q14 >= 0 ); @@ -102,6 +102,6 @@ void SKP_Silk_VQ_WMat_EC_FIX( } /* Go to next cbk vector */ - cb_row_Q14 += LTP_ORDER; + cb_row_Q7 += LTP_ORDER; } } diff --git a/src_common/SKP_Silk_code_signs.c b/src_common/SKP_Silk_code_signs.c index ed51eb91cc04a15de7791ce73bf6b42c15a78ec1..2bb82319b3204fce57ba6820ad8e254791844eec 100644 --- a/src_common/SKP_Silk_code_signs.c +++ b/src_common/SKP_Silk_code_signs.c @@ -43,17 +43,17 @@ void SKP_Silk_encode_signs( const SKP_int RateLevelIndex /* I Rate level index */ ) { - SKP_int i; - SKP_int inData; - SKP_uint16 prob; + SKP_int i, inData; + SKP_uint8 icdf[ 2 ]; i = SKP_SMULBB( N_RATE_LEVELS - 1, SKP_LSHIFT( sigtype, 1 ) + QuantOffsetType ) + RateLevelIndex; - prob = 65536 - SKP_Silk_sign_CDF[ i ]; + icdf[ 0 ] = SKP_Silk_sign_iCDF[ i ]; + icdf[ 1 ] = 0; for( i = 0; i < length; i++ ) { if( q[ i ] != 0 ) { inData = SKP_enc_map( q[ i ] ); /* - = 0, + = 1 */ - ec_enc_bit_prob( psRangeEnc, inData, prob ); + ec_enc_icdf( psRangeEnc, inData, icdf, 8 ); } } } @@ -68,18 +68,16 @@ void SKP_Silk_decode_signs( const SKP_int RateLevelIndex /* I Rate Level Index */ ) { - SKP_int i; - SKP_int data; - SKP_uint16 cdf[ 3 ]; + SKP_int i, data; + SKP_uint8 icdf[ 2 ]; i = SKP_SMULBB( N_RATE_LEVELS - 1, SKP_LSHIFT( sigtype, 1 ) + QuantOffsetType ) + RateLevelIndex; - cdf[ 0 ] = 0; - cdf[ 1 ] = SKP_Silk_sign_CDF[ i ]; - cdf[ 2 ] = 65535; + icdf[ 0 ] = SKP_Silk_sign_iCDF[ i ]; + icdf[ 1 ] = 0; for( i = 0; i < length; i++ ) { if( q[ i ] > 0 ) { - SKP_Silk_range_decoder( &data, psRangeDec, cdf, 1 ); + data = ec_dec_icdf( psRangeDec, icdf, 8 ); /* attach sign */ /* implementation with shift, subtraction, multiplication */ q[ i ] *= SKP_dec_map( data ); diff --git a/src_common/SKP_Silk_control_audio_bandwidth.c b/src_common/SKP_Silk_control_audio_bandwidth.c index 7e4c5f77522dcefed55a0c299cc62eff79b9658b..1d00c98c5b198f91cb21497094df789ed131ae2e 100644 --- a/src_common/SKP_Silk_control_audio_bandwidth.c +++ b/src_common/SKP_Silk_control_audio_bandwidth.c @@ -99,22 +99,23 @@ SKP_int SKP_Silk_control_audio_bandwidth( ( psEncC->fs_kHz == 12 ) && ( psEncC->maxInternal_fs_kHz >= 16 ) || ( psEncC->fs_kHz == 8 ) && ( psEncC->maxInternal_fs_kHz >= 12 ) ) #if SWITCH_TRANSITION_FILTERING - && ( psEncC->sLP.transition_frame_no == 0 ) ) { /* No transition phase running, ready to switch */ - psEncC->sLP.mode = 1; /* Switch up */ + && ( psEncC->sLP.transition_frame_no == 0 ) ) /* No transition phase running, ready to switch */ + { + psEncC->sLP.mode = 1; /* Switch up */ #else - ) { + ) { #endif - psEncC->bitrateDiff = 0; + psEncC->bitrateDiff = 0; - /* Switch to a higher sample frequency */ - if( psEncC->fs_kHz == 8 ) { - fs_kHz = 12; - } else if( psEncC->fs_kHz == 12 ) { - fs_kHz = 16; - } else { - SKP_assert( psEncC->fs_kHz == 16 ); - fs_kHz = 24; - } + /* Switch to a higher sample frequency */ + if( psEncC->fs_kHz == 8 ) { + fs_kHz = 12; + } else if( psEncC->fs_kHz == 12 ) { + fs_kHz = 16; + } else { + SKP_assert( psEncC->fs_kHz == 16 ); + fs_kHz = 24; + } } } } @@ -133,5 +134,9 @@ SKP_int SKP_Silk_control_audio_bandwidth( #endif } +#ifdef FORCE_INTERNAL_FS_KHZ + fs_kHz = FORCE_INTERNAL_FS_KHZ; +#endif + return fs_kHz; } diff --git a/src_common/SKP_Silk_dec_API.c b/src_common/SKP_Silk_dec_API.c index 46b6ae12f183797fb0485f878ef066932a956a55..b5fa3ec9237d8ff18e447154606c9ee36d1edcdf 100644 --- a/src_common/SKP_Silk_dec_API.c +++ b/src_common/SKP_Silk_dec_API.c @@ -64,7 +64,7 @@ SKP_int SKP_Silk_SDK_Decode( ec_dec *psRangeDec, /* I/O Compressor data structure */ const SKP_int nBytesIn, /* I: Number of input bytes */ SKP_int16 *samplesOut, /* O: Decoded output speech vector */ - SKP_int32 *nSamplesOut /* I/O: Number of samples (vector/decoded) */ + SKP_int32 *nSamplesOut /* O: Number of samples decoded */ ) { SKP_int ret = SKP_SILK_NO_ERROR, used_bytes, prev_fs_kHz; @@ -170,7 +170,7 @@ SKP_int SKP_Silk_SDK_Decode( psDec->prev_API_sampleRate = decControl->API_sampleRate; /* Copy all parameters that are needed out of internal structure to the control stucture */ - decControl->frameSize = ( SKP_int )psDec->frame_length; + decControl->frameSize = ( SKP_int )*nSamplesOut; decControl->framesPerPayload = ( SKP_int )psDec->nFramesInPacket; decControl->inBandFECOffset = ( SKP_int )psDec->inband_FEC_offset; decControl->moreInternalDecoderFrames = ( SKP_int )psDec->moreInternalDecoderFrames; diff --git a/src_common/SKP_Silk_decode_core.c b/src_common/SKP_Silk_decode_core.c index 0c3efddb9c56579046be7e0d4b688523ba5d8bec..619e2fbd7aaa3a88c073abdb1fb97cda11a685b3 100644 --- a/src_common/SKP_Silk_decode_core.c +++ b/src_common/SKP_Silk_decode_core.c @@ -37,14 +37,13 @@ void SKP_Silk_decode_core( const SKP_int q[ MAX_FRAME_LENGTH ] /* I Pulse signal */ ) { - SKP_int i, k, lag = 0, start_idx, sLTP_buf_idx, NLSF_interpolation_flag, sigtype, LTP_scale_Q14; + SKP_int i, j, k, lag = 0, start_idx, sLTP_buf_idx, NLSF_interpolation_flag, sigtype; SKP_int16 *A_Q12, *B_Q14, *pxq, A_Q12_tmp[ MAX_LPC_ORDER ]; SKP_int16 sLTP[ MAX_FRAME_LENGTH ]; SKP_int32 LTP_pred_Q14, LPC_pred_Q10, Gain_Q16, inv_gain_Q16, inv_gain_Q32, gain_adj_Q16, rand_seed, offset_Q10, dither; SKP_int32 *pred_lag_ptr, *pexc_Q10, *pres_Q10; SKP_int32 vec_Q10[ MAX_SUB_FRAME_LENGTH ]; SKP_int32 FiltState[ MAX_LPC_ORDER ]; - SKP_int j; SKP_assert( psDec->prev_inv_gain_Q16 != 0 ); @@ -57,7 +56,7 @@ void SKP_Silk_decode_core( } #ifdef SAVE_ALL_INTERNAL_DATA - DEBUG_STORE_DATA( q_dec.dat, q, psDec->frame_length * sizeof( SKP_int ) ); + //DEBUG_STORE_DATA( q_dec.dat, q, psDec->frame_length * sizeof( SKP_int ) ); #endif /* Decode excitation */ @@ -91,7 +90,6 @@ void SKP_Silk_decode_core( SKP_memcpy( A_Q12_tmp, A_Q12, psDec->LPC_order * sizeof( SKP_int16 ) ); B_Q14 = &psDecCtrl->LTPCoef_Q14[ k * LTP_ORDER ]; Gain_Q16 = psDecCtrl->Gains_Q16[ k ]; - LTP_scale_Q14 = psDecCtrl->LTP_scale_Q14; sigtype = psDecCtrl->sigtype; inv_gain_Q16 = SKP_INVERSE32_varQ( SKP_max( Gain_Q16, 1 ), 32 ); @@ -112,7 +110,6 @@ void SKP_Silk_decode_core( sigtype = SIG_TYPE_VOICED; psDecCtrl->pitchL[ k ] = psDec->lagPrev; - LTP_scale_Q14 = ( SKP_int )1 << 14; } if( sigtype == SIG_TYPE_VOICED ) { @@ -225,7 +222,7 @@ void SKP_Silk_decode_core( SKP_memcpy( xq, &psDec->outBuf[ psDec->ltp_mem_length ], psDec->frame_length * sizeof( SKP_int16 ) ); #ifdef SAVE_ALL_INTERNAL_DATA - DEBUG_STORE_DATA( LTP_buf_Q16.dat, &psDec->sLTP_Q16[psDec->frame_length], psDec->frame_length * sizeof( SKP_int32 )); - DEBUG_STORE_DATA( xq_dec.dat, xq, psDec->frame_length * sizeof( SKP_int16 ) ); + //DEBUG_STORE_DATA( LTP_buf_Q16.dat, &psDec->sLTP_Q16[psDec->frame_length], psDec->frame_length * sizeof( SKP_int32 )); + //DEBUG_STORE_DATA( xq_dec.dat, xq, psDec->frame_length * sizeof( SKP_int16 ) ); #endif } diff --git a/src_common/SKP_Silk_decode_frame.c b/src_common/SKP_Silk_decode_frame.c index 16849ed4a4e5d71fc430e7f0f3529988f9d7d88e..5fc33c9bbc2dfe8d8893e21a0225abe8766e4e5e 100644 --- a/src_common/SKP_Silk_decode_frame.c +++ b/src_common/SKP_Silk_decode_frame.c @@ -142,7 +142,7 @@ TOC(decode_core) /************************************************/ /* Comfort noise generation / estimation */ /************************************************/ - SKP_Silk_CNG( psDec, &sDecCtrl, pOut , L ); + SKP_Silk_CNG( psDec, &sDecCtrl, pOut, L ); /********************************************/ /* HP filter output */ @@ -150,7 +150,7 @@ TOC(decode_core) SKP_assert( ( ( psDec->fs_kHz == 12 ) && ( L % 3 ) == 0 ) || ( ( psDec->fs_kHz != 12 ) && ( L % 2 ) == 0 ) ); TIC(HP_out) - SKP_Silk_biquad( pOut, psDec->HP_B, psDec->HP_A, psDec->HPState, pOut, L ); + SKP_Silk_biquad_alt( pOut, psDec->HP_B, psDec->HP_A, psDec->HPState, pOut, L ); TOC(HP_out) /********************************************/ diff --git a/src_common/SKP_Silk_decode_indices.c b/src_common/SKP_Silk_decode_indices.c index 53495df47465b9197238fce6d1eea9a0a343143c..790c88174fd30cff80fa0a5717a7ea4a83a23cd5 100644 --- a/src_common/SKP_Silk_decode_indices.c +++ b/src_common/SKP_Silk_decode_indices.c @@ -34,7 +34,7 @@ void SKP_Silk_decode_indices( ) { SKP_int i, k, Ix, FrameIndex; - SKP_int sigtype, QuantOffsetType, seed_int, nBytesUsed; + SKP_int sigtype, QuantOffsetType, nBytesUsed; SKP_int decode_absolute_lagIndex, delta_lagIndex, prev_lagIndex = 0; const SKP_Silk_NLSF_CB_struct *psNLSF_CB = NULL; @@ -42,18 +42,17 @@ void SKP_Silk_decode_indices( /*******************/ /* Decode VAD flag */ /*******************/ - SKP_Silk_range_decoder( &psDec->vadFlagBuf[ FrameIndex ], psRangeDec, SKP_Silk_vadflag_CDF, SKP_Silk_vadflag_offset ); + psDec->vadFlagBuf[ FrameIndex ] = ec_dec_icdf( psRangeDec, SKP_Silk_vadflag_iCDF, 8 ); /*******************************************/ /* Decode signal type and quantizer offset */ /*******************************************/ if( FrameIndex == 0 ) { - /* first frame in packet: independent coding */ - SKP_Silk_range_decoder( &Ix, psRangeDec, SKP_Silk_type_offset_CDF, SKP_Silk_type_offset_CDF_offset ); + /* first frame in packet: independent coding, in two stages: MSB bits followed by 3 LSBs */ + Ix = ec_dec_icdf( psRangeDec, SKP_Silk_type_offset_iCDF, 8 ); } else { /* condidtional coding */ - SKP_Silk_range_decoder( &Ix, psRangeDec, SKP_Silk_type_offset_joint_CDF[ psDec->typeOffsetPrev ], - SKP_Silk_type_offset_CDF_offset ); + Ix = ec_dec_icdf( psRangeDec, SKP_Silk_type_offset_joint_iCDF[ psDec->typeOffsetPrev ], 8 ); } sigtype = SKP_RSHIFT( Ix, 1 ); QuantOffsetType = Ix & 1; @@ -65,15 +64,17 @@ void SKP_Silk_decode_indices( /* first subframe */ if( FrameIndex == 0 ) { /* first frame in packet: independent coding */ - SKP_Silk_range_decoder( &psDec->GainsIndices[ FrameIndex ][ 0 ], psRangeDec, SKP_Silk_gain_CDF[ sigtype ], SKP_Silk_gain_CDF_offset ); + psDec->GainsIndices[ FrameIndex ][ 0 ] = SKP_LSHIFT( ec_dec_icdf( psRangeDec, SKP_Silk_gain_iCDF[ sigtype ], 8 ), 3 ); + //psDec->GainsIndices[ FrameIndex ][ 0 ] += ec_dec_bits( psRangeDec, 3 ); /* doesn't work somehow */ + psDec->GainsIndices[ FrameIndex ][ 0 ] += ec_dec_icdf( psRangeDec, SKP_Silk_uniform8_iCDF, 8 ); } else { /* condidtional coding */ - SKP_Silk_range_decoder( &psDec->GainsIndices[ FrameIndex ][ 0 ], psRangeDec, SKP_Silk_delta_gain_CDF, SKP_Silk_delta_gain_CDF_offset ); + psDec->GainsIndices[ FrameIndex ][ 0 ] = ec_dec_icdf( psRangeDec, SKP_Silk_delta_gain_iCDF, 8 ); } /* remaining subframes */ for( i = 1; i < psDec->nb_subfr; i++ ) { - SKP_Silk_range_decoder( &psDec->GainsIndices[ FrameIndex ][ i ], psRangeDec, SKP_Silk_delta_gain_CDF, SKP_Silk_delta_gain_CDF_offset ); + psDec->GainsIndices[ FrameIndex ][ i ] = ec_dec_icdf( psRangeDec, SKP_Silk_delta_gain_iCDF, 8 ); } /**********************/ @@ -83,16 +84,15 @@ void SKP_Silk_decode_indices( /* Set pointer to LSF VQ CB for the current signal type */ psNLSF_CB = psDec->psNLSF_CB[ sigtype ]; - /* Arithmetically decode NLSF path */ + /* Range decoding of the NLSF path */ for( i = 0; i < psNLSF_CB->nStages; i++ ) { - SKP_Silk_range_decoder( &psDec->NLSFIndices[ FrameIndex ][ i ], psRangeDec, psNLSF_CB->StartPtr[ i ], psNLSF_CB->MiddleIx[ i ] ); + psDec->NLSFIndices[ FrameIndex ][ i ] = ec_dec_icdf( psRangeDec, psNLSF_CB->StartPtr[ i ], 8 ); } /***********************************/ /* Decode LSF interpolation factor */ /***********************************/ - SKP_Silk_range_decoder( &psDec->NLSFInterpCoef_Q2[ FrameIndex ], psRangeDec, SKP_Silk_NLSF_interpolation_factor_CDF, - SKP_Silk_NLSF_interpolation_factor_offset ); + psDec->NLSFInterpCoef_Q2[ FrameIndex ] = ec_dec_icdf( psRangeDec, SKP_Silk_NLSF_interpolation_factor_iCDF, 8 ); if( sigtype == SIG_TYPE_VOICED ) { /*********************/ @@ -102,58 +102,43 @@ void SKP_Silk_decode_indices( decode_absolute_lagIndex = 1; if( FrameIndex > 0 && psDec->sigtype[ FrameIndex - 1 ] == SIG_TYPE_VOICED ) { /* Decode Delta index */ - SKP_Silk_range_decoder( &delta_lagIndex, psRangeDec, SKP_Silk_pitch_delta_CDF, SKP_Silk_pitch_delta_CDF_offset ); - if( delta_lagIndex < ( MAX_DELTA_LAG << 1 ) + 1 ) { - delta_lagIndex = delta_lagIndex - MAX_DELTA_LAG; + delta_lagIndex = ec_dec_icdf( psRangeDec, SKP_Silk_pitch_delta_iCDF, 8 ); + if( delta_lagIndex > 0 ) { + delta_lagIndex = delta_lagIndex - 9; psDec->lagIndex[ FrameIndex ] = prev_lagIndex + delta_lagIndex; decode_absolute_lagIndex = 0; } } if( decode_absolute_lagIndex ) { /* Absolute decoding */ - if( psDec->fs_kHz == 8 ) { - SKP_Silk_range_decoder( &psDec->lagIndex[ FrameIndex ], psRangeDec, SKP_Silk_pitch_lag_NB_CDF, SKP_Silk_pitch_lag_NB_CDF_offset ); - } else if( psDec->fs_kHz == 12 ) { - SKP_Silk_range_decoder( &psDec->lagIndex[ FrameIndex ], psRangeDec, SKP_Silk_pitch_lag_MB_CDF, SKP_Silk_pitch_lag_MB_CDF_offset ); - } else if( psDec->fs_kHz == 16 ) { - SKP_Silk_range_decoder( &psDec->lagIndex[ FrameIndex ], psRangeDec, SKP_Silk_pitch_lag_WB_CDF, SKP_Silk_pitch_lag_WB_CDF_offset ); - } else { - SKP_Silk_range_decoder( &psDec->lagIndex[ FrameIndex ], psRangeDec, SKP_Silk_pitch_lag_SWB_CDF, SKP_Silk_pitch_lag_SWB_CDF_offset ); - } + psDec->lagIndex[ FrameIndex ] = ec_dec_icdf( psRangeDec, SKP_Silk_pitch_lag_iCDF, 8 ) * SKP_RSHIFT( psDec->fs_kHz, 1 ); + psDec->lagIndex[ FrameIndex ] += ec_dec_icdf( psRangeDec, psDec->pitch_lag_low_bits_iCDF, 8 ); } prev_lagIndex = psDec->lagIndex[ FrameIndex ]; /* Get countour index */ - if( psDec->fs_kHz == 8 ) { - /* Less codevectors used in 8 khz mode */ - SKP_Silk_range_decoder( &psDec->contourIndex[ FrameIndex ], psRangeDec, SKP_Silk_pitch_contour_NB_CDF, SKP_Silk_pitch_contour_NB_CDF_offset ); - } else { - /* Joint for 12, 16, and 24 khz */ - SKP_Silk_range_decoder( &psDec->contourIndex[ FrameIndex ], psRangeDec, SKP_Silk_pitch_contour_CDF, SKP_Silk_pitch_contour_CDF_offset ); - } + psDec->contourIndex[ FrameIndex ] = ec_dec_icdf( psRangeDec, psDec->pitch_contour_iCDF, 8 ); /********************/ /* Decode LTP gains */ /********************/ /* Decode PERIndex value */ - SKP_Silk_range_decoder( &psDec->PERIndex[ FrameIndex ], psRangeDec, SKP_Silk_LTP_per_index_CDF, SKP_Silk_LTP_per_index_CDF_offset ); - + psDec->PERIndex[ FrameIndex ] = ec_dec_icdf( psRangeDec, SKP_Silk_LTP_per_index_iCDF, 8 ); + for( k = 0; k < psDec->nb_subfr; k++ ) { - SKP_Silk_range_decoder( &psDec->LTPIndex[ FrameIndex ][ k ], psRangeDec, SKP_Silk_LTP_gain_CDF_ptrs[ psDec->PERIndex[ FrameIndex ] ], - SKP_Silk_LTP_gain_CDF_offsets[ psDec->PERIndex[ FrameIndex ] ] ); + psDec->LTPIndex[ FrameIndex ][ k ] = ec_dec_icdf( psRangeDec, SKP_Silk_LTP_gain_iCDF_ptrs[ psDec->PERIndex[ FrameIndex ] ], 8 ); } /**********************/ /* Decode LTP scaling */ /**********************/ - SKP_Silk_range_decoder( &psDec->LTP_scaleIndex[ FrameIndex ], psRangeDec, SKP_Silk_LTPscale_CDF, SKP_Silk_LTPscale_offset ); + psDec->LTP_scaleIndex[ FrameIndex ] = ec_dec_icdf( psRangeDec, SKP_Silk_LTPscale_iCDF, 8 ); } /***************/ /* Decode seed */ /***************/ - SKP_Silk_range_decoder( &seed_int, psRangeDec, SKP_Silk_Seed_CDF, SKP_Silk_Seed_offset ); - psDec->Seed[ FrameIndex ] = ( SKP_int32 )seed_int; + psDec->Seed[ FrameIndex ] = ec_dec_icdf( psRangeDec, SKP_Silk_Seed_iCDF, 8 ); psDec->sigtype[ FrameIndex ] = sigtype; psDec->QuantOffsetType[ FrameIndex ] = QuantOffsetType; @@ -162,7 +147,7 @@ void SKP_Silk_decode_indices( /**************************************/ /* Decode Frame termination indicator */ /**************************************/ - SKP_Silk_range_decoder( &psDec->FrameTermination, psRangeDec, SKP_Silk_FrameTermination_CDF, SKP_Silk_FrameTermination_offset ); + psDec->FrameTermination = ec_dec_icdf( psRangeDec, SKP_Silk_FrameTermination_iCDF, 8 ); /****************************************/ /* get number of bytes used so far */ diff --git a/src_common/SKP_Silk_decode_parameters.c b/src_common/SKP_Silk_decode_parameters.c index 2628545a9b0b7f86110383148cab7b688b437044..d1123061c62f155a429fe3c25174f7a39011b366 100644 --- a/src_common/SKP_Silk_decode_parameters.c +++ b/src_common/SKP_Silk_decode_parameters.c @@ -38,7 +38,7 @@ void SKP_Silk_decode_parameters( { SKP_int i, k, Ix, nBytesUsed; SKP_int pNLSF_Q15[ MAX_LPC_ORDER ], pNLSF0_Q15[ MAX_LPC_ORDER ]; - const SKP_int16 *cbk_ptr_Q14; + const SKP_int8 *cbk_ptr_Q7; const SKP_Silk_NLSF_CB_struct *psNLSF_CB = NULL; psDecCtrl->sigtype = psDec->sigtype[ psDec->nFramesDecoded ]; @@ -108,12 +108,12 @@ void SKP_Silk_decode_parameters( psDecCtrl->PERIndex = psDec->PERIndex[ psDec->nFramesDecoded ]; /* Decode Codebook Index */ - cbk_ptr_Q14 = SKP_Silk_LTP_vq_ptrs_Q14[ psDecCtrl->PERIndex ]; /* set pointer to start of codebook */ + cbk_ptr_Q7 = SKP_Silk_LTP_vq_ptrs_Q7[ psDecCtrl->PERIndex ]; /* set pointer to start of codebook */ for( k = 0; k < psDec->nb_subfr; k++ ) { Ix = psDec->LTPIndex[ psDec->nFramesDecoded ][ k ]; for( i = 0; i < LTP_ORDER; i++ ) { - psDecCtrl->LTPCoef_Q14[ k * LTP_ORDER + i ] = cbk_ptr_Q14[ Ix * LTP_ORDER + i ]; + psDecCtrl->LTPCoef_Q14[ k * LTP_ORDER + i ] = SKP_LSHIFT( cbk_ptr_Q7[ Ix * LTP_ORDER + i ], 7 ); } } diff --git a/src_common/SKP_Silk_decode_pulses.c b/src_common/SKP_Silk_decode_pulses.c index 503757aa759c7c64b49ec49d3c9568848350408b..546b7264ecf0b0cfb096581c125e0cbd6e11a4d2 100644 --- a/src_common/SKP_Silk_decode_pulses.c +++ b/src_common/SKP_Silk_decode_pulses.c @@ -37,7 +37,7 @@ void SKP_Silk_decode_pulses( const SKP_int frame_length /* I Frame length (preliminary) */ ) { - SKP_int i, j, k, iter, abs_q, nLS, bit; + SKP_int i, j, k, iter, abs_q, nLS; SKP_int sum_pulses[ MAX_NB_SHELL_BLOCKS ], nLshifts[ MAX_NB_SHELL_BLOCKS ]; SKP_int *pulses_ptr; const SKP_uint16 *cdf_ptr; @@ -93,8 +93,7 @@ void SKP_Silk_decode_pulses( abs_q = pulses_ptr[ k ]; for( j = 0; j < nLS; j++ ) { abs_q = SKP_LSHIFT( abs_q, 1 ); - SKP_Silk_range_decoder( &bit, psRangeDec, SKP_Silk_lsb_CDF, 1 ); - abs_q += bit; + abs_q += ec_dec_icdf( psRangeDec, SKP_Silk_lsb_iCDF, 8 ); } pulses_ptr[ k ] = abs_q; } diff --git a/src_common/SKP_Silk_decoder_set_fs.c b/src_common/SKP_Silk_decoder_set_fs.c index 0a8edb62f27758bc4fdbd8c8def28fbb7ff427db..cf2a133d94f441510d47e88a78ff5e8dedfc61a0 100644 --- a/src_common/SKP_Silk_decoder_set_fs.c +++ b/src_common/SKP_Silk_decoder_set_fs.c @@ -43,10 +43,26 @@ void SKP_Silk_decoder_set_fs( psDec->LPC_order = MIN_LPC_ORDER; psDec->psNLSF_CB[ 0 ] = &SKP_Silk_NLSF_CB0_10; psDec->psNLSF_CB[ 1 ] = &SKP_Silk_NLSF_CB1_10; + if( psDec->nb_subfr == MAX_NB_SUBFR ){ + psDec->pitch_contour_iCDF = SKP_Silk_pitch_contour_NB_iCDF; + } else if( psDec->nb_subfr == MAX_NB_SUBFR / 2 ){ + psDec->pitch_contour_iCDF = SKP_Silk_pitch_contour_10_ms_NB_iCDF; + } else { + /* Unsupported number of frames */ + SKP_assert( 0 ); + } } else { psDec->LPC_order = MAX_LPC_ORDER; psDec->psNLSF_CB[ 0 ] = &SKP_Silk_NLSF_CB0_16; psDec->psNLSF_CB[ 1 ] = &SKP_Silk_NLSF_CB1_16; + if( psDec->nb_subfr == MAX_NB_SUBFR ){ + psDec->pitch_contour_iCDF = SKP_Silk_pitch_contour_iCDF; + } else if( psDec->nb_subfr == MAX_NB_SUBFR / 2 ){ + psDec->pitch_contour_iCDF = SKP_Silk_pitch_contour_10_ms_iCDF; + } else { + /* Unsupported number of frames */ + SKP_assert( 0 ); + } } /* Reset part of the decoder state */ SKP_memset( psDec->sLPC_Q14, 0, MAX_LPC_ORDER * sizeof( SKP_int32 ) ); @@ -61,15 +77,19 @@ void SKP_Silk_decoder_set_fs( if( fs_kHz == 24 ) { psDec->HP_A = SKP_Silk_Dec_A_HP_24; psDec->HP_B = SKP_Silk_Dec_B_HP_24; + psDec->pitch_lag_low_bits_iCDF = SKP_Silk_uniform12_iCDF; } else if( fs_kHz == 16 ) { psDec->HP_A = SKP_Silk_Dec_A_HP_16; psDec->HP_B = SKP_Silk_Dec_B_HP_16; + psDec->pitch_lag_low_bits_iCDF = SKP_Silk_uniform8_iCDF; } else if( fs_kHz == 12 ) { psDec->HP_A = SKP_Silk_Dec_A_HP_12; psDec->HP_B = SKP_Silk_Dec_B_HP_12; + psDec->pitch_lag_low_bits_iCDF = SKP_Silk_uniform6_iCDF; } else if( fs_kHz == 8 ) { psDec->HP_A = SKP_Silk_Dec_A_HP_8; psDec->HP_B = SKP_Silk_Dec_B_HP_8; + psDec->pitch_lag_low_bits_iCDF = SKP_Silk_uniform4_iCDF; } else { /* unsupported sampling rate */ SKP_assert( 0 ); diff --git a/src_common/SKP_Silk_define.h b/src_common/SKP_Silk_define.h index 79f20b039971610c6a976d2cb63715297e4c1b1d..add2cc367fc3beca70d4b55cf38dd5deb80c8cc0 100644 --- a/src_common/SKP_Silk_define.h +++ b/src_common/SKP_Silk_define.h @@ -46,20 +46,17 @@ extern "C" # define FIXED_POINT 0 #endif -/* MAX DELTA LAG used for multiframe packets */ -#define MAX_DELTA_LAG 10 - /* Limits on bitrate */ #define MIN_TARGET_RATE_BPS 5000 -#define MAX_TARGET_RATE_BPS 100000 +#define MAX_TARGET_RATE_BPS SKP_uint16_MAX /* Transition bitrates between modes */ -#define SWB2WB_BITRATE_BPS 25000 -#define WB2SWB_BITRATE_BPS 30000 -#define WB2MB_BITRATE_BPS 14000 -#define MB2WB_BITRATE_BPS 18000 -#define MB2NB_BITRATE_BPS 10000 -#define NB2MB_BITRATE_BPS 14000 +#define SWB2WB_BITRATE_BPS 24000 +#define WB2SWB_BITRATE_BPS 28000 +#define WB2MB_BITRATE_BPS 12000 +#define MB2WB_BITRATE_BPS 16000 +#define MB2NB_BITRATE_BPS 9000 +#define NB2MB_BITRATE_BPS 12000 /* Integration/hysteresis threshold for lowering internal sample frequency */ /* 30000000 -> 6 sec if bitrate is 5000 bps below limit; 3 sec if bitrate is 10000 bps below limit */ @@ -135,10 +132,6 @@ extern "C" #define FIND_PITCH_LPC_WIN_MS_2_SF ( 10 + (LA_PITCH_MS << 1) ) #define FIND_PITCH_LPC_WIN_MAX ( FIND_PITCH_LPC_WIN_MS * MAX_FS_KHZ ) -#define PITCH_EST_COMPLEXITY_HC_MODE SKP_Silk_PE_MAX_COMPLEX -#define PITCH_EST_COMPLEXITY_MC_MODE SKP_Silk_PE_MID_COMPLEX -#define PITCH_EST_COMPLEXITY_LC_MODE SKP_Silk_PE_MIN_COMPLEX - /* Milliseconds of lookahead for noise shape analysis */ #define LA_SHAPE_MS 5 #define LA_SHAPE_MAX ( LA_SHAPE_MS * MAX_FS_KHZ ) @@ -150,13 +143,13 @@ extern "C" #define MAX_ARITHM_BYTES 1024 /* dB level of lowest gain quantization level */ -#define MIN_QGAIN_DB 6 +#define MIN_QGAIN_DB 2 /* dB level of highest gain quantization level */ -#define MAX_QGAIN_DB 86 +#define MAX_QGAIN_DB 88 /* Number of gain quantization levels */ #define N_LEVELS_QGAIN 64 /* Max increase in gain quantization index */ -#define MAX_DELTA_GAIN_QUANT 40 +#define MAX_DELTA_GAIN_QUANT 38 /* Max decrease in gain quantization index */ #define MIN_DELTA_GAIN_QUANT -4 @@ -164,7 +157,7 @@ extern "C" #define OFFSET_VL_Q10 32 #define OFFSET_VH_Q10 100 #define OFFSET_UVL_Q10 100 -#define OFFSET_UVH_Q10 256 +#define OFFSET_UVH_Q10 240 /* Maximum numbers of iterations used to stabilize a LPC vector */ #define MAX_LPC_STABILIZE_ITERATIONS 20 diff --git a/src_common/SKP_Silk_encode_parameters.c b/src_common/SKP_Silk_encode_parameters.c index cb876a345903a258a73c404122e92eb377a3a3ff..accd3d5ab06540abcd60f5858d25fb9931c1a82d 100644 --- a/src_common/SKP_Silk_encode_parameters.c +++ b/src_common/SKP_Silk_encode_parameters.c @@ -48,7 +48,7 @@ void SKP_Silk_encode_parameters( /*********************************************/ /* Encode VAD flag */ /*********************************************/ - ec_enc_bit_prob( psRangeEnc, psEncC->vadFlag, 65536 - SKP_Silk_vadflag_CDF[ 1 ] ); + ec_enc_icdf( psRangeEnc, psEncC->vadFlag, SKP_Silk_vadflag_iCDF, 8 ); /*******************************************/ /* Encode signal type and quantizer offset */ @@ -56,12 +56,10 @@ void SKP_Silk_encode_parameters( typeOffset = 2 * psEncCtrlC->sigtype + psEncCtrlC->QuantOffsetType; if( psEncC->nFramesInPayloadBuf == 0 ) { /* first frame in packet: independent coding */ - ec_encode_bin( psRangeEnc, SKP_Silk_type_offset_CDF[ typeOffset ], - SKP_Silk_type_offset_CDF[ typeOffset + 1 ], 16 ); + ec_enc_icdf( psRangeEnc, typeOffset, SKP_Silk_type_offset_iCDF, 8 ); } else { /* condidtional coding */ - ec_encode_bin( psRangeEnc, SKP_Silk_type_offset_joint_CDF[ psEncC->typeOffsetPrev ][ typeOffset ], - SKP_Silk_type_offset_joint_CDF[ psEncC->typeOffsetPrev ][ typeOffset + 1 ], 16 ); + ec_enc_icdf( psRangeEnc, typeOffset, SKP_Silk_type_offset_joint_iCDF[ psEncC->typeOffsetPrev ], 8 ); } psEncC->typeOffsetPrev = typeOffset; @@ -73,19 +71,18 @@ void SKP_Silk_encode_parameters( #endif /* first subframe */ if( psEncC->nFramesInPayloadBuf == 0 ) { - /* first frame in packet: independent coding */ - ec_encode_bin( psRangeEnc, SKP_Silk_gain_CDF[ psEncCtrlC->sigtype ][ psEncCtrlC->GainsIndices[ 0 ] ], - SKP_Silk_gain_CDF[ psEncCtrlC->sigtype ][ psEncCtrlC->GainsIndices[ 0 ] + 1 ], 16 ); + /* first frame in packet: independent coding, in two stages: MSB bits followed by 3 LSBs */ + ec_enc_icdf( psRangeEnc, SKP_RSHIFT( psEncCtrlC->GainsIndices[ 0 ], 3 ), SKP_Silk_gain_iCDF[ psEncCtrlC->sigtype ], 8 ); + //ec_enc_bits( psRangeEnc, psEncCtrlC->GainsIndices[ 0 ] & 7, 3 ); /* doesn't work somehow */ + ec_enc_icdf( psRangeEnc, psEncCtrlC->GainsIndices[ 0 ] & 7, SKP_Silk_uniform8_iCDF, 8 ); } else { /* condidtional coding */ - ec_encode_bin( psRangeEnc, SKP_Silk_delta_gain_CDF[ psEncCtrlC->GainsIndices[ 0 ] ], - SKP_Silk_delta_gain_CDF[ psEncCtrlC->GainsIndices[ 0 ] + 1 ], 16 ); + ec_enc_icdf( psRangeEnc, psEncCtrlC->GainsIndices[ 0 ], SKP_Silk_delta_gain_iCDF, 8 ); } /* remaining subframes */ for( i = 1; i < psEncC->nb_subfr; i++ ) { - ec_encode_bin( psRangeEnc, SKP_Silk_delta_gain_CDF[ psEncCtrlC->GainsIndices[ i ] ], - SKP_Silk_delta_gain_CDF[ psEncCtrlC->GainsIndices[ i ] + 1 ], 16 ); + ec_enc_icdf( psRangeEnc, psEncCtrlC->GainsIndices[ i ], SKP_Silk_delta_gain_iCDF, 8 ); } #ifdef SAVE_ALL_INTERNAL_DATA @@ -103,16 +100,15 @@ void SKP_Silk_encode_parameters( /* Range encoding of the NLSF path */ psNLSF_CB = psEncC->psNLSF_CB[ psEncCtrlC->sigtype ]; for( i = 0; i < psNLSF_CB->nStages; i++ ) { - ec_encode_bin( psRangeEnc, psNLSF_CB->StartPtr[ i ][ psEncCtrlC->NLSFIndices[ i ] ], - psNLSF_CB->StartPtr[ i ][ psEncCtrlC->NLSFIndices[ i ] + 1 ], 16 ); + ec_enc_icdf( psRangeEnc, psEncCtrlC->NLSFIndices[ i ], psNLSF_CB->StartPtr[ i ], 8 ); } /* Encode NLSF interpolation factor */ SKP_assert( psEncC->useInterpolatedNLSFs == 1 || psEncCtrlC->NLSFInterpCoef_Q2 == ( 1 << 2 ) ); - ec_encode_bin( psRangeEnc, SKP_Silk_NLSF_interpolation_factor_CDF[ psEncCtrlC->NLSFInterpCoef_Q2 ], - SKP_Silk_NLSF_interpolation_factor_CDF[ psEncCtrlC->NLSFInterpCoef_Q2 + 1 ], 16 ); + ec_enc_icdf( psRangeEnc, psEncCtrlC->NLSFInterpCoef_Q2, SKP_Silk_NLSF_interpolation_factor_iCDF, 8 ); #ifdef SAVE_ALL_INTERNAL_DATA + DEBUG_STORE_DATA( lsf_interpol.dat, &psEncCtrlC->NLSFInterpCoef_Q2, sizeof(int) ); nBytes_after = SKP_RSHIFT( ec_enc_tell( psRangeEnc, 0 ) + 7, 3 ); nBytes_after -= nBytes_before; // bytes just added DEBUG_STORE_DATA( nBytes_LSF.dat, &nBytes_after, sizeof( SKP_int ) ); @@ -130,32 +126,24 @@ void SKP_Silk_encode_parameters( if( psEncC->nFramesInPayloadBuf > 0 && psEncC->prev_sigtype == SIG_TYPE_VOICED ) { /* Delta Encoding */ delta_lagIndex = psEncCtrlC->lagIndex - psEncC->prev_lagIndex; - if( delta_lagIndex > MAX_DELTA_LAG ) { - delta_lagIndex = ( MAX_DELTA_LAG << 1 ) + 1; - } else if ( delta_lagIndex < -MAX_DELTA_LAG ) { - delta_lagIndex = ( MAX_DELTA_LAG << 1 ) + 1; + if( delta_lagIndex < -8 || delta_lagIndex > 11 ) { + delta_lagIndex = 0; } else { - delta_lagIndex = delta_lagIndex + MAX_DELTA_LAG; + delta_lagIndex = delta_lagIndex + 9; encode_absolute_lagIndex = 0; /* Only use delta */ } - ec_encode_bin( psRangeEnc, SKP_Silk_pitch_delta_CDF[ delta_lagIndex ], - SKP_Silk_pitch_delta_CDF[ delta_lagIndex + 1 ], 16 ); + SKP_assert( delta_lagIndex < 21 ); + ec_enc_icdf( psRangeEnc, delta_lagIndex, SKP_Silk_pitch_delta_iCDF, 8 ); } if( encode_absolute_lagIndex ) { /* Absolute encoding */ - if( psEncC->fs_kHz == 8 ) { - ec_encode_bin( psRangeEnc, SKP_Silk_pitch_lag_NB_CDF[ psEncCtrlC->lagIndex ], - SKP_Silk_pitch_lag_NB_CDF[ psEncCtrlC->lagIndex + 1 ], 16 ); - } else if( psEncC->fs_kHz == 12 ) { - ec_encode_bin( psRangeEnc, SKP_Silk_pitch_lag_MB_CDF[ psEncCtrlC->lagIndex ], - SKP_Silk_pitch_lag_MB_CDF[ psEncCtrlC->lagIndex + 1 ], 16 ); - } else if( psEncC->fs_kHz == 16 ) { - ec_encode_bin( psRangeEnc, SKP_Silk_pitch_lag_WB_CDF[ psEncCtrlC->lagIndex ], - SKP_Silk_pitch_lag_WB_CDF[ psEncCtrlC->lagIndex + 1 ], 16 ); - } else { - ec_encode_bin( psRangeEnc, SKP_Silk_pitch_lag_SWB_CDF[ psEncCtrlC->lagIndex ], - SKP_Silk_pitch_lag_SWB_CDF[ psEncCtrlC->lagIndex + 1 ], 16 ); - } + SKP_int32 pitch_high_bits, pitch_low_bits; + pitch_high_bits = SKP_DIV32_16( psEncCtrlC->lagIndex, SKP_RSHIFT( psEncC->fs_kHz, 1 ) ); + pitch_low_bits = psEncCtrlC->lagIndex - SKP_SMULBB( pitch_high_bits, SKP_RSHIFT( psEncC->fs_kHz, 1 ) ); + SKP_assert( pitch_low_bits < psEncC->fs_kHz / 2 ); + SKP_assert( pitch_high_bits < 32 ); + ec_enc_icdf( psRangeEnc, pitch_high_bits, SKP_Silk_pitch_lag_iCDF, 8 ); + ec_enc_icdf( psRangeEnc, pitch_low_bits, psEncC->pitch_lag_low_bits_iCDF, 8 ); } psEncC->prev_lagIndex = psEncCtrlC->lagIndex; @@ -167,16 +155,12 @@ void SKP_Silk_encode_parameters( #ifdef SAVE_ALL_INTERNAL_DATA nBytes_before = SKP_RSHIFT( ec_enc_tell( psRangeEnc, 0 ) + 7, 3 ); #endif - /* countour index */ - if( psEncC->fs_kHz == 8 ) { - /* Less codevectors used in 8 khz mode */ - ec_encode_bin( psRangeEnc, SKP_Silk_pitch_contour_NB_CDF[ psEncCtrlC->contourIndex ], - SKP_Silk_pitch_contour_NB_CDF[ psEncCtrlC->contourIndex + 1 ], 16 ); - } else { - /* Joint for 12, 16, 24 khz */ - ec_encode_bin( psRangeEnc, SKP_Silk_pitch_contour_CDF[ psEncCtrlC->contourIndex ], - SKP_Silk_pitch_contour_CDF[ psEncCtrlC->contourIndex + 1 ], 16 ); - } + /* Countour index */ + SKP_assert( ( psEncCtrlC->contourIndex < 34 && psEncC->fs_kHz > 8 && psEncC->nb_subfr == 4 ) || + ( psEncCtrlC->contourIndex < 11 && psEncC->fs_kHz == 8 && psEncC->nb_subfr == 4 ) || + ( psEncCtrlC->contourIndex < 12 && psEncC->fs_kHz > 8 && psEncC->nb_subfr == 2 ) || + ( psEncCtrlC->contourIndex < 3 && psEncC->fs_kHz == 8 && psEncC->nb_subfr == 2 ) ); + ec_enc_icdf( psRangeEnc, psEncCtrlC->contourIndex, psEncC->pitch_contour_iCDF, 8 ); #ifdef SAVE_ALL_INTERNAL_DATA nBytes_after = SKP_RSHIFT( ec_enc_tell( psRangeEnc, 0 ) + 7, 3 ); nBytes_contourIndex = nBytes_after - nBytes_before; // bytes just added @@ -190,20 +174,17 @@ void SKP_Silk_encode_parameters( #endif /* PERIndex value */ - ec_encode_bin( psRangeEnc, SKP_Silk_LTP_per_index_CDF[ psEncCtrlC->PERIndex ], - SKP_Silk_LTP_per_index_CDF[ psEncCtrlC->PERIndex + 1 ], 16 ); + ec_enc_icdf( psRangeEnc, psEncCtrlC->PERIndex, SKP_Silk_LTP_per_index_iCDF, 8 ); /* Codebook Indices */ for( k = 0; k < psEncC->nb_subfr; k++ ) { - ec_encode_bin( psRangeEnc, SKP_Silk_LTP_gain_CDF_ptrs[ psEncCtrlC->PERIndex ][ psEncCtrlC->LTPIndex[ k ] ], - SKP_Silk_LTP_gain_CDF_ptrs[ psEncCtrlC->PERIndex ][ psEncCtrlC->LTPIndex[ k ] + 1 ], 16 ); + ec_enc_icdf( psRangeEnc, psEncCtrlC->LTPIndex[ k ], SKP_Silk_LTP_gain_iCDF_ptrs[ psEncCtrlC->PERIndex ], 8 ); } /**********************/ /* Encode LTP scaling */ /**********************/ - ec_encode_bin( psRangeEnc, SKP_Silk_LTPscale_CDF[ psEncCtrlC->LTP_scaleIndex ], - SKP_Silk_LTPscale_CDF[ psEncCtrlC->LTP_scaleIndex + 1 ], 16 ); + ec_enc_icdf( psRangeEnc, psEncCtrlC->LTP_scaleIndex, SKP_Silk_LTPscale_iCDF, 8 ); #ifdef SAVE_ALL_INTERNAL_DATA nBytes_after = SKP_RSHIFT( ec_enc_tell( psRangeEnc, 0 ) + 7, 3 ); nBytes_LTP = nBytes_after - nBytes_before; // bytes just added @@ -228,6 +209,5 @@ void SKP_Silk_encode_parameters( /***************/ /* Encode seed */ /***************/ - ec_encode_bin( psRangeEnc, SKP_Silk_Seed_CDF[ psEncCtrlC->Seed ], - SKP_Silk_Seed_CDF[ psEncCtrlC->Seed + 1 ], 16 ); + ec_enc_icdf( psRangeEnc, psEncCtrlC->Seed, SKP_Silk_Seed_iCDF, 8 ); } diff --git a/src_common/SKP_Silk_encode_pulses.c b/src_common/SKP_Silk_encode_pulses.c index c04919eea2f46c7a21fc9aa553b5524a417d8436..36bcade04d70c88085ba117588ad7e56d58b5223 100644 --- a/src_common/SKP_Silk_encode_pulses.c +++ b/src_common/SKP_Silk_encode_pulses.c @@ -207,10 +207,10 @@ void SKP_Silk_encode_pulses( abs_q = (SKP_int8)SKP_abs( pulses_ptr[ k ] ); for( j = nLS; j > 0; j-- ) { bit = SKP_RSHIFT( abs_q, j ) & 1; - ec_enc_bit_prob( psRangeEnc, bit, 65536 - SKP_Silk_lsb_CDF[ 1 ] ); + ec_enc_icdf( psRangeEnc, bit, SKP_Silk_lsb_iCDF, 8 ); } bit = abs_q & 1; - ec_enc_bit_prob( psRangeEnc, bit, 65536 - SKP_Silk_lsb_CDF[ 1 ] ); + ec_enc_icdf( psRangeEnc, bit, SKP_Silk_lsb_iCDF, 8 ); } } } diff --git a/src_common/SKP_Silk_gain_quant.c b/src_common/SKP_Silk_gain_quant.c index de89e3e8719cb23acc0bc42f1938d9f8f92a6dec..db5986d4ba3988dc5821b57534bb87a0cde5d1f3 100644 --- a/src_common/SKP_Silk_gain_quant.c +++ b/src_common/SKP_Silk_gain_quant.c @@ -27,9 +27,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "SKP_Silk_main.h" -#define OFFSET ( ( MIN_QGAIN_DB * 128 ) / 6 + 16 * 128 ) -#define SCALE_Q16 ( ( 65536 * ( N_LEVELS_QGAIN - 1 ) ) / ( ( ( MAX_QGAIN_DB - MIN_QGAIN_DB ) * 128 ) / 6 ) ) -#define INV_SCALE_Q16 ( ( 65536 * ( ( ( MAX_QGAIN_DB - MIN_QGAIN_DB ) * 128 ) / 6 ) ) / ( N_LEVELS_QGAIN - 1 ) ) +#define OFFSET ( ( MIN_QGAIN_DB * 128 ) / 6 + 16 * 128 ) +#define SCALE_Q16 ( ( 65536 * ( N_LEVELS_QGAIN - 1 ) ) / ( ( ( MAX_QGAIN_DB - MIN_QGAIN_DB ) * 128 ) / 6 ) ) +#define INV_SCALE_Q16 ( ( 65536 * ( ( ( MAX_QGAIN_DB - MIN_QGAIN_DB ) * 128 ) / 6 ) ) / ( N_LEVELS_QGAIN - 1 ) ) /* Gain scalar quantization with hysteresis, uniform on log scale */ void SKP_Silk_gains_quant( @@ -40,7 +40,7 @@ void SKP_Silk_gains_quant( const SKP_int nb_subfr /* I number of subframes */ ) { - SKP_int k; + SKP_int k, double_step_size_threshold; for( k = 0; k < nb_subfr; k++ ) { /* Add half of previous quantization error, convert to log scale, scale, floor() */ @@ -50,18 +50,32 @@ void SKP_Silk_gains_quant( if( ind[ k ] < *prev_ind ) { ind[ k ]++; } + ind[ k ] = SKP_max_int( ind[ k ], 0 ); /* Compute delta indices and limit */ if( k == 0 && conditional == 0 ) { /* Full index */ - ind[ k ] = SKP_LIMIT_int( ind[ k ], 0, N_LEVELS_QGAIN - 1 ); - ind[ k ] = SKP_max_int( ind[ k ], *prev_ind + MIN_DELTA_GAIN_QUANT ); + ind[ k ] = SKP_LIMIT_int( ind[ k ], *prev_ind + MIN_DELTA_GAIN_QUANT, N_LEVELS_QGAIN - 1 ); *prev_ind = ind[ k ]; } else { /* Delta index */ - ind[ k ] = SKP_LIMIT_int( ind[ k ] - *prev_ind, MIN_DELTA_GAIN_QUANT, MAX_DELTA_GAIN_QUANT ); + ind[ k ] = ind[ k ] - *prev_ind; + + /* Double the quantization step size is doubled for large gain increases, so that the max gain level can be reached */ + double_step_size_threshold = 2 * MAX_DELTA_GAIN_QUANT - N_LEVELS_QGAIN + *prev_ind; + if( ind[ k ] > double_step_size_threshold ) { + ind[ k ] = double_step_size_threshold + SKP_RSHIFT( ind[ k ] - double_step_size_threshold + 1, 1 ); + } + + ind[ k ] = SKP_LIMIT_int( ind[ k ], MIN_DELTA_GAIN_QUANT, MAX_DELTA_GAIN_QUANT ); + /* Accumulate deltas */ - *prev_ind += ind[ k ]; + if( ind[ k ] > double_step_size_threshold ) { + *prev_ind += SKP_LSHIFT( ind[ k ], 1 ) - double_step_size_threshold; + } else { + *prev_ind += ind[ k ]; + } + /* Shift to make non-negative */ ind[ k ] -= MIN_DELTA_GAIN_QUANT; } @@ -80,14 +94,22 @@ void SKP_Silk_gains_dequant( const SKP_int nb_subfr /* I number of subframes */ ) { - SKP_int k; + SKP_int k, ind_tmp, double_step_size_threshold; for( k = 0; k < nb_subfr; k++ ) { if( k == 0 && conditional == 0 ) { *prev_ind = ind[ k ]; } else { /* Delta index */ - *prev_ind += ind[ k ] + MIN_DELTA_GAIN_QUANT; + ind_tmp = ind[ k ] + MIN_DELTA_GAIN_QUANT; + + /* Accumulate deltas */ + double_step_size_threshold = 2 * MAX_DELTA_GAIN_QUANT - N_LEVELS_QGAIN + *prev_ind; + if( ind[ k ] > double_step_size_threshold ) { + *prev_ind += SKP_LSHIFT( ind_tmp, 1 ) - double_step_size_threshold; + } else { + *prev_ind += ind_tmp; + } } /* Convert to linear scale and scale */ diff --git a/src_common/SKP_Silk_main.h b/src_common/SKP_Silk_main.h index 3f277bbb83ff18a65eeb2da1d0dc71db3a08cbd5..bfceea71bc373a79c95f5c9bfc14b88d55ce8262 100644 --- a/src_common/SKP_Silk_main.h +++ b/src_common/SKP_Silk_main.h @@ -43,6 +43,12 @@ extern "C" #include "entdec.h" +/* Uncomment the next line to store intermadiate data to files */ +//#define SAVE_ALL_INTERNAL_DATA 1 +/* Uncomment the next line to force a fixed internal sampling rate (independent of what bitrate is used */ +//#define FORCE_INTERNAL_FS_KHZ 16 + + /* Encodes signs of excitation */ void SKP_Silk_encode_signs( ec_enc *psRangeEnc, /* I/O Compressor data structure */ @@ -140,6 +146,29 @@ void SKP_Silk_interpolate( const SKP_int d /* I number of parameters */ ); +/* LTP tap quantizer */ +void SKP_Silk_quant_LTP_gains( + SKP_int16 B_Q14[ MAX_NB_SUBFR * LTP_ORDER ], /* I/O (un)quantized LTP gains */ + SKP_int cbk_index[ MAX_NB_SUBFR ], /* O Codebook Index */ + SKP_int *periodicity_index, /* O Periodicity Index */ + const SKP_int32 W_Q18[ MAX_NB_SUBFR*LTP_ORDER*LTP_ORDER ], /* I Error Weights in Q18 */ + SKP_int mu_Q10, /* I Mu value (R/D tradeoff) */ + SKP_int lowComplexity, /* I Flag for low complexity */ + const SKP_int nb_subfr /* I number of subframes */ +); + +/* Entropy constrained matrix-weighted VQ, for a single input data vector */ +void SKP_Silk_VQ_WMat_EC( + SKP_int *ind, /* O index of best codebook vector */ + SKP_int32 *rate_dist_Q14, /* O best weighted quantization error + mu * rate*/ + const SKP_int16 *in_Q14, /* I input vector to be quantized */ + const SKP_int32 *W_Q18, /* I weighting matrix */ + const SKP_int8 *cb_Q7, /* I codebook */ + const SKP_int8 *cl_Q4, /* I code length for each codebook vector */ + const SKP_int mu_Q10, /* I tradeoff between weighted error and rate */ + SKP_int L /* I number of vectors in codebook */ +); + /***********************************/ /* Noise shaping quantization (NSQ)*/ /***********************************/ diff --git a/src_common/SKP_Silk_perceptual_parameters.h b/src_common/SKP_Silk_perceptual_parameters.h deleted file mode 100644 index 1fcf718aafb134852e39cd218c8066d21062a960..0000000000000000000000000000000000000000 --- a/src_common/SKP_Silk_perceptual_parameters.h +++ /dev/null @@ -1,115 +0,0 @@ -/*********************************************************************** -Copyright (c) 2006-2010, Skype Limited. All rights reserved. -Redistribution and use in source and binary forms, with or without -modification, (subject to the limitations in the disclaimer below) -are permitted provided that the following conditions are met: -- Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. -- Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -- Neither the name of Skype Limited, nor the names of specific -contributors, may be used to endorse or promote products derived from -this software without specific prior written permission. -NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED -BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, -BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -***********************************************************************/ - -#ifndef SKP_SILK_PERCEPTUAL_PARAMETERS_H -#define SKP_SILK_PERCEPTUAL_PARAMETERS_H - -#ifdef __cplusplus -extern "C" -{ -#endif - -/* reduction in coding SNR during low speech activity */ -#define BG_SNR_DECR_dB 4.0f - -/* factor for reducing quantization noise during voiced speech */ -#define HARM_SNR_INCR_dB 2.0f - -/* factor for reducing quantization noise for unvoiced sparse signals */ -#define SPARSE_SNR_INCR_dB 2.0f - -/* threshold for sparseness measure above which to use lower quantization offset during unvoiced */ -#define SPARSENESS_THRESHOLD_QNT_OFFSET 0.75f - - -/* noise shaping filter chirp factor */ -#define BANDWIDTH_EXPANSION 0.95f - -/* difference between chirp factors for analysis and synthesis noise shaping filters at low bitrates */ -#define LOW_RATE_BANDWIDTH_EXPANSION_DELTA 0.01f - -/* factor to reduce all bandwdith expansion coefficients for super wideband, relative to wideband */ -#define SWB_BANDWIDTH_EXPANSION_REDUCTION 1.0f - -/* gain reduction for fricatives */ -#define DE_ESSER_COEF_SWB_dB 2.0f -#define DE_ESSER_COEF_WB_dB 1.0f - -/* extra harmonic boosting (signal shaping) at low bitrates */ -#define LOW_RATE_HARMONIC_BOOST 0.1f - -/* extra harmonic boosting (signal shaping) for noisy input signals */ -#define LOW_INPUT_QUALITY_HARMONIC_BOOST 0.1f - -/* harmonic noise shaping */ -#define HARMONIC_SHAPING 0.3f - -/* extra harmonic noise shaping for high bitrates or noisy input */ -#define HIGH_RATE_OR_LOW_QUALITY_HARMONIC_SHAPING 0.2f - - -/* parameter for shaping noise towards higher frequencies */ -#define HP_NOISE_COEF 0.3f - -/* parameter for shaping noise extra towards higher frequencies during voiced speech */ -#define HARM_HP_NOISE_COEF 0.4f - -/* parameter for applying a high-pass tilt to the input signal */ -#define INPUT_TILT 0.04f - -/* parameter for extra high-pass tilt to the input signal at high rates */ -#define HIGH_RATE_INPUT_TILT 0.04f - -/* parameter for reducing noise at the very low frequencies */ -#define LOW_FREQ_SHAPING 3.0f - -/* less reduction of noise at the very low frequencies for signals with low SNR at low frequencies */ -#define LOW_QUALITY_LOW_FREQ_SHAPING_DECR 0.5f - -/* fraction added to first autocorrelation value */ -#define SHAPE_WHITE_NOISE_FRACTION 3.8147e-5f - -/* fraction of first autocorrelation value added to residual energy value; limits prediction gain */ -#define SHAPE_MIN_ENERGY_RATIO 1.526e-5f // 1.526e-5 = 1/65536 - -/* noise floor to put a low limit on the quantization step size */ -#define NOISE_FLOOR_dB 4.0f - -/* noise floor relative to active speech gain level */ -#define RELATIVE_MIN_GAIN_dB -50.0f - -/* subframe smoothing coefficient for determining active speech gain level (lower -> more smoothing) */ -#define GAIN_SMOOTHING_COEF 1e-3f - -/* subframe smoothing coefficient for HarmBoost, HarmShapeGain, Tilt (lower -> more smoothing) */ -#define SUBFR_SMTH_COEF 0.4f - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/src_common/SKP_Silk_pulses_to_bytes.c b/src_common/SKP_Silk_pulses_to_bytes.c index 1138e87ff3d98d8b18b58895d5e7cb732e814e58..0129ea1c0a022e77926aa7bc824547a7a7dbf0d6 100644 --- a/src_common/SKP_Silk_pulses_to_bytes.c +++ b/src_common/SKP_Silk_pulses_to_bytes.c @@ -46,6 +46,7 @@ SKP_int SKP_Silk_pulses_to_bytes( /* O Return value, predicted number of bytes SKP_int i, j, iter; SKP_int8 *q_ptr; SKP_int32 sum_abs_val, nBytes, acc_nBytes; + /* Take the absolute value of the pulses */ iter = psEncC->frame_length / SHELL_CODEC_FRAME_LENGTH; @@ -77,5 +78,5 @@ SKP_int SKP_Silk_pulses_to_bytes( /* O Return value, predicted number of bytes acc_nBytes = SKP_RSHIFT_ROUND( acc_nBytes, 15 ); // Q0 acc_nBytes = SKP_SAT16( acc_nBytes ); // just to be sure // Q0 - return(( SKP_int )acc_nBytes); + return (SKP_int)acc_nBytes; } diff --git a/src_FIX/SKP_Silk_quant_LTP_gains_FIX.c b/src_common/SKP_Silk_quant_LTP_gains.c similarity index 58% rename from src_FIX/SKP_Silk_quant_LTP_gains_FIX.c rename to src_common/SKP_Silk_quant_LTP_gains.c index 74ea26cbfb28b246426abfa9f67c207ba1d061d4..5405186989c9c14f676b8b3e238d4d691ec012ae 100644 --- a/src_FIX/SKP_Silk_quant_LTP_gains_FIX.c +++ b/src_common/SKP_Silk_quant_LTP_gains.c @@ -25,100 +25,83 @@ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ***********************************************************************/ -#include "SKP_Silk_main_FIX.h" - -void SKP_Silk_quant_LTP_gains_FIX( - SKP_int16 B_Q14[], /* I/O (un)quantized LTP gains */ - SKP_int cbk_index[], /* O Codebook Index */ - SKP_int *periodicity_index, /* O Periodicity Index */ - const SKP_int32 W_Q18[], /* I Error Weights in Q18 */ - SKP_int mu_Q8, /* I Mu value (R/D tradeoff) */ - SKP_int lowComplexity, /* I Flag for low complexity */ - const SKP_int nb_subfr /* I number of subframes */ +#include "SKP_Silk_main.h" + +void SKP_Silk_quant_LTP_gains( + SKP_int16 B_Q14[ MAX_NB_SUBFR * LTP_ORDER ], /* I/O (un)quantized LTP gains */ + SKP_int cbk_index[ MAX_NB_SUBFR ], /* O Codebook Index */ + SKP_int *periodicity_index, /* O Periodicity Index */ + const SKP_int32 W_Q18[ MAX_NB_SUBFR*LTP_ORDER*LTP_ORDER ], /* I Error Weights in Q18 */ + SKP_int mu_Q10, /* I Mu value (R/D tradeoff) */ + SKP_int lowComplexity, /* I Flag for low complexity */ + const SKP_int nb_subfr /* I number of subframes */ ) { SKP_int j, k, temp_idx[ MAX_NB_SUBFR ], cbk_size; - const SKP_uint16 *cdf_ptr; - const SKP_int16 *cl_ptr; - const SKP_int16 *cbk_ptr_Q14; + const SKP_int8 *cl_ptr_Q4; + const SKP_int8 *cbk_ptr_Q7; const SKP_int16 *b_Q14_ptr; const SKP_int32 *W_Q18_ptr; - SKP_int32 rate_dist_subfr, rate_dist, min_rate_dist; + SKP_int32 rate_dist_Q14_subfr, rate_dist_Q14, min_rate_dist_Q14; -TIC(quant_LTP_fix) +TIC(quant_LTP) /***************************************************/ /* iterate over different codebooks with different */ /* rates/distortions, and choose best */ /***************************************************/ - min_rate_dist = SKP_int32_MAX; + min_rate_dist_Q14 = SKP_int32_MAX; for( k = 0; k < 3; k++ ) { - cdf_ptr = SKP_Silk_LTP_gain_CDF_ptrs[ k ]; - cl_ptr = SKP_Silk_LTP_gain_BITS_Q6_ptrs[ k ]; - cbk_ptr_Q14 = SKP_Silk_LTP_vq_ptrs_Q14[ k ]; - cbk_size = SKP_Silk_LTP_vq_sizes[ k ]; + cl_ptr_Q4 = SKP_Silk_LTP_gain_BITS_Q4_ptrs[ k ]; + cbk_ptr_Q7 = SKP_Silk_LTP_vq_ptrs_Q7[ k ]; + cbk_size = SKP_Silk_LTP_vq_sizes[ k ]; /* Setup pointer to first subframe */ W_Q18_ptr = W_Q18; b_Q14_ptr = B_Q14; - rate_dist = 0; + rate_dist_Q14 = 0; for( j = 0; j < nb_subfr; j++ ) { - SKP_Silk_VQ_WMat_EC_FIX( + SKP_Silk_VQ_WMat_EC( &temp_idx[ j ], /* O index of best codebook vector */ - &rate_dist_subfr, /* O best weighted quantization error + mu * rate */ + &rate_dist_Q14_subfr, /* O best weighted quantization error + mu * rate */ b_Q14_ptr, /* I input vector to be quantized */ W_Q18_ptr, /* I weighting matrix */ - cbk_ptr_Q14, /* I codebook */ - cl_ptr, /* I code length for each codebook vector */ - mu_Q8, /* I tradeoff between weighted error and rate */ + cbk_ptr_Q7, /* I codebook */ + cl_ptr_Q4, /* I code length for each codebook vector */ + mu_Q10, /* I tradeoff between weighted error and rate */ cbk_size /* I number of vectors in codebook */ ); - rate_dist = SKP_ADD_POS_SAT32( rate_dist, rate_dist_subfr ); + rate_dist_Q14 = SKP_ADD_POS_SAT32( rate_dist_Q14, rate_dist_Q14_subfr ); b_Q14_ptr += LTP_ORDER; W_Q18_ptr += LTP_ORDER * LTP_ORDER; } /* Avoid never finding a codebook */ - rate_dist = SKP_min( SKP_int32_MAX - 1, rate_dist ); + rate_dist_Q14 = SKP_min( SKP_int32_MAX - 1, rate_dist_Q14 ); - if( rate_dist < min_rate_dist ) { - min_rate_dist = rate_dist; + if( rate_dist_Q14 < min_rate_dist_Q14 ) { + min_rate_dist_Q14 = rate_dist_Q14; SKP_memcpy( cbk_index, temp_idx, nb_subfr * sizeof( SKP_int ) ); *periodicity_index = k; } /* Break early in low-complexity mode if rate distortion is below threshold */ - if( lowComplexity && ( rate_dist < SKP_Silk_LTP_gain_middle_avg_RD_Q14 ) ) { + if( lowComplexity && ( rate_dist_Q14 < SKP_Silk_LTP_gain_middle_avg_RD_Q14 ) ) { break; } } - cbk_ptr_Q14 = SKP_Silk_LTP_vq_ptrs_Q14[ *periodicity_index ]; + cbk_ptr_Q7 = SKP_Silk_LTP_vq_ptrs_Q7[ *periodicity_index ]; for( j = 0; j < nb_subfr; j++ ) { for( k = 0; k < LTP_ORDER; k++ ) { - B_Q14[ j * LTP_ORDER + k ] = cbk_ptr_Q14[ SKP_MLA( k, cbk_index[ j ], LTP_ORDER ) ]; + B_Q14[ j * LTP_ORDER + k ] = SKP_LSHIFT( cbk_ptr_Q7[ cbk_index[ j ] * LTP_ORDER + k ], 7 ); } } -TOC(quant_LTP_fix) -#ifdef SAVE_ALL_INTERNAL_DATA - /* save rate */ - { - SKP_int nbits_LTP; - SKP_float rateBPF_LTP; - - cl_ptr = SKP_Silk_LTP_gain_BITS_Q6_ptrs[*periodicity_index]; - nbits_LTP = 0; - for(j = 0; j < nb_subfr; j++){ - nbits_LTP += cl_ptr[cbk_index[j]]; - } - rateBPF_LTP = (SKP_float)nbits_LTP / 64.0f; // Q6 -> Q0 - SAVE_DATA( rateBPF_LTP.dat, &rateBPF_LTP, sizeof(SKP_float)); - } -#endif +TOC(quant_LTP) } diff --git a/src_common/SKP_Silk_setup_complexity.h b/src_common/SKP_Silk_setup_complexity.h index 63df4be8b17a72db3ef47d10744267985b43b6f8..0d24fd69dba30818ef6d0461f5d0b7215636f7ba 100644 --- a/src_common/SKP_Silk_setup_complexity.h +++ b/src_common/SKP_Silk_setup_complexity.h @@ -44,8 +44,8 @@ SKP_INLINE SKP_int SKP_Silk_setup_complexity( if( Complexity == 0 || LOW_COMPLEXITY_ONLY ) { /* Low complexity */ psEncC->Complexity = 0; - psEncC->pitchEstimationComplexity = PITCH_EST_COMPLEXITY_LC_MODE; - psEncC->pitchEstimationThreshold_Q16 = SKP_FIX_CONST( FIND_PITCH_CORRELATION_THRESHOLD_LC_MODE, 16 ); + psEncC->pitchEstimationComplexity = SKP_Silk_PE_MIN_COMPLEX; + psEncC->pitchEstimationThreshold_Q16 = SKP_FIX_CONST( FIND_PITCH_CORRELATION_THRESHOLD_LOW_COMPL_MODE, 16 ); psEncC->pitchEstimationLPCOrder = 6; psEncC->shapingLPCOrder = 8; psEncC->la_shape = 3 * psEncC->fs_kHz; @@ -57,8 +57,8 @@ SKP_INLINE SKP_int SKP_Silk_setup_complexity( } else if( Complexity == 1 ) { /* Medium complexity */ psEncC->Complexity = 1; - psEncC->pitchEstimationComplexity = PITCH_EST_COMPLEXITY_MC_MODE; - psEncC->pitchEstimationThreshold_Q16 = SKP_FIX_CONST( FIND_PITCH_CORRELATION_THRESHOLD_MC_MODE, 16 ); + psEncC->pitchEstimationComplexity = SKP_Silk_PE_MID_COMPLEX; + psEncC->pitchEstimationThreshold_Q16 = SKP_FIX_CONST( FIND_PITCH_CORRELATION_THRESHOLD_MID_COMPL_MODE, 16 ); psEncC->pitchEstimationLPCOrder = 12; psEncC->shapingLPCOrder = 12; psEncC->la_shape = 5 * psEncC->fs_kHz; @@ -70,8 +70,8 @@ SKP_INLINE SKP_int SKP_Silk_setup_complexity( } else if( Complexity == 2 ) { /* High complexity */ psEncC->Complexity = 2; - psEncC->pitchEstimationComplexity = PITCH_EST_COMPLEXITY_HC_MODE; - psEncC->pitchEstimationThreshold_Q16 = SKP_FIX_CONST( FIND_PITCH_CORRELATION_THRESHOLD_HC_MODE, 16 ); + psEncC->pitchEstimationComplexity = SKP_Silk_PE_MAX_COMPLEX; + psEncC->pitchEstimationThreshold_Q16 = SKP_FIX_CONST( FIND_PITCH_CORRELATION_THRESHOLD_HI_COMPL_MODE, 16 ); psEncC->pitchEstimationLPCOrder = 16; psEncC->shapingLPCOrder = 16; psEncC->la_shape = 5 * psEncC->fs_kHz; diff --git a/src_common/SKP_Silk_structs.h b/src_common/SKP_Silk_structs.h index 8ddac869b4ca826d7535f16ba39945147418ba3a..6b5b3898f38ef3e6ad923f3a51411e5bafa45198 100644 --- a/src_common/SKP_Silk_structs.h +++ b/src_common/SKP_Silk_structs.h @@ -130,9 +130,8 @@ typedef struct { const SKP_int *NDeltaMin_Q15; /* Fields for arithmetic (de)coding */ - const SKP_uint16 *CDF; - const SKP_uint16 * const *StartPtr; - const SKP_int *MiddleIx; + const SKP_uint8 *CDF; + const SKP_uint8 * const *StartPtr; } SKP_Silk_NLSF_CB_struct; /********************************/ @@ -180,11 +179,14 @@ typedef struct { SKP_int pitchEstimationLPCOrder; /* Whitening filter order for pitch estimator */ SKP_int32 pitchEstimationThreshold_Q16; /* Threshold for pitch estimator */ SKP_int LTPQuantLowComplexity; /* Flag for low complexity LTP quantization */ + SKP_int mu_LTP_Q10; /* Rate-distortion tradeoff in LTP quantization */ SKP_int NLSF_MSVQ_Survivors; /* Number of survivors in NLSF MSVQ */ SKP_int first_frame_after_reset; /* Flag for deactivating NLSF interp. and fluc. reduction after resets */ SKP_int controlled_since_last_payload; /* Flag for ensuring codec_control only runs once per packet */ SKP_int warping_Q16; /* Warping parameter for warped noise shaping */ SKP_int useCBR; /* Flag to enable constant bitrate */ + const SKP_uint8 *pitch_lag_low_bits_iCDF; /* Pointer to iCDF table for low bits of pitch lag index */ + const SKP_uint8 *pitch_contour_iCDF; /* Pointer to iCDF table for pitch contour index */ /* Input/output buffering */ SKP_int16 inputBuf[ MAX_FRAME_LENGTH ]; /* buffer containin input signal */ @@ -294,8 +296,8 @@ typedef struct { SKP_int LastGainIndex_EnhLayer; /* Previous gain index */ SKP_int typeOffsetPrev; /* Previous signal type and quantization offset */ SKP_int32 HPState[ DEC_HP_ORDER ]; /* HP filter state */ - const SKP_int16 *HP_A; /* HP filter AR coefficients */ - const SKP_int16 *HP_B; /* HP filter MA coefficients */ + const SKP_int32 *HP_A; /* HP filter AR coefficients */ + const SKP_int32 *HP_B; /* HP filter MA coefficients */ SKP_int fs_kHz; /* Sampling frequency in kHz */ SKP_int32 prev_API_sampleRate; /* Previous API sample frequency (Hz) */ SKP_int nb_subfr; /* Number of 5 ms subframes in a frame */ @@ -305,6 +307,8 @@ typedef struct { SKP_int LPC_order; /* LPC order */ SKP_int prevNLSF_Q15[ MAX_LPC_ORDER ]; /* Used to interpolate LSFs */ SKP_int first_frame_after_reset; /* Flag for deactivating NLSF interp. and fluc. reduction after resets */ + const SKP_uint8 *pitch_lag_low_bits_iCDF; /* Pointer to iCDF table for low bits of pitch lag index */ + const SKP_uint8 *pitch_contour_iCDF; /* Pointer to iCDF table for pitch contour index */ /* For buffering payload in case of more frames per packet */ SKP_int nBytesLeft; diff --git a/src_common/SKP_Silk_tables.h b/src_common/SKP_Silk_tables.h index 0a2b70a1be728da2e13aba24837aae5403b63e12..7dd008ad74d5f037fddc74d703ca03e830023e17 100644 --- a/src_common/SKP_Silk_tables.h +++ b/src_common/SKP_Silk_tables.h @@ -40,30 +40,15 @@ extern "C" #endif /* entropy coding tables */ -extern const SKP_uint16 SKP_Silk_type_offset_CDF[ 5 ]; /* 5 */ -extern const SKP_uint16 SKP_Silk_type_offset_joint_CDF[ 4 ][ 5 ]; /* 20 */ -extern const SKP_int SKP_Silk_type_offset_CDF_offset; - -extern const SKP_uint16 SKP_Silk_gain_CDF[ 2 ][ N_LEVELS_QGAIN + 1 ]; /* 130 */ -extern const SKP_int SKP_Silk_gain_CDF_offset; -extern const SKP_uint16 SKP_Silk_delta_gain_CDF[ MAX_DELTA_GAIN_QUANT - MIN_DELTA_GAIN_QUANT + 2 ]; /* 46 */ -extern const SKP_int SKP_Silk_delta_gain_CDF_offset; - -extern const SKP_uint16 SKP_Silk_pitch_lag_NB_CDF[ 8 * ( PITCH_EST_MAX_LAG_MS - PITCH_EST_MIN_LAG_MS ) + 2 ]; /* 130 */ -extern const SKP_int SKP_Silk_pitch_lag_NB_CDF_offset; -extern const SKP_uint16 SKP_Silk_pitch_lag_MB_CDF[ 12 * ( PITCH_EST_MAX_LAG_MS - PITCH_EST_MIN_LAG_MS ) + 2 ]; /* 194 */ -extern const SKP_int SKP_Silk_pitch_lag_MB_CDF_offset; -extern const SKP_uint16 SKP_Silk_pitch_lag_WB_CDF[ 16 * ( PITCH_EST_MAX_LAG_MS - PITCH_EST_MIN_LAG_MS ) + 2 ]; /* 258 */ -extern const SKP_int SKP_Silk_pitch_lag_WB_CDF_offset; -extern const SKP_uint16 SKP_Silk_pitch_lag_SWB_CDF[ 24 * ( PITCH_EST_MAX_LAG_MS - PITCH_EST_MIN_LAG_MS ) + 2 ]; /* 386 */ -extern const SKP_int SKP_Silk_pitch_lag_SWB_CDF_offset; - -extern const SKP_uint16 SKP_Silk_pitch_contour_CDF[ 35 ]; /* 35 */ -extern const SKP_int SKP_Silk_pitch_contour_CDF_offset; -extern const SKP_uint16 SKP_Silk_pitch_contour_NB_CDF[ 12 ]; /* 12 */ -extern const SKP_int SKP_Silk_pitch_contour_NB_CDF_offset; -extern const SKP_uint16 SKP_Silk_pitch_delta_CDF[23]; /* 23 */ -extern const SKP_int SKP_Silk_pitch_delta_CDF_offset; +extern const SKP_uint8 SKP_Silk_gain_iCDF[ 2 ][ N_LEVELS_QGAIN / 8 ]; /* 16 */ +extern const SKP_uint8 SKP_Silk_delta_gain_iCDF[ MAX_DELTA_GAIN_QUANT - MIN_DELTA_GAIN_QUANT + 1 ]; /* 43 */ + +extern const SKP_uint8 SKP_Silk_pitch_lag_iCDF[ 2 * ( PITCH_EST_MAX_LAG_MS - PITCH_EST_MIN_LAG_MS ) ]; /* 32 */ +extern const SKP_uint8 SKP_Silk_pitch_delta_iCDF[21]; /* 21 */ +extern const SKP_uint8 SKP_Silk_pitch_contour_iCDF[34]; /* 34 */ +extern const SKP_uint8 SKP_Silk_pitch_contour_NB_iCDF[ 11 ]; /* 11 */ +extern const SKP_uint8 SKP_Silk_pitch_contour_10_ms_iCDF[12]; /* 12 */ +extern const SKP_uint8 SKP_Silk_pitch_contour_10_ms_NB_iCDF[3]; /* 3 */ extern const SKP_uint16 SKP_Silk_pulses_per_block_CDF[ N_RATE_LEVELS ][ MAX_PULSES + 3 ]; /* 210 */ extern const SKP_int SKP_Silk_pulses_per_block_CDF_offset; @@ -81,72 +66,62 @@ extern const SKP_uint16 SKP_Silk_shell_code_table2[ 102 ]; extern const SKP_uint16 SKP_Silk_shell_code_table3[ 207 ]; /* 207 */ extern const SKP_uint16 SKP_Silk_shell_code_table_offsets[ 19 ]; /* 19 */ -extern const SKP_uint16 SKP_Silk_lsb_CDF[ 3 ]; /* 3 */ +extern const SKP_uint8 SKP_Silk_lsb_iCDF[ 2 ]; /* 2 */ + +extern const SKP_uint8 SKP_Silk_sign_iCDF[ 36 ]; /* 36 */ -extern const SKP_uint16 SKP_Silk_sign_CDF[ 36 ]; /* 36 */ +extern const SKP_uint8 SKP_Silk_uniform4_iCDF[ 4 ]; /* 4 */ +extern const SKP_uint8 SKP_Silk_uniform6_iCDF[ 6 ]; /* 6 */ +extern const SKP_uint8 SKP_Silk_uniform8_iCDF[ 8 ]; /* 8 */ +extern const SKP_uint8 SKP_Silk_uniform12_iCDF[ 12 ]; /* 12 */ -extern const SKP_uint16 SKP_Silk_LTP_per_index_CDF[ 4 ]; /* 4 */ -extern const SKP_int SKP_Silk_LTP_per_index_CDF_offset; -extern const SKP_int16 * const SKP_Silk_LTP_gain_BITS_Q6_ptrs[ NB_LTP_CBKS ]; /* 3 */ -extern const SKP_uint16 * const SKP_Silk_LTP_gain_CDF_ptrs[ NB_LTP_CBKS ]; /* 3 */ -extern const SKP_int SKP_Silk_LTP_gain_CDF_offsets[ NB_LTP_CBKS ]; /* 3 */ -extern const SKP_int32 SKP_Silk_LTP_gain_middle_avg_RD_Q14; -extern const SKP_uint16 SKP_Silk_LTPscale_CDF[ 4 ]; /* 4 */ -extern const SKP_int SKP_Silk_LTPscale_offset; +extern const SKP_uint8 SKP_Silk_LTP_per_index_iCDF[ 3 ]; /* 3 */ +extern const SKP_uint8 * const SKP_Silk_LTP_gain_iCDF_ptrs[ NB_LTP_CBKS ]; /* 3 */ +extern const SKP_int8 * const SKP_Silk_LTP_gain_BITS_Q4_ptrs[ NB_LTP_CBKS ]; /* 3 */ +extern const SKP_int16 SKP_Silk_LTP_gain_middle_avg_RD_Q14; +extern const SKP_int8 * const SKP_Silk_LTP_vq_ptrs_Q7[ NB_LTP_CBKS ]; /* 168 */ +extern const SKP_int8 SKP_Silk_LTP_vq_sizes[ NB_LTP_CBKS ]; /* 3 */ -/* Tables for LTPScale */ +extern const SKP_uint8 SKP_Silk_LTPscale_iCDF[ 3 ]; /* 4 */ extern const SKP_int16 SKP_Silk_LTPScales_table_Q14[ 3 ]; -extern const SKP_uint16 SKP_Silk_vadflag_CDF[ 3 ]; /* 3 */ -extern const SKP_int SKP_Silk_vadflag_offset; +extern const SKP_uint8 SKP_Silk_vadflag_iCDF[ 2 ]; /* 2 */ -extern const SKP_uint16 SKP_Silk_NLSF_interpolation_factor_CDF[ 6 ]; -extern const SKP_int SKP_Silk_NLSF_interpolation_factor_offset; +extern const SKP_uint8 SKP_Silk_type_offset_iCDF[4]; /* 4 */ +extern const SKP_uint8 SKP_Silk_type_offset_joint_iCDF[4][4]; /* 16 */ + +extern const SKP_uint8 SKP_Silk_NLSF_interpolation_factor_iCDF[ 5 ]; /* 5 */ /* NLSF codebooks */ extern const SKP_Silk_NLSF_CB_struct SKP_Silk_NLSF_CB0_16, SKP_Silk_NLSF_CB1_16; extern const SKP_Silk_NLSF_CB_struct SKP_Silk_NLSF_CB0_10, SKP_Silk_NLSF_CB1_10; -/* quantization tables */ -extern const SKP_int16 * const SKP_Silk_LTP_vq_ptrs_Q14[ NB_LTP_CBKS ]; /* 168 */ -extern const SKP_int SKP_Silk_LTP_vq_sizes[ NB_LTP_CBKS ]; /* 3 */ - /* Piece-wise linear mapping from bitrate in kbps to coding quality in dB SNR */ -extern const SKP_int32 TargetRate_table_NB[ TARGET_RATE_TAB_SZ ]; -extern const SKP_int32 TargetRate_table_MB[ TARGET_RATE_TAB_SZ ]; -extern const SKP_int32 TargetRate_table_WB[ TARGET_RATE_TAB_SZ ]; -extern const SKP_int32 TargetRate_table_SWB[ TARGET_RATE_TAB_SZ ]; -extern const SKP_int32 SNR_table_Q1[ TARGET_RATE_TAB_SZ ]; - -extern const SKP_int32 SNR_table_one_bit_per_sample_Q7[ 4 ]; +extern const SKP_uint16 TargetRate_table_NB[ TARGET_RATE_TAB_SZ ]; +extern const SKP_uint16 TargetRate_table_MB[ TARGET_RATE_TAB_SZ ]; +extern const SKP_uint16 TargetRate_table_WB[ TARGET_RATE_TAB_SZ ]; +extern const SKP_uint16 TargetRate_table_SWB[ TARGET_RATE_TAB_SZ ]; +extern const SKP_uint16 SNR_table_Q1[ TARGET_RATE_TAB_SZ ]; /* Filter coeficicnts for HP filter: 4. Order filter implementad as two biquad filters */ extern const SKP_int16 SKP_Silk_SWB_detect_B_HP_Q13[ NB_SOS ][ 3 ]; extern const SKP_int16 SKP_Silk_SWB_detect_A_HP_Q13[ NB_SOS ][ 2 ]; -/* Decoder high-pass filter coefficients for 24 kHz sampling */ -extern const SKP_int16 SKP_Silk_Dec_A_HP_24[ DEC_HP_ORDER ]; /* 2 */ -extern const SKP_int16 SKP_Silk_Dec_B_HP_24[ DEC_HP_ORDER + 1 ]; /* 3 */ - -/* Decoder high-pass filter coefficients for 16 kHz sampling */ -extern const SKP_int16 SKP_Silk_Dec_A_HP_16[ DEC_HP_ORDER ]; /* 2 */ -extern const SKP_int16 SKP_Silk_Dec_B_HP_16[ DEC_HP_ORDER + 1 ]; /* 3 */ - -/* Decoder high-pass filter coefficients for 12 kHz sampling */ -extern const SKP_int16 SKP_Silk_Dec_A_HP_12[ DEC_HP_ORDER ]; /* 2 */ -extern const SKP_int16 SKP_Silk_Dec_B_HP_12[ DEC_HP_ORDER + 1 ]; /* 3 */ - -/* Decoder high-pass filter coefficients for 8 kHz sampling */ -extern const SKP_int16 SKP_Silk_Dec_A_HP_8[ DEC_HP_ORDER ]; /* 2 */ -extern const SKP_int16 SKP_Silk_Dec_B_HP_8[ DEC_HP_ORDER + 1 ]; /* 3 */ +/* Decoder high-pass filter coefficients */ +extern const SKP_int32 SKP_Silk_Dec_A_HP_24[ DEC_HP_ORDER ]; /* 2 */ +extern const SKP_int32 SKP_Silk_Dec_B_HP_24[ DEC_HP_ORDER + 1 ]; /* 3 */ +extern const SKP_int32 SKP_Silk_Dec_A_HP_16[ DEC_HP_ORDER ]; /* 2 */ +extern const SKP_int32 SKP_Silk_Dec_B_HP_16[ DEC_HP_ORDER + 1 ]; /* 3 */ +extern const SKP_int32 SKP_Silk_Dec_A_HP_12[ DEC_HP_ORDER ]; /* 2 */ +extern const SKP_int32 SKP_Silk_Dec_B_HP_12[ DEC_HP_ORDER + 1 ]; /* 3 */ +extern const SKP_int32 SKP_Silk_Dec_A_HP_8[ DEC_HP_ORDER ]; /* 2 */ +extern const SKP_int32 SKP_Silk_Dec_B_HP_8[ DEC_HP_ORDER + 1 ]; /* 3 */ /* Table for frame termination indication */ -extern const SKP_uint16 SKP_Silk_FrameTermination_CDF[ 3 ]; -extern const SKP_int SKP_Silk_FrameTermination_offset; +extern const SKP_uint8 SKP_Silk_FrameTermination_iCDF[ 2 ]; /* Table for random seed */ -extern const SKP_uint16 SKP_Silk_Seed_CDF[ 5 ]; -extern const SKP_int SKP_Silk_Seed_offset; +extern const SKP_uint8 SKP_Silk_Seed_iCDF[ 4 ]; /* Quantization offsets */ extern const SKP_int16 SKP_Silk_Quantization_Offsets_Q10[ 2 ][ 2 ]; diff --git a/src_common/SKP_Silk_tables_LTP.c b/src_common/SKP_Silk_tables_LTP.c index ea52fe3ef2e1cf8d758c8a8cfe4a3a59cc6e03bd..65b57991c16c6f5f2507d4699008a317a26e149b 100644 --- a/src_common/SKP_Silk_tables_LTP.c +++ b/src_common/SKP_Silk_tables_LTP.c @@ -27,298 +27,242 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "SKP_Silk_tables.h" -const SKP_uint16 SKP_Silk_LTP_per_index_CDF[ 4 ] = { - 0, 20992, 40788, 65535 +const SKP_uint8 SKP_Silk_LTP_per_index_iCDF[3] = { + 188, 111, 0 }; -const SKP_int SKP_Silk_LTP_per_index_CDF_offset = 1; - - -const SKP_uint16 SKP_Silk_LTP_gain_CDF_0[ 11 ] = { - 0, 49380, 54463, 56494, 58437, 60101, 61683, 62985, - 64066, 64823, 65535 -}; - -const SKP_uint16 SKP_Silk_LTP_gain_CDF_1[ 21 ] = { - 0, 25290, 30654, 35710, 40386, 42937, 45250, 47459, - 49411, 51348, 52974, 54517, 55976, 57423, 58865, 60285, - 61667, 62895, 63827, 64724, 65535 +const SKP_uint8 SKP_Silk_LTP_gain_iCDF_0[8] = { + 83, 65, 48, 34, 24, 15, 7, 0 }; -const SKP_uint16 SKP_Silk_LTP_gain_CDF_2[ 41 ] = { - 0, 4958, 9439, 13581, 17638, 21651, 25015, 28025, - 30287, 32406, 34330, 36240, 38130, 39790, 41281, 42764, - 44229, 45676, 47081, 48431, 49675, 50849, 51932, 52966, - 53957, 54936, 55869, 56789, 57708, 58504, 59285, 60043, - 60796, 61542, 62218, 62871, 63483, 64076, 64583, 65062, - 65535 +const SKP_uint8 SKP_Silk_LTP_gain_iCDF_1[16] = { + 211, 186, 163, 144, 129, 115, 102, 89, + 77, 65, 53, 42, 31, 19, 9, 0 }; -const SKP_int SKP_Silk_LTP_gain_CDF_offsets[ 3 ] = { - 1, 3, 10 +const SKP_uint8 SKP_Silk_LTP_gain_iCDF_2[32] = { + 241, 227, 214, 202, 191, 180, 170, 160, + 149, 139, 129, 120, 110, 101, 92, 84, + 76, 69, 61, 54, 47, 40, 35, 30, + 26, 21, 17, 13, 10, 6, 3, 0 }; -const SKP_int32 SKP_Silk_LTP_gain_middle_avg_RD_Q14 = 11010; +const SKP_int16 SKP_Silk_LTP_gain_middle_avg_RD_Q14 = 14008; -const SKP_int16 SKP_Silk_LTP_gain_BITS_Q6_0[ 10 ] = { - 26, 236, 321, 325, 339, 344, 362, 379, - 412, 418 +const SKP_int8 SKP_Silk_LTP_gain_BITS_Q4_0[8] = { + 9, 61, 63, 66, 76, 77, 81, 83 }; -const SKP_int16 SKP_Silk_LTP_gain_BITS_Q6_1[ 20 ] = { - 88, 231, 237, 244, 300, 309, 313, 324, - 325, 341, 346, 351, 352, 352, 354, 356, - 367, 393, 396, 406 +const SKP_int8 SKP_Silk_LTP_gain_BITS_Q4_1[16] = { + 40, 54, 56, 60, 65, 68, 68, 68, + 71, 71, 72, 72, 72, 72, 76, 76 }; -const SKP_int16 SKP_Silk_LTP_gain_BITS_Q6_2[ 40 ] = { - 238, 248, 255, 257, 258, 274, 284, 311, - 317, 326, 326, 327, 339, 349, 350, 351, - 352, 355, 358, 366, 371, 379, 383, 387, - 388, 393, 394, 394, 407, 409, 412, 412, - 413, 422, 426, 432, 434, 449, 454, 455 +const SKP_int8 SKP_Silk_LTP_gain_BITS_Q4_2[32] = { + 65, 67, 69, 70, 73, 74, 74, 74, + 74, 75, 75, 76, 76, 76, 78, 80, + 80, 81, 82, 82, 82, 86, 90, 91, + 92, 95, 95, 96, 99, 100, 102, 102 }; -const SKP_uint16 * const SKP_Silk_LTP_gain_CDF_ptrs[ NB_LTP_CBKS ] = { - SKP_Silk_LTP_gain_CDF_0, - SKP_Silk_LTP_gain_CDF_1, - SKP_Silk_LTP_gain_CDF_2 +const SKP_uint8 * const SKP_Silk_LTP_gain_iCDF_ptrs[NB_LTP_CBKS] = { + SKP_Silk_LTP_gain_iCDF_0, + SKP_Silk_LTP_gain_iCDF_1, + SKP_Silk_LTP_gain_iCDF_2 }; -const SKP_int16 * const SKP_Silk_LTP_gain_BITS_Q6_ptrs[ NB_LTP_CBKS ] = { - SKP_Silk_LTP_gain_BITS_Q6_0, - SKP_Silk_LTP_gain_BITS_Q6_1, - SKP_Silk_LTP_gain_BITS_Q6_2 +const SKP_int8 * const SKP_Silk_LTP_gain_BITS_Q4_ptrs[NB_LTP_CBKS] = { + SKP_Silk_LTP_gain_BITS_Q4_0, + SKP_Silk_LTP_gain_BITS_Q4_1, + SKP_Silk_LTP_gain_BITS_Q4_2 }; -const SKP_int16 SKP_Silk_LTP_gain_vq_0_Q14[ 10 ][ 5 ] = +const SKP_int8 SKP_Silk_LTP_gain_vq_0[8][5] = { { - 594, 984, 2840, 1021, 669 -}, -{ - 10, 35, 304, -1, 23 -}, -{ - -694, 1923, 4603, 2975, 2335 + 6, 9, 28, 9, 8 }, { - 2437, 3176, 3778, 1940, 481 + 0, 0, 2, 0, 0 }, { - 214, -46, 7870, 4406, -521 + -4, 32, 55, 5, -1 }, { - -896, 4818, 8501, 1623, -887 + -6, 6, 51, 34, 1 }, { - -696, 3178, 6480, -302, 1081 + 27, 8, 43, 26, -20 }, { - 517, 599, 1002, 567, 560 + 2, 5, 11, 5, 3 }, { - -2075, -834, 4712, -340, 896 + -23, 8, 35, 4, 22 }, { - 1435, -644, 3993, -612, -2063 + 22, 18, 26, -6, -14 } }; -const SKP_int16 SKP_Silk_LTP_gain_vq_1_Q14[ 20 ][ 5 ] = +const SKP_int8 SKP_Silk_LTP_gain_vq_1[16][5] = { { - 1655, 2918, 5001, 3010, 1775 -}, -{ - 113, 198, 856, 176, 178 -}, -{ - -843, 2479, 7858, 5371, 574 -}, -{ - 59, 5356, 7648, 2850, -315 -}, -{ - 3840, 4851, 6527, 1583, -1233 + 10, 22, 39, 23, 17 }, { - 1620, 1760, 2330, 1876, 2045 + 5, 29, 56, 38, -8 }, { - -545, 1854, 11792, 1547, -307 + 20, 40, 54, 4, -5 }, { - -604, 689, 5369, 5074, 4265 + 0, 1, 7, 0, 1 }, { - 521, -1331, 9829, 6209, -1211 + -20, 12, 67, 46, 9 }, { - -1315, 6747, 9929, -1410, 546 + -9, 51, 75, 12, -12 }, { - 117, -144, 2810, 1649, 5240 + 6, -11, 84, 41, -14 }, { - 5392, 3476, 2425, -38, 633 + -8, 15, 96, 5, 3 }, { - 14, -449, 5274, 3547, -171 + 41, 5, 32, 4, 10 }, { - -98, 395, 9114, 1676, 844 + -13, 50, 73, -18, 18 }, { - -908, 3843, 8861, -957, 1474 + 7, -14, 56, 47, 10 }, { - 396, 6747, 5379, -329, 1269 + -3, -2, 73, 8, 10 }, { - -335, 2830, 4281, 270, -54 + -11, 30, 42, -7, 14 }, { - 1502, 5609, 8958, 6045, 2059 + -23, 42, 57, 15, 21 }, { - -370, 479, 5267, 5726, 1174 + -1, 0, 21, 23, 38 }, { - 5237, -1144, 6510, 455, 512 + -1, -6, 37, 20, -3 } }; -const SKP_int16 SKP_Silk_LTP_gain_vq_2_Q14[ 40 ][ 5 ] = +const SKP_int8 SKP_Silk_LTP_gain_vq_2[32][5] = { { - -278, 415, 9345, 7106, -431 -}, -{ - -1006, 3863, 9524, 4724, -871 -}, -{ - -954, 4624, 11722, 973, -300 -}, -{ - -117, 7066, 8331, 1959, -901 -}, -{ - 593, 3412, 6070, 4914, 1567 -}, -{ - 54, -51, 12618, 4228, -844 -}, -{ - 3157, 4822, 5229, 2313, 717 -}, -{ - -244, 1161, 14198, 779, 69 -}, -{ - -1218, 5603, 12894, -2301, 1001 + -6, 59, 68, 3, 0 }, { - -132, 3960, 9526, 577, 1806 + -6, 36, 72, 29, -6 }, { - -1633, 8815, 10484, -2452, 895 + -3, 1, 93, 24, 6 }, { - 235, 450, 1243, 667, 437 + -4, 16, 52, 39, 19 }, { - 959, -2630, 10897, 8772, -1852 + 0, -11, 80, 52, 1 }, { - 2420, 2046, 8893, 4427, -1569 + 3, 4, 19, 3, 6 }, { - 23, 7091, 8356, -1285, 1508 + -3, 35, 98, 5, -13 }, { - -1133, 835, 7662, 6043, 2800 + -9, 16, 75, 60, -15 }, { - 439, 391, 11016, 2253, 1362 + 9, -21, 84, 71, -17 }, { - -1020, 2876, 13436, 4015, -3020 + 11, -20, 106, 44, -13 }, { - 1060, -2690, 13512, 5565, -1394 + 3, 9, 98, 33, -23 }, { - -1420, 8007, 11421, -152, -1672 + 22, -4, 65, 51, -15 }, { - -893, 2895, 15434, -1490, 159 + -6, 11, 109, 7, 2 }, { - -1054, 428, 12208, 8538, -3344 + 21, 38, 41, 22, 4 }, { - 1772, -1304, 7593, 6185, 561 + -19, 72, 83, -22, 13 }, { - 525, -1207, 6659, 11151, -1170 + 1, 24, 77, -5, 17 }, { - 439, 2667, 4743, 2359, 5515 + 4, -12, 121, 19, -6 }, { - 2951, 7432, 7909, -230, -1564 + -6, 25, 115, -17, 7 }, { - -72, 2140, 5477, 1391, 1580 + 27, 11, 84, 12, -27 }, { - 476, -1312, 15912, 2174, -1027 + -13, 49, 105, -24, 8 }, { - 5737, 441, 2493, 2043, 2757 + -21, 43, 91, -4, 15 }, { - 228, -43, 1803, 6663, 7064 + 7, 49, 88, -25, -4 }, { - 4596, 9182, 1917, -200, 203 + 0, 5, 128, -5, -4 }, { - -704, 12039, 5451, -1188, 542 + -9, 67, 95, -4, -23 }, { - 1782, -1040, 10078, 7513, -2767 + 6, -10, 45, 93, -9 }, { - -2626, 7747, 9019, 62, 1710 + -8, 95, 43, -11, 6 }, { - 235, -233, 2954, 10921, 1947 + 17, -19, 101, 77, -42 }, { - 10854, 2814, 1232, -111, 222 + 35, 74, 19, -7, 1 }, { - 2267, 2778, 12325, 156, -1658 + 3, 12, 128, 27, -39 }, { - -2950, 8095, 16330, 268, -3626 + 1, -2, 14, 80, 31 }, { - 67, 2083, 7950, -80, -2432 + 86, 10, 12, -3, 3 }, { - 518, -66, 1718, 415, 11435 + 5, -3, 14, 7, 85 } }; -const SKP_int16 * const SKP_Silk_LTP_vq_ptrs_Q14[ NB_LTP_CBKS ] = { - &SKP_Silk_LTP_gain_vq_0_Q14[ 0 ][ 0 ], - &SKP_Silk_LTP_gain_vq_1_Q14[ 0 ][ 0 ], - &SKP_Silk_LTP_gain_vq_2_Q14[ 0 ][ 0 ] +const SKP_int8 * const SKP_Silk_LTP_vq_ptrs_Q7[NB_LTP_CBKS] = { + (SKP_int8 *)&SKP_Silk_LTP_gain_vq_0[0][0], + (SKP_int8 *)&SKP_Silk_LTP_gain_vq_1[0][0], + (SKP_int8 *)&SKP_Silk_LTP_gain_vq_2[0][0] }; -const SKP_int SKP_Silk_LTP_vq_sizes[ NB_LTP_CBKS ] = { - 10, 20, 40 +const SKP_int8 SKP_Silk_LTP_vq_sizes[NB_LTP_CBKS] = { + 8, 16, 32 }; diff --git a/src_common/SKP_Silk_tables_NLSF_CB1_16.h b/src_common/SKP_Silk_tables_NLSF_CB.h similarity index 63% rename from src_common/SKP_Silk_tables_NLSF_CB1_16.h rename to src_common/SKP_Silk_tables_NLSF_CB.h index 00d39286f69838b8e0eefcfdd50d7a7488fa89b2..06f8a75ea6b487575b694b158d5908e6b10cb88a 100644 --- a/src_common/SKP_Silk_tables_NLSF_CB1_16.h +++ b/src_common/SKP_Silk_tables_NLSF_CB.h @@ -25,8 +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. ***********************************************************************/ -#ifndef SKP_SILK_TABLES_NLSF_CB1_16_H -#define SKP_SILK_TABLES_NLSF_CB1_16_H +#ifndef SKP_SILK_TABLES_NLSF_CB +#define SKP_SILK_TABLES_NLSF_CB #include "SKP_Silk_define.h" @@ -35,13 +35,25 @@ extern "C" { #endif +#define NLSF_MSVQ_CB0_10_STAGES 7 +#define NLSF_MSVQ_CB0_10_VECTORS 128 +#define NLSF_MSVQ_CB1_10_STAGES 7 +#define NLSF_MSVQ_CB1_10_VECTORS 80 +#define NLSF_MSVQ_CB0_16_STAGES 10 +#define NLSF_MSVQ_CB0_16_VECTORS 152 #define NLSF_MSVQ_CB1_16_STAGES 10 #define NLSF_MSVQ_CB1_16_VECTORS 104 /* NLSF codebook entropy coding tables */ -extern const SKP_uint16 SKP_Silk_NLSF_MSVQ_CB1_16_CDF[ NLSF_MSVQ_CB1_16_VECTORS + NLSF_MSVQ_CB1_16_STAGES ]; -extern const SKP_uint16 * const SKP_Silk_NLSF_MSVQ_CB1_16_CDF_start_ptr[ NLSF_MSVQ_CB1_16_STAGES ]; -extern const SKP_int SKP_Silk_NLSF_MSVQ_CB1_16_CDF_middle_idx[ NLSF_MSVQ_CB1_16_STAGES ]; +extern const SKP_uint8 SKP_Silk_NLSF_MSVQ_CB0_10_CDF[ NLSF_MSVQ_CB0_10_VECTORS ]; +extern const SKP_uint8 * const SKP_Silk_NLSF_MSVQ_CB0_10_CDF_start_ptr[ NLSF_MSVQ_CB0_10_STAGES ]; +extern const SKP_uint8 SKP_Silk_NLSF_MSVQ_CB1_10_CDF[ NLSF_MSVQ_CB1_10_VECTORS ]; +extern const SKP_uint8 * const SKP_Silk_NLSF_MSVQ_CB1_10_CDF_start_ptr[ NLSF_MSVQ_CB1_10_STAGES ]; +extern const SKP_uint8 SKP_Silk_NLSF_MSVQ_CB0_16_CDF[ NLSF_MSVQ_CB0_16_VECTORS ]; +extern const SKP_uint8 * const SKP_Silk_NLSF_MSVQ_CB0_16_CDF_start_ptr[ NLSF_MSVQ_CB0_16_STAGES ]; +extern const SKP_uint8 SKP_Silk_NLSF_MSVQ_CB1_16_CDF[ NLSF_MSVQ_CB1_16_VECTORS ]; +extern const SKP_uint8 * const SKP_Silk_NLSF_MSVQ_CB1_16_CDF_start_ptr[ NLSF_MSVQ_CB1_16_STAGES ]; + #ifdef __cplusplus } diff --git a/src_common/SKP_Silk_tables_NLSF_CB0_10.c b/src_common/SKP_Silk_tables_NLSF_CB0_10.c index 05a5212a84bada21de9cf0482078ef8a67837121..87e13be016802effd6e5abd56adb874f9c9e4f3d 100644 --- a/src_common/SKP_Silk_tables_NLSF_CB0_10.c +++ b/src_common/SKP_Silk_tables_NLSF_CB0_10.c @@ -28,899 +28,881 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /**********************************************/ /* This file has been automatically generated */ /* */ -/* ROM usage: 0.31 + 1.43 kB */ +/* ROM usage: 0.16 + 1.43 kB */ /**********************************************/ #include "SKP_Silk_structs.h" #include "SKP_Silk_tables.h" -#include "SKP_Silk_tables_NLSF_CB0_10.h" +#include "SKP_Silk_tables_NLSF_CB.h" -const SKP_uint16 SKP_Silk_NLSF_MSVQ_CB0_10_CDF[ NLSF_MSVQ_CB0_10_VECTORS + NLSF_MSVQ_CB0_10_STAGES ] = +const SKP_uint8 SKP_Silk_NLSF_MSVQ_CB0_10_CDF[ NLSF_MSVQ_CB0_10_VECTORS ] = { + 244, + 236, + 228, + 220, + 213, + 207, + 201, + 195, + 190, + 184, + 179, + 173, + 168, + 163, + 158, + 153, + 148, + 143, + 139, + 134, + 129, + 125, + 120, + 116, + 112, + 107, + 103, + 99, + 95, + 91, + 88, + 84, + 80, + 77, + 73, + 69, + 66, + 62, + 59, + 55, + 52, + 48, + 45, + 42, + 39, + 36, + 32, + 29, + 27, + 24, + 21, + 18, + 16, + 13, + 11, + 9, + 7, + 6, + 5, + 4, + 3, + 2, + 1, 0, - 2433, - 4865, - 7096, - 8971, - 10549, - 12126, - 13636, - 15147, - 16657, - 18104, - 19550, - 20996, - 22381, - 23766, - 25093, - 26419, - 27745, - 29016, - 30232, - 31448, - 32664, - 33780, - 34895, - 36010, - 37078, - 38146, - 39169, - 40192, - 41215, - 42194, - 43173, - 44153, - 45091, - 46028, - 46966, - 47904, - 48842, - 49740, - 50638, - 51498, - 52358, - 53218, - 54042, - 54865, - 55689, - 56478, - 57266, - 58055, - 58810, - 59565, - 60321, - 61044, - 61652, - 62260, - 62868, - 63337, - 63683, - 64001, - 64257, - 64512, - 64768, - 65024, - 65279, - 65535, + 235, + 216, + 198, + 180, + 162, + 145, + 129, + 112, + 96, + 80, + 65, + 50, + 36, + 22, + 10, 0, - 5110, - 10220, - 15114, - 19800, - 24097, - 28394, - 32691, - 36988, - 41285, - 45225, - 48999, - 52612, - 56226, - 59839, - 62749, - 65535, + 222, + 189, + 155, + 123, + 92, + 62, + 31, 0, - 8964, - 17928, - 26148, - 34368, - 42588, - 50459, - 57997, - 65535, + 221, + 187, + 154, + 122, + 91, + 60, + 29, 0, - 10142, - 19048, - 27576, - 36104, - 44271, - 52091, - 58959, - 65535, + 220, + 186, + 154, + 122, + 90, + 60, + 29, 0, - 8874, - 17371, - 25869, - 34366, - 42158, - 49951, - 57743, - 65535, + 223, + 189, + 156, + 124, + 92, + 60, + 29, 0, - 8970, - 17560, - 25786, - 34012, - 42238, - 50115, - 57992, - 65535, - 0, - 4875, - 9750, - 14418, - 19086, - 23754, - 28422, - 32892, - 37173, - 41272, - 45371, - 49297, - 52896, - 56496, - 59797, - 63098, - 65535 + 236, + 219, + 201, + 184, + 168, + 151, + 134, + 117, + 101, + 85, + 69, + 53, + 38, + 24, + 11, + 0 }; -const SKP_uint16 * const SKP_Silk_NLSF_MSVQ_CB0_10_CDF_start_ptr[ NLSF_MSVQ_CB0_10_STAGES ] = +const SKP_uint8 * const SKP_Silk_NLSF_MSVQ_CB0_10_CDF_start_ptr[ NLSF_MSVQ_CB0_10_STAGES ] = { &SKP_Silk_NLSF_MSVQ_CB0_10_CDF[ 0 ], - &SKP_Silk_NLSF_MSVQ_CB0_10_CDF[ 65 ], - &SKP_Silk_NLSF_MSVQ_CB0_10_CDF[ 82 ], - &SKP_Silk_NLSF_MSVQ_CB0_10_CDF[ 91 ], - &SKP_Silk_NLSF_MSVQ_CB0_10_CDF[ 100 ], - &SKP_Silk_NLSF_MSVQ_CB0_10_CDF[ 109 ], - &SKP_Silk_NLSF_MSVQ_CB0_10_CDF[ 118 ] -}; - -const SKP_int SKP_Silk_NLSF_MSVQ_CB0_10_CDF_middle_idx[ NLSF_MSVQ_CB0_10_STAGES ] = -{ - 22, - 8, - 5, - 5, - 5, - 5, - 8 + &SKP_Silk_NLSF_MSVQ_CB0_10_CDF[ 64 ], + &SKP_Silk_NLSF_MSVQ_CB0_10_CDF[ 80 ], + &SKP_Silk_NLSF_MSVQ_CB0_10_CDF[ 88 ], + &SKP_Silk_NLSF_MSVQ_CB0_10_CDF[ 96 ], + &SKP_Silk_NLSF_MSVQ_CB0_10_CDF[ 104 ], + &SKP_Silk_NLSF_MSVQ_CB0_10_CDF[ 112 ] }; const SKP_uint8 SKP_Silk_NLSF_MSVQ_CB0_10_rates_Q4[ NLSF_MSVQ_CB0_10_VECTORS ] = { - 76, 76, - 78, 82, - 86, 86, - 87, 87, + 71, 79, + 80, 81, + 84, 85, 87, 88, 88, 88, 89, 89, 90, 90, - 90, 91, + 91, 91, 92, 92, - 92, 94, + 92, 92, + 93, 93, 94, 94, - 95, 95, + 94, 95, 96, 96, 96, 97, - 97, 97, + 97, 98, 98, 98, 98, 98, - 98, 99, + 99, 99, + 99, 99, 99, 100, - 100, 100, - 101, 101, - 101, 102, + 100, 101, 102, 102, - 103, 103, - 103, 104, - 108, 108, - 108, 114, - 121, 123, + 102, 103, + 104, 104, + 105, 105, + 105, 108, + 111, 111, + 114, 123, 128, 128, 128, 128, 128, 128, - 59, 59, - 60, 61, - 63, 63, + 58, 60, + 61, 61, + 62, 63, 63, 63, - 63, 65, - 66, 67, - 67, 67, - 72, 73, - 46, 46, - 48, 48, - 48, 49, - 50, 50, - 43, 46, - 47, 47, - 48, 49, - 52, 53, - 46, 47, + 64, 64, + 65, 66, + 67, 68, + 69, 76, 47, 47, + 47, 48, 49, 49, 49, 49, 46, 47, + 47, 48, + 49, 49, + 49, 50, + 45, 47, 48, 48, 48, 49, 49, 50, - 60, 60, - 61, 61, - 61, 61, + 47, 47, + 47, 48, + 48, 48, + 49, 50, + 59, 62, 62, 63, + 63, 63, + 63, 63, + 64, 64, 64, 64, - 65, 67, - 67, 69, - 69, 76 + 65, 68, + 68, 73 }; const SKP_int SKP_Silk_NLSF_MSVQ_CB0_10_ndelta_min_Q15[ 10 + 1 ] = { - 553, - 5, + 550, + 3, 22, - 19, + 18, 3, 3, - 180, + 181, 162, - 306, - 171, - 991 + 310, + 172, + 982 }; const SKP_int8 SKP_Silk_NLSF_MSVQ_CB0_10_Q8[ 10 * NLSF_MSVQ_CB0_10_VECTORS ] = { - -108, -90, - -71, -49, - -24, -5, - 21, 48, - 75, 99, - -108, -99, - -76, -57, - -39, -7, - 20, 50, - 76, 98, - -105, -97, - -83, -49, - -19, -7, - 27, 47, - 67, 102, - -97, -90, - -75, -49, - -6, 6, - 27, 55, - 73, 95, - -95, -89, - -72, -40, - -28, -11, - 21, 37, - 70, 86, - -103, -97, - -82, -48, - 8, 21, - 36, 56, - 74, 101, - -103, -96, - -81, -33, - -19, -3, - 28, 41, - 86, 102, - -111, -102, - -85, -62, - -38, -21, - 11, 41, - 66, 95, - -88, -82, - -63, -28, - -10, 1, - 35, 53, - 73, 103, - -101, -96, - -67, -17, - -4, 10, - 30, 45, - 86, 103, - -94, -87, - -70, -55, - -44, -25, - 37, 55, - 73, 104, + -109, -96, + -74, -56, + -35, -11, + 17, 45, + 74, 100, -98, -92, - -71, -37, - -23, -10, - 37, 54, - 73, 104, - -114, -108, - -79, -49, - -20, 2, - 29, 54, - 80, 103, - -107, -99, - -86, -60, - -7, 11, - 27, 49, - 67, 95, - -100, -94, -76, -40, - -5, 6, - 26, 43, - 62, 102, - -88, -79, - -64, -44, - -28, -15, - 26, 43, - 64, 104, - -103, -98, - -71, -26, - -14, 4, - 23, 43, - 72, 87, - -110, -103, - -83, -58, - -27, -5, - 16, 35, - 58, 92, - -103, -94, - -79, -62, + -10, 0, + 28, 47, + 65, 103, + -107, -92, + -69, -48, + -16, 4, + 29, 49, + 77, 101, + -104, -94, + -81, -60, + -24, -10, + 13, 49, + 67, 94, + -104, -97, + -81, -51, + 2, 18, + 33, 53, + 70, 101, + -104, -96, + -82, -54, + -10, 3, + 26, 51, + 70, 89, + -109, -99, + -84, -53, + -33, -18, + 22, 36, + 77, 96, + -92, -86, + -70, -37, + -25, -10, + 24, 40, + 79, 95, + -102, -95, + -78, -47, + -32, -17, + 34, 52, + 71, 105, + -113, -106, + -85, -60, + -34, -15, + 15, 40, + 63, 93, + -99, -94, + -64, -18, + -6, 10, + 32, 47, + 88, 104, + -115, -108, + -79, -48, + -21, 0, + 28, 55, + 77, 101, + -94, -88, + -69, -32, + 5, 16, + 37, 57, + 75, 103, + -110, -101, + -87, -58, + -12, 1, + 19, 38, + 65, 101, + -103, -96, + -80, -40, + -26, -11, + 8, 26, + 78, 93, + -104, -98, + -83, -35, -21, -7, - 12, 52, - 69, 88, - -107, -98, - -84, -44, - -29, -12, - 9, 28, - 73, 90, - -99, -93, - -68, -32, - -19, -5, - 12, 28, - 86, 104, - -100, -91, - -75, -55, - -40, -26, - 20, 40, - 58, 101, - -100, -94, - -73, -60, - -49, -1, - 18, 36, - 83, 96, - -106, -97, - -69, -47, - -25, 11, - 31, 46, - 65, 89, - -93, -87, - -69, -46, - -32, -18, - -2, 14, - 74, 103, - -93, -87, - -65, -29, - 6, 18, - 38, 57, - 74, 102, - -92, -85, - -66, -54, - -43, -4, - 32, 45, + 30, 43, 88, 104, + -105, -100, + -78, -21, + -7, 6, + 28, 45, + 77, 92, + -102, -95, + -71, -34, + -21, -1, + 22, 41, + 66, 83, + -98, -91, + -71, -60, + -49, -4, + 20, 36, + 85, 101, + -86, -80, + -61, -28, + -10, 1, + 35, 54, + 74, 103, + -107, -100, + -81, -45, + -35, 2, + 25, 45, + 83, 99, + -103, -97, + -73, -33, + 17, 30, + 45, 64, + 81, 105, + -86, -79, + -59, -41, + -29, -14, + 41, 59, + 78, 105, + -87, -76, + -62, -45, + -23, -10, + 20, 44, + 63, 96, -108, -99, - -85, -50, - -35, -19, - 29, 41, - 84, 102, - -97, -90, - -73, -57, - -48, -24, - 21, 35, - 79, 94, - -84, -76, - -57, -40, - -29, -11, - 41, 60, - 80, 104, - -100, -94, - -75, -64, - -51, 2, - 20, 45, - 68, 85, + -73, -53, + -28, 7, + 27, 42, + 60, 94, + -95, -87, + -72, -54, + -40, -26, + 24, 42, + 60, 102, + -96, -89, + -73, -59, + -49, -25, + 31, 45, + 80, 96, -100, -94, - -62, -41, - -30, 13, + -77, -67, + -56, -14, + 41, 59, + 85, 104, + -96, -91, + -65, -30, + -18, -4, + 14, 28, + 82, 105, + -102, -95, + -59, -41, + -29, 10, 31, 52, - 85, 101, - -95, -86, - -70, -52, - -38, -23, - 18, 64, - 83, 101, - -114, -108, - -94, -69, - -31, -5, - 24, 46, - 72, 99, + 83, 99, + -103, -97, + -78, -66, + -54, 1, + 22, 42, + 70, 87, + -109, -101, + -86, -70, + -57, -17, + 19, 41, + 75, 98, + -87, -80, + -67, -51, + -7, 6, + 26, 54, + 74, 94, + -101, -91, + -76, -52, + -27, -14, + 8, 27, + 54, 96, + -99, -93, + -65, -51, + -39, -23, + -10, 48, + 79, 95, -100, -95, - -54, -38, - -26, -10, - 3, 51, - 75, 89, - -104, -98, - -73, -31, - 18, 31, - 46, 65, - 82, 105, - -90, -84, - -62, -51, - -38, 3, - 25, 44, - 72, 86, + -54, -37, + -25, -9, + 5, 51, + 74, 89, + -113, -107, + -93, -70, + -27, 1, + 23, 46, + 72, 96, + -96, -86, + -67, -40, + -22, -10, + 21, 62, + 80, 100, + -93, -87, + -65, -49, + -37, -10, + 11, 30, + 67, 82, + -106, -97, + -83, -64, + -51, -33, + 20, 52, + 72, 100, + -93, -87, + -65, -55, + -41, 6, + 27, 46, + 70, 84, -109, -103, - -83, -29, - 2, 11, - 38, 53, - 84, 101, - -86, -75, - -61, -46, - -17, -4, - 18, 52, - 69, 91, - -109, -100, - -83, -54, - -10, 1, - 19, 35, - 81, 100, - -101, -95, - -78, -68, - -58, -16, - 39, 56, - 85, 103, - -87, -80, - -58, -41, - -29, -7, - 14, 30, - 86, 104, + -86, -37, + 1, 11, + 34, 50, + 84, 100, -105, -99, -61, -7, - 6, 21, - 44, 61, - 87, 102, - -86, -80, - -48, -30, - -18, 5, - 25, 43, - 82, 97, - -98, -92, - -66, -49, - -36, -13, - 0, 35, - 59, 79, - -98, -93, - -66, -52, - -40, -24, - -12, 46, - 81, 98, - -107, -95, - -64, -39, - -14, 14, - 42, 65, - 88, 106, - -104, -96, - -82, -65, - -54, -35, - 21, 51, - 72, 99, - -94, -87, - -74, -59, - -21, -10, - 14, 35, - 58, 96, - -108, -100, - -86, -71, - -59, -16, - 20, 41, - 74, 97, + 6, 20, + 43, 61, + 86, 101, + -96, -88, + -73, -54, + -40, -25, + 18, 64, + 82, 100, + -90, -83, + -67, -56, + -45, -18, + 47, 67, + 85, 106, -103, -95, -80, -57, -45, -24, - -6, 19, - 66, 89, - -99, -93, - -74, -65, - -50, 20, - 40, 57, - 85, 98, - -102, -96, - -41, -21, + -4, 19, + 70, 92, + -93, -87, + -69, -47, + -34, -20, + -5, 12, + 75, 106, + -87, -81, + -59, -42, + -28, -8, + 10, 30, + 86, 104, + -107, -100, + -85, -60, + -8, 28, + 42, 61, + 80, 98, + -88, -81, + -62, -51, + -37, 9, + 37, 52, + 88, 103, + -99, -94, + -74, -66, + -51, 19, + 41, 57, + 86, 101, + -103, -96, + -76, -52, + -39, -18, + -1, 34, + 56, 79, + -104, -98, + -44, -21, -11, 9, - 25, 59, - 83, 98, - -94, -87, - -71, -59, - -47, -8, - 50, 68, - 86, 105, - -108, -101, - -84, -59, - -11, 29, - 44, 61, - 82, 99, - -98, -94, - -82, -73, - -26, 6, - 30, 53, - 79, 98, - -85, -71, - -37, -12, - 3, 22, - 41, 61, - 85, 100, - -85, -79, - -66, -55, - -19, 17, - 33, 56, - 83, 97, - -72, -66, - -60, -57, - -50, 4, - 26, 52, - 79, 103, - -95, -74, - -31, -18, - -11, -6, - 9, 52, - 77, 100, - -78, -75, + 25, 55, + 80, 95, + -84, -76, + -43, -28, + -15, 8, + 28, 47, + 79, 95, + -106, -95, + -63, -39, + -12, 19, + 45, 68, + 90, 107, + -83, -79, + -61, -49, + -41, -22, + 26, 40, + 81, 105, + -98, -93, + -81, -73, + -27, 8, + 28, 58, + 78, 95, + -85, -72, + -35, -11, + 4, 22, + 40, 61, + 83, 99, + -74, -70, + -62, -37, + -30, -17, + 19, 57, + 75, 97, + -95, -75, + -31, -22, + -16, -11, + 5, 56, + 80, 100, + -82, -79, + -75, -72, + -23, -16, + 24, 49, + 78, 105, + -74, -70, + -61, -50, + -44, 6, + 29, 50, + 76, 99, + -76, -73, -68, -51, - -43, -38, - 12, 45, - 74, 100, - -99, -68, - -40, -33, - -24, -16, - 23, 58, - 79, 97, - -99, -48, - -42, -40, - -36, -19, - 26, 52, - 80, 105, - -73, -69, - -62, -43, - -31, -25, - 21, 48, - 76, 101, - 8, 7, - 5, 2, - 1, -1, - 1, 0, - 0, -1, - 0, -1, - -1, 0, - -2, -4, - -8, -11, - -2, -4, - 3, 2, - -2, -6, - -4, -7, - -2, -2, - -6, 5, - 0, -1, - 2, 8, - 5, 3, - 2, -2, - 8, 5, - 0, -1, + -46, -40, + 14, 46, + 75, 101, + -99, -51, + -42, -39, + -34, -25, + 27, 53, + 79, 103, + 2, 0, + 4, 10, + 6, 5, + 3, 1, + 3, 0, 0, 0, - -2, -4, - -1, -2, - -9, -13, + -3, -6, + -8, -10, + 1, -2, + -5, 2, + -2, -3, + -3, -5, + -9, 4, + -2, -2, + 0, -4, + 2, 1, + 1, 1, -1, -1, - -4, -1, - 9, 4, + -2, -5, + -8, -13, + -1, -1, + -4, -5, + 9, 6, + 5, 2, + -2, -1, + -1, -1, + -2, -2, + -3, -7, + -13, 4, 0, -3, - -9, 4, - 0, -1, - -2, 1, - -2, -4, - 11, 7, - 4, 3, - 0, -1, - -3, -11, - 4, 3, - 1, 5, + 1, 1, + -1, -1, + -3, -6, + 10, 5, + 7, 4, + 8, 8, + 6, 1, 1, -2, - 1, 0, - 12, 8, - 5, 3, - -1, 2, - -1, -4, - -5, -6, - -13, 5, - 3, 1, - 0, 0, - 1, 0, - -1, -2, - -5, -5, - -10, 8, - 2, 0, + -2, 1, + 0, -2, + 1, 1, + 1, 2, 3, -1, + -3, -8, + -13, 6, 1, 0, - 0, -3, - -5, -2, - -5, -8, - 10, 5, - 1, 0, - 1, -2, - -3, -5, - -9, 12, - 6, 2, 3, 2, - 5, -1, - -1, 12, - 8, 4, 0, -1, - -5, -7, - 6, 3, - -2, -3, - 3, 1, - -2, 4, - -8, 7, - 2, 1, - 2, -1, - -2, 0, - -2, 0, - -3, -3, - -3, 5, - 4, 2, - 2, 0, - -2, -4, - 1, 1, - -1, -3, - -3, -7, - 6, 2, + -6, -12, + 9, 4, + -5, -5, + -10, 5, 3, 2, - -1, -1, - 2, 0, - 0, 6, - 3, 6, + -1, -2, + 3, -1, + 1, 1, 6, 3, - 4, 5, - 2, 2, - 5, 2, - 1, 2, + 4, 2, + -2, 13, + 7, 3, + 1, -1, 0, 1, - 3, 3, - 2, -2, - -2, 1, - 0, -4, - -4, -7, + -3, 13, + 8, 5, + 3, -1, + 0, -1, + -5, -14, + 3, -1, 0, 0, + 2, 4, + -5, -6, + 4, 4, + -2, -2, + 4, 0, + -2, 4, + -7, 8, 4, 2, 0, -2, - -2, -7, - -1, 6, - -4, -4, - -5, -5, - -4, 0, - -1, -2, - -2, 2, - -1, -1, + -1, 0, + -3, 0, 0, 0, - -1, -3, - -10, 3, - 0, -3, + -2, 4, + 4, 4, + 3, 0, + 3, 5, 0, 0, - 0, 2, - 0, -1, - -1, -2, - -7, 3, - 0, 1, - -1, 0, - -1, 2, - 3, 2, - -2, -6, -1, -1, - -2, -1, + -3, -4, + -4, -9, + 1, 0, + -1, -1, + -2, 4, + 2, 0, + -4, -1, + -6, -4, + 4, 4, + 2, 1, + -1, -3, + 5, 2, + -1, 0, -4, -4, - -1, -4, - 3, -1, - 0, 0, - -3, -5, - 5, 1, - 1, -1, + -6, -2, + -2, -2, + 5, 2, + 0, 1, 2, 2, + 0, -6, + 3, 5, 1, 1, - 1, 5, - 2, 1, - 2, -1, - 4, 1, - -2, -2, - -3, 2, - 0, 0, - -2, 5, + -2, -4, + -1, -2, + 10, 3, 1, 2, - -2, -2, - 7, -1, - 0, 0, + -1, -1, + 1, -1, 0, 0, - -1, -2, - 3, 4, - 2, -1, - -2, 0, - -3, 2, - 2, 1, + 0, -3, + -5, -1, + -5, 7, + 4, 2, + 1, 1, + 1, 0, + 0, -4, 0, 0, - 0, -1, - -2, 0, - 5, 0, - -1, 1, + -3, 5, -2, -2, - 2, 1, - 0, 3, - 0, -3, + -2, -1, + 1, 1, + -2, -4, + -5, 2, + -1, -1, + 3, 3, + 3, 2, + 4, 3, + -1, -3, + 0, 0, + 0, -2, + -3, -4, 1, -1, - -1, 0, - 2, 1, - 3, 1, - 0, 3, + -1, -6, + 3, 3, 1, 2, - 2, 2, - 0, 2, 1, 0, - -2, -3, - -1, -2, - 1, 0, - 2, 0, + -4, -2, + 1, -2, -3, -3, - -2, 2, - 0, 1, - 1, 0, - -5, 3, - 0, 1, - 0, 0, 2, 1, 1, 0, - -1, -5, - 0, 2, - -2, 0, - 0, 1, - -2, -2, - -2, -1, - 1, -3, - 0, 0, - -2, -3, - -3, 3, - 0, 0, - -2, -1, - 0, 0, - -1, 0, + 0, -1, + 6, 2, + 2, 3, + 2, -3, + -4, 4, 2, 1, - 2, 0, - 0, 3, - 2, 0, - 0, 2, + 3, 1, + 0, 0, + -6, -1, + 1, 1, + 1, 4, + 1, 1, 1, -1, + 2, -1, + -2, -2, + -5, 1, -2, -1, - -2, 2, - -2, 0, + 2, 2, + 1, 1, + 2, 3, 0, -1, + -4, 1, + 2, 0, + -1, 0, 0, -2, - 1, 3, + 4, 4, + 0, -2, + -5, 3, + 0, 0, 0, -1, - 0, 1, - -2, -1, - 2, 1, - -1, 0, - 1, -3, - -1, 0, - 0, 1, - 1, 0, - 1, 0, 0, 0, - 1, 1, - 2, -3, + 1, 0, -1, -2, + -1, -1, + 3, 1, -1, -2, - 0, -1, + 0, -3, + 0, -2, + 0, -3, + -3, 2, + 2, -1, + 0, 2, 2, 1, - 1, 2, -2, 1, + 1, -1, + 1, -3, + 3, 2, + 0, -2, + -1, 4, 0, 0, + -1, 2, + 1, 2, + 1, 0, + -1, -2, + 3, 0, + 1, 1, + 0, 1, + 0, 2, 3, 1, - -2, -2, - 0, 0, - 0, 0, + 1, 0, + 0, -2, + 1, -1, 0, -1, - 0, 0, - 0, 3, + -1, 0, + -1, -2, -3, 0, - -1, 1, - 3, -2, - 0, -1, + 3, 1, -1, -1, + -2, 2, -1, 0, - 0, -1, - -2, 1, - 2, 1, - 2, 0, - -1, 0, - -1, 0, - 0, -1, + 2, -2, -1, -1, - -1, 0, - 5, 1, 1, 0, + 2, 2, 0, 0, + 2, 2, + -1, 3, + -2, -1, + 1, -2, -1, 0, - 1, -4, - -1, 0, - 0, -1, + 0, 2, -1, 0, 0, 0, - -1, -1, - -1, 5, - 1, 0, - -2, -1, - -1, -2, -1, 0, - 0, -3, - 0, 1, + 0, 4, + -1, 1, + 2, -1, 1, 2, - 1, -2, - 2, 0, - 0, 0, - 0, 3, -1, -1, - 1, 1, + -2, -1, + -1, -1, + -1, -1, + -2, 1, + 0, -2, 1, 0, + 1, -2, + -1, 0, + 1, 3, 1, 0, - -1, -2, - 0, 1, 1, 0, - -3, -1, + -1, 1, + 1, 1, + -1, 3, + -2, 2, + 0, 0, + 0, 0, + 0, 0, + -1, -1, + 0, 1, + 1, -3, + 0, 0, + -1, 1, + 0, -1, 1, 0, - -3, -1, + 0, 1, + -1, -3, + -1, 2, + -2, -2, + 0, 1, + 1, 2, + -1, 1, + 0, 1, + 0, 0, + -1, 0, + 0, 0, + 3, 0, + 3, 1, + 0, 0, + -1, 0, 0, -1, - 1, 1, + -1, 1, + 2, -4, 1, -1, - 0, -1, - 2, 1, + 2, -3, + 1, 0, + 0, 1, 1, 1, + 1, 0, 0, 2, - -2, 1, - 0, 0, - -1, 1, - -1, 2, + 2, 0, -2, 1, -1, 0, - 0, 0, - 2, 1, + 0, -1, + -3, -2, -1, 0, - -2, 0, + -1, 0, + 0, 0, + 1, 1, + 0, 0, + -1, 1, 1, 2, + -3, -1, + -1, 0, + 1, 1, + -3, 0, 1, 0, + 0, 0, 0, -2, - 1, 0, - -2, 0, - 1, 1, - 1, -1, - 2, -2, 2, 0, - 1, -1, + 0, -1, + 2, -1, + 0, -1, + 2, -1, 0, 1, - 0, 1 + -2, 2, + -1, 0, + 0, -1, + 2, 1, + -1, 1, + 0, -1, + 1, -1, + 0, -1 }; const SKP_Silk_NLSF_CBS SKP_Silk_NLSF_CB0_10_Stage_info[ NLSF_MSVQ_CB0_10_STAGES ] = @@ -940,7 +922,6 @@ const SKP_Silk_NLSF_CB_struct SKP_Silk_NLSF_CB0_10 = SKP_Silk_NLSF_CB0_10_Stage_info, SKP_Silk_NLSF_MSVQ_CB0_10_ndelta_min_Q15, SKP_Silk_NLSF_MSVQ_CB0_10_CDF, - SKP_Silk_NLSF_MSVQ_CB0_10_CDF_start_ptr, - SKP_Silk_NLSF_MSVQ_CB0_10_CDF_middle_idx + SKP_Silk_NLSF_MSVQ_CB0_10_CDF_start_ptr }; diff --git a/src_common/SKP_Silk_tables_NLSF_CB0_10.h b/src_common/SKP_Silk_tables_NLSF_CB0_10.h deleted file mode 100644 index 1e27418142f06d5b8521545997cd0b52b0a3526f..0000000000000000000000000000000000000000 --- a/src_common/SKP_Silk_tables_NLSF_CB0_10.h +++ /dev/null @@ -1,51 +0,0 @@ -/*********************************************************************** -Copyright (c) 2006-2010, Skype Limited. All rights reserved. -Redistribution and use in source and binary forms, with or without -modification, (subject to the limitations in the disclaimer below) -are permitted provided that the following conditions are met: -- Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. -- Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -- Neither the name of Skype Limited, nor the names of specific -contributors, may be used to endorse or promote products derived from -this software without specific prior written permission. -NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED -BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, -BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -***********************************************************************/ - -#ifndef SKP_SILK_TABLES_NLSF_CB0_10_H -#define SKP_SILK_TABLES_NLSF_CB0_10_H - -#include "SKP_Silk_define.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -#define NLSF_MSVQ_CB0_10_STAGES 7 -#define NLSF_MSVQ_CB0_10_VECTORS 128 - -/* NLSF codebook entropy coding tables */ -extern const SKP_uint16 SKP_Silk_NLSF_MSVQ_CB0_10_CDF[ NLSF_MSVQ_CB0_10_VECTORS + NLSF_MSVQ_CB0_10_STAGES ]; -extern const SKP_uint16 * const SKP_Silk_NLSF_MSVQ_CB0_10_CDF_start_ptr[ NLSF_MSVQ_CB0_10_STAGES ]; -extern const SKP_int SKP_Silk_NLSF_MSVQ_CB0_10_CDF_middle_idx[ NLSF_MSVQ_CB0_10_STAGES ]; - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/src_common/SKP_Silk_tables_NLSF_CB0_16.c b/src_common/SKP_Silk_tables_NLSF_CB0_16.c index 159839a3b0b80cd41f81c637bb9a9cb2a22b9c7a..0aff58439e8079855b2bc12ab3452861ba974656 100644 --- a/src_common/SKP_Silk_tables_NLSF_CB0_16.c +++ b/src_common/SKP_Silk_tables_NLSF_CB0_16.c @@ -28,918 +28,894 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /**********************************************/ /* This file has been automatically generated */ /* */ -/* ROM usage: 0.38 + 2.62 kB */ +/* ROM usage: 0.19 + 2.62 kB */ /**********************************************/ #include "SKP_Silk_structs.h" #include "SKP_Silk_tables.h" -#include "SKP_Silk_tables_NLSF_CB0_16.h" +#include "SKP_Silk_tables_NLSF_CB.h" -const SKP_uint16 SKP_Silk_NLSF_MSVQ_CB0_16_CDF[ NLSF_MSVQ_CB0_16_VECTORS + NLSF_MSVQ_CB0_16_STAGES ] = +const SKP_uint8 SKP_Silk_NLSF_MSVQ_CB0_16_CDF[ NLSF_MSVQ_CB0_16_VECTORS ] = { + 246, + 237, + 228, + 221, + 214, + 207, + 200, + 194, + 188, + 182, + 177, + 173, + 168, + 163, + 158, + 154, + 149, + 145, + 140, + 136, + 131, + 127, + 123, + 119, + 115, + 110, + 106, + 102, + 99, + 95, + 91, + 87, + 84, + 80, + 76, + 73, + 69, + 66, + 62, + 59, + 56, + 52, + 49, + 46, + 43, + 40, + 36, + 33, + 31, + 28, + 25, + 22, + 20, + 17, + 15, + 13, + 10, + 8, + 6, + 5, + 3, + 2, + 1, 0, - 2661, - 5102, - 7439, - 9404, - 11130, - 12855, - 14508, - 15959, - 17349, - 18738, - 20128, - 21458, - 22679, - 23847, - 25016, - 26184, - 27303, - 28422, - 29541, - 30660, - 31731, - 32803, - 33874, - 34901, - 35927, - 36953, - 37979, - 38961, - 39944, - 40885, - 41826, - 42767, - 43708, - 44609, - 45510, - 46411, - 47274, - 48136, - 48999, - 49862, - 50725, - 51551, - 52377, - 53204, - 53995, - 54786, - 55544, - 56269, - 56995, - 57690, - 58355, - 58992, - 59629, - 60266, - 60904, - 61514, - 62124, - 62708, - 63292, - 63828, - 64364, - 64834, - 65230, - 65535, + 235, + 215, + 197, + 180, + 163, + 146, + 130, + 114, + 98, + 82, + 66, + 51, + 37, + 23, + 11, 0, - 5542, - 10849, - 16156, - 21023, - 25683, - 29957, - 33876, - 37795, - 41547, - 45300, - 48894, - 52487, - 55928, - 59224, - 62379, - 65535, + 216, + 181, + 149, + 118, + 87, + 58, + 28, 0, - 10647, - 19220, - 27793, - 36003, - 44213, - 51422, - 58631, - 65535, + 218, + 183, + 148, + 117, + 86, + 56, + 28, 0, - 8897, - 17795, - 26315, - 34835, - 42993, - 51152, - 58965, - 65535, + 220, + 185, + 151, + 118, + 85, + 53, + 26, 0, - 9726, - 19453, - 27632, - 35811, - 43643, - 51475, - 58657, - 65535, + 220, + 185, + 152, + 120, + 88, + 56, + 28, 0, - 9306, - 18611, - 27522, - 36433, - 44258, - 52084, - 58955, - 65535, + 221, + 187, + 154, + 120, + 90, + 59, + 28, 0, - 9344, - 17912, - 26481, - 35049, - 43254, - 51111, - 58635, - 65535, + 221, + 186, + 152, + 118, + 85, + 51, + 23, 0, - 8946, - 17891, - 26837, - 35403, - 43606, - 51128, - 58332, - 65535, + 221, + 187, + 152, + 117, + 87, + 56, + 27, 0, - 8919, - 17460, - 25638, - 33817, - 41996, - 50174, - 58353, - 65535, - 0, - 4876, - 9752, - 14421, - 18893, - 23175, - 27456, - 31738, - 35839, - 39939, - 43865, - 47792, - 51552, - 55312, - 59072, - 62373, - 65535 + 237, + 218, + 199, + 182, + 164, + 147, + 130, + 115, + 99, + 83, + 67, + 51, + 37, + 24, + 12, + 0 }; -const SKP_uint16 * const SKP_Silk_NLSF_MSVQ_CB0_16_CDF_start_ptr[ NLSF_MSVQ_CB0_16_STAGES ] = +const SKP_uint8 * const SKP_Silk_NLSF_MSVQ_CB0_16_CDF_start_ptr[ NLSF_MSVQ_CB0_16_STAGES ] = { &SKP_Silk_NLSF_MSVQ_CB0_16_CDF[ 0 ], - &SKP_Silk_NLSF_MSVQ_CB0_16_CDF[ 65 ], - &SKP_Silk_NLSF_MSVQ_CB0_16_CDF[ 82 ], - &SKP_Silk_NLSF_MSVQ_CB0_16_CDF[ 91 ], - &SKP_Silk_NLSF_MSVQ_CB0_16_CDF[ 100 ], - &SKP_Silk_NLSF_MSVQ_CB0_16_CDF[ 109 ], - &SKP_Silk_NLSF_MSVQ_CB0_16_CDF[ 118 ], - &SKP_Silk_NLSF_MSVQ_CB0_16_CDF[ 127 ], - &SKP_Silk_NLSF_MSVQ_CB0_16_CDF[ 136 ], - &SKP_Silk_NLSF_MSVQ_CB0_16_CDF[ 145 ] -}; - -const SKP_int SKP_Silk_NLSF_MSVQ_CB0_16_CDF_middle_idx[ NLSF_MSVQ_CB0_16_STAGES ] = -{ - 23, - 8, - 5, - 5, - 5, - 5, - 5, - 5, - 5, - 8 + &SKP_Silk_NLSF_MSVQ_CB0_16_CDF[ 64 ], + &SKP_Silk_NLSF_MSVQ_CB0_16_CDF[ 80 ], + &SKP_Silk_NLSF_MSVQ_CB0_16_CDF[ 88 ], + &SKP_Silk_NLSF_MSVQ_CB0_16_CDF[ 96 ], + &SKP_Silk_NLSF_MSVQ_CB0_16_CDF[ 104 ], + &SKP_Silk_NLSF_MSVQ_CB0_16_CDF[ 112 ], + &SKP_Silk_NLSF_MSVQ_CB0_16_CDF[ 120 ], + &SKP_Silk_NLSF_MSVQ_CB0_16_CDF[ 128 ], + &SKP_Silk_NLSF_MSVQ_CB0_16_CDF[ 136 ] }; const SKP_uint8 SKP_Silk_NLSF_MSVQ_CB0_16_rates_Q4[ NLSF_MSVQ_CB0_16_VECTORS ] = { - 74, 76, - 77, 81, - 84, 84, - 85, 88, - 89, 89, - 89, 90, + 75, 77, + 77, 83, + 83, 83, + 84, 85, + 88, 89, + 91, 92, + 92, 92, 92, 93, 93, 93, - 94, 94, + 93, 94, 94, 94, 95, 95, - 95, 96, + 95, 95, 96, 96, - 96, 97, + 97, 97, 97, 98, 98, 98, 98, 99, - 99, 99, - 100, 100, + 99, 100, 100, 100, 100, 101, 101, 101, + 101, 101, 102, 102, - 103, 104, 104, 105, - 106, 107, + 105, 105, 107, 107, - 107, 108, + 108, 108, 108, 109, - 109, 111, - 111, 114, - 118, 124, - 57, 58, - 58, 60, - 61, 63, + 111, 121, + 121, 124, + 128, 128, + 58, 58, + 62, 62, + 63, 63, + 63, 64, + 64, 64, 65, 65, - 66, 66, - 67, 67, - 68, 69, - 70, 70, - 42, 47, - 47, 48, - 48, 51, - 51, 52, - 46, 46, + 66, 68, + 71, 72, + 43, 46, + 48, 49, + 49, 50, + 50, 51, + 44, 46, + 46, 49, + 49, 50, + 51, 51, + 45, 46, 47, 47, + 47, 48, + 52, 53, + 45, 46, + 47, 48, 48, 48, - 49, 53, - 44, 44, - 48, 48, + 51, 51, + 46, 47, + 47, 47, 49, 49, - 51, 52, - 45, 45, + 49, 51, 46, 46, - 49, 49, - 52, 53, - 45, 47, 47, 47, - 48, 49, - 50, 52, + 47, 47, + 51, 56, 46, 46, - 46, 47, - 48, 50, - 51, 51, - 46, 47, - 48, 48, - 48, 48, - 48, 51, + 46, 46, + 49, 49, + 50, 52, 60, 60, - 61, 62, - 63, 63, + 60, 62, + 62, 62, 63, 64, + 64, 64, 64, 65, - 65, 66, - 66, 66, - 69, 70 + 66, 69, + 70, 71 }; const SKP_int SKP_Silk_NLSF_MSVQ_CB0_16_ndelta_min_Q15[ 16 + 1 ] = { - 236, - 4, - 75, + 290, + 3, + 54, + 3, 3, 3, - 5, - 115, - 95, 113, - 138, - 176, - 169, - 249, - 256, - 271, - 263, - 630 + 90, + 103, + 132, + 172, + 154, + 245, + 248, + 262, + 253, + 618 }; const SKP_int8 SKP_Silk_NLSF_MSVQ_CB0_16_Q8[ 16 * NLSF_MSVQ_CB0_16_VECTORS ] = { - -117, -106, -94, -81, - -65, -52, -37, -22, - -5, 11, 27, 42, - 59, 75, 91, 106, - -120, -116, -100, -84, - -67, -49, -32, -16, - 0, 15, 30, 46, - 62, 77, 94, 109, - -121, -116, -102, -85, - -71, -58, -39, -24, - -5, 10, 29, 45, - 61, 77, 92, 107, - -120, -116, -94, -83, - -69, -57, -46, -25, - -7, 10, 27, 42, - 58, 75, 91, 107, + -119, -115, -98, -85, + -67, -51, -37, -20, + -3, 13, 30, 46, + 62, 78, 93, 108, + -116, -102, -91, -78, + -63, -51, -37, -21, + -4, 10, 28, 42, + 58, 74, 92, 107, + -115, -109, -95, -76, + -65, -47, -32, -15, + 1, 17, 32, 46, + 61, 76, 92, 106, + -115, -107, -98, -83, + -71, -60, -45, -26, + -9, 4, 24, 38, + 52, 69, 86, 103, -114, -109, -94, -79, - -66, -52, -35, -18, - -4, 9, 26, 40, - 53, 65, 81, 92, - -114, -108, -96, -74, - -62, -50, -34, -18, - 0, 18, 33, 47, - 61, 77, 94, 107, - -116, -109, -99, -84, - -71, -60, -44, -30, - -9, 5, 18, 33, - 52, 70, 88, 106, - -119, -114, -99, -89, - -71, -60, -50, -37, - -4, 12, 28, 46, - 60, 77, 91, 106, - -113, -109, -87, -78, - -67, -52, -40, -19, - -8, 12, 29, 43, - 58, 75, 94, 113, - -119, -114, -88, -77, - -63, -49, -36, -23, - 1, 17, 33, 51, - 68, 81, 97, 109, - -119, -114, -101, -88, - -71, -57, -42, -16, - -1, 11, 24, 38, - 54, 69, 90, 110, - -116, -103, -86, -73, + -67, -53, -37, -20, + -6, 8, 24, 39, + 52, 65, 81, 93, + -118, -111, -101, -83, + -69, -58, -37, -26, + -4, 9, 24, 43, + 61, 77, 95, 110, + -116, -107, -87, -75, -57, -43, -27, -13, - 2, 16, 31, 45, - 61, 76, 92, 108, - -116, -112, -100, -77, - -68, -51, -41, -22, - -11, 0, 16, 37, - 56, 72, 88, 104, - -118, -113, -96, -84, - -69, -55, -42, -30, - -12, 17, 33, 51, - 70, 83, 98, 110, - -109, -104, -92, -80, - -67, -56, -41, -28, - -13, 0, 14, 28, - 43, 60, 85, 104, - -112, -107, -95, -82, - -71, -57, -45, -26, - -11, 1, 27, 41, - 53, 66, 84, 104, - -115, -111, -99, -92, - -63, -52, -39, -24, - -13, 5, 27, 42, - 60, 78, 93, 109, - -112, -108, -96, -89, - -77, -51, -41, -22, - -11, 13, 31, 44, - 57, 72, 87, 105, - -111, -107, -95, -87, - -77, -49, -38, -24, - -10, 0, 15, 30, - 54, 75, 93, 107, - -107, -103, -93, -74, - -52, -44, -31, -16, - -3, 10, 33, 45, - 58, 71, 85, 98, - -115, -111, -98, -72, - -60, -49, -35, -24, - 1, 11, 25, 38, - 56, 81, 98, 112, - -116, -112, -102, -70, - -59, -49, -36, -25, - -7, 5, 17, 30, - 48, 66, 87, 103, + 2, 18, 32, 48, + 63, 78, 93, 109, + -116, -112, -99, -75, + -66, -51, -40, -22, + -10, 3, 18, 37, + 55, 72, 89, 105, + -107, -103, -94, -77, + -51, -43, -32, -16, + -3, 8, 31, 44, + 57, 70, 86, 100, + -115, -109, -99, -89, + -81, -60, -37, -26, + -6, 6, 22, 37, + 56, 75, 93, 108, + -114, -111, -83, -74, + -64, -53, -39, -23, + -12, 5, 28, 44, + 59, 76, 94, 111, + -114, -109, -99, -81, + -71, -59, -47, -33, + -16, -3, 17, 36, + 56, 73, 92, 108, + -114, -110, -98, -69, + -57, -48, -34, -23, + -6, 7, 20, 35, + 64, 81, 97, 110, + -112, -109, -94, -86, + -77, -52, -43, -23, + -13, -2, 13, 36, + 58, 77, 91, 105, + -111, -106, -95, -78, + -67, -56, -40, -28, + -11, 2, 15, 29, + 43, 57, 85, 105, + -109, -107, -90, -84, + -70, -53, -41, -22, + -12, 15, 30, 43, + 57, 72, 91, 111, -113, -109, -94, -86, - -75, -64, -52, -24, - -14, 6, 23, 43, - 61, 77, 92, 108, - -118, -112, -100, -90, - -65, -53, -39, -22, - 6, 18, 32, 49, - 67, 81, 97, 109, - -116, -109, -99, -80, - -69, -55, -41, -27, - -11, 3, 23, 40, - 61, 80, 101, 113, - -110, -106, -92, -84, - -73, -42, -31, -17, - -1, 10, 26, 37, - 51, 76, 99, 113, - -116, -110, -93, -75, - -57, -41, -21, -6, - 10, 25, 40, 54, - 68, 82, 96, 110, - -116, -111, -100, -92, - -81, -46, -32, -19, - -5, 7, 25, 42, - 58, 74, 92, 107, - -112, -109, -86, -78, - -68, -56, -45, -22, - -13, -1, 13, 32, - 58, 78, 91, 107, - -108, -104, -89, -76, - -66, -52, -38, -26, - -7, 4, 18, 30, - 43, 74, 98, 112, - -114, -110, -82, -72, - -61, -50, -37, -20, - -11, 1, 17, 46, - 62, 78, 93, 112, - -112, -108, -99, -77, - -66, -58, -33, -22, - -11, 13, 25, 35, - 47, 64, 87, 108, - -113, -109, -96, -70, - -59, -49, -35, -24, - -6, 7, 19, 34, - 65, 79, 94, 106, - -115, -111, -96, -85, - -72, -59, -47, -33, - -20, -8, 8, 35, - 56, 74, 92, 110, - -111, -108, -92, -65, - -54, -45, -31, -20, - -2, 11, 23, 34, - 47, 63, 96, 114, - -113, -108, -98, -87, - -79, -68, -32, -19, - -5, 12, 25, 41, - 60, 77, 96, 109, - -115, -109, -96, -82, - -58, -48, -34, -17, - -4, 9, 36, 50, - 65, 79, 97, 109, - -115, -110, -100, -88, - -56, -45, -34, -21, - -7, 7, 24, 37, - 50, 64, 86, 107, - -104, -98, -88, -77, - -60, -51, -37, -18, - -3, 8, 25, 40, - 53, 68, 91, 107, - -118, -113, -97, -85, - -74, -62, -51, -40, - -25, 4, 24, 40, - 57, 75, 92, 109, - -107, -103, -92, -83, - -74, -62, -28, -18, - -4, 9, 22, 34, - 50, 67, 87, 107, - -116, -112, -75, -67, - -56, -45, -31, -16, - -5, 10, 30, 45, - 63, 79, 96, 111, - -106, -102, -88, -77, - -68, -52, -38, -25, - -4, 7, 23, 36, - 66, 84, 98, 111, - -103, -99, -87, -76, - -66, -56, -29, -13, - 0, 14, 31, 42, - 57, 71, 85, 96, - -114, -111, -91, -58, - -47, -38, -26, -14, - 3, 13, 26, 40, - 62, 80, 96, 110, - -114, -110, -90, -83, - -72, -64, -36, -24, - -13, 6, 28, 49, - 66, 81, 97, 112, - -109, -105, -91, -82, - -71, -51, -38, -24, - -10, 1, 20, 49, - 64, 78, 91, 106, - -111, -107, -90, -82, - -70, -60, -49, -12, - 0, 11, 25, 37, - 60, 82, 101, 114, - -111, -107, -93, -72, - -42, -30, -20, -8, - 4, 16, 34, 46, - 58, 70, 85, 98, - -112, -109, -80, -65, - -56, -44, -33, -17, - -3, 8, 20, 31, - 49, 79, 98, 112, - -104, -98, -84, -72, - -59, -45, -31, -18, - -1, 12, 31, 47, - 64, 81, 98, 110, - -110, -106, -92, -79, - -70, -59, -49, -39, - -1, 11, 22, 35, - 52, 69, 89, 109, - -113, -109, -101, -95, - -56, -44, -29, -16, - -2, 18, 33, 48, - 63, 78, 95, 110, - -109, -106, -94, -87, - -74, -41, -29, -14, - 1, 13, 28, 47, - 69, 84, 99, 111, - -115, -110, -101, -84, - -50, -32, -22, -11, - 1, 13, 30, 45, - 58, 72, 89, 107, - -106, -102, -89, -75, - -64, -55, -44, -34, - -13, 16, 32, 43, - 59, 73, 86, 100, - -111, -107, -94, -70, - -55, -46, -33, -21, - -7, 5, 19, 31, - 43, 55, 70, 103, - -102, -97, -80, -71, - -60, -49, -36, -24, - -8, 4, 19, 32, - 48, 63, 79, 100, - -113, -109, -90, -76, - -66, -53, -41, -29, - -16, -7, 5, 15, - 42, 69, 89, 108, - -108, -105, -93, -85, - -76, -62, -23, -8, - 4, 18, 33, 45, - 60, 74, 90, 105, - -114, -110, -89, -61, - -52, -42, -30, -18, - -4, 13, 26, 39, - 53, 67, 81, 96, - -99, -95, -86, -77, - -69, -60, -32, -15, - -2, 15, 35, 47, - 64, 80, 96, 110, - -115, -105, -80, -61, - -43, -27, -14, -1, - 13, 26, 40, 53, - 67, 80, 95, 110, - -100, -91, -72, -59, - -48, -38, -25, -13, - 1, 15, 28, 39, - 58, 75, 91, 105, - 0, 0, 0, -1, - -2, -2, -2, -4, - -5, -5, -7, -8, - -5, -2, 0, 1, - -1, -1, -3, -6, - -8, -2, -1, -2, - 1, 2, 3, 4, - 3, 3, 2, 1, - -3, -3, -6, 4, - 2, 1, -1, -2, - 0, 0, -1, 1, + -75, -65, -53, -27, + -16, 6, 22, 42, + 60, 77, 92, 109, + -110, -106, -93, -73, + -64, -52, -39, -27, + -6, 6, 20, 32, + 48, 79, 98, 112, + -115, -110, -94, -74, + -61, -48, -36, -24, + 4, 15, 31, 45, + 63, 81, 99, 112, + -115, -110, -102, -77, + -54, -47, -32, -20, + -7, 12, 26, 37, + 50, 65, 88, 107, + -113, -109, -97, -88, + -78, -50, -39, -21, + -7, 9, 32, 46, + 58, 71, 85, 102, + -104, -99, -89, -76, + -67, -58, -33, -23, + -7, 8, 22, 37, + 61, 78, 94, 107, + -113, -109, -86, -77, + -67, -56, -43, -24, + -15, -2, 12, 43, + 61, 77, 91, 109, + -109, -106, -93, -66, + -60, -48, -34, -23, + -2, 10, 23, 35, + 47, 63, 92, 113, + -116, -112, -100, -92, + -82, -50, -38, -21, + -10, 5, 25, 43, + 60, 77, 94, 108, + -109, -104, -92, -84, + -75, -50, -37, -25, + -7, 4, 18, 31, + 45, 69, 92, 106, + -105, -101, -89, -71, + -61, -52, -28, -14, + -1, 14, 33, 44, + 58, 71, 86, 99, + -113, -109, -99, -94, + -59, -48, -36, -21, + -10, 5, 20, 37, + 56, 75, 91, 108, + -110, -106, -88, -77, + -68, -45, -34, -17, + -2, 10, 25, 36, + 48, 76, 97, 113, + -115, -112, -98, -64, + -54, -45, -33, -21, + -5, 9, 21, 35, + 50, 67, 85, 99, + -117, -111, -97, -78, + -60, -46, -25, -9, + 7, 24, 40, 53, + 68, 83, 97, 110, + -110, -106, -91, -82, + -72, -58, -44, -30, + -17, -5, 8, 20, + 51, 72, 92, 109, + -112, -108, -96, -89, + -78, -40, -29, -16, + -1, 10, 27, 40, + 54, 73, 94, 109, + -110, -107, -90, -81, + -71, -62, -50, -14, + -2, 11, 25, 37, + 58, 81, 100, 114, + -113, -109, -87, -60, + -51, -41, -29, -17, + 0, 11, 23, 34, + 49, 78, 97, 111, + -116, -111, -102, -86, + -51, -37, -28, -16, + -2, 10, 27, 41, + 55, 68, 86, 106, + -112, -108, -96, -89, + -74, -48, -38, -16, + -3, 9, 22, 37, + 65, 84, 100, 112, + -111, -107, -95, -77, + -43, -29, -19, -8, + 4, 16, 35, 48, + 60, 74, 90, 104, + -113, -108, -95, -86, + -60, -50, -35, -21, + -10, 3, 32, 50, + 63, 77, 93, 109, + -114, -111, -78, -68, + -59, -48, -37, -19, + -9, 3, 15, 29, + 52, 74, 92, 110, + -102, -98, -85, -74, + -63, -52, -35, -23, + -9, 6, 21, 33, + 48, 62, 77, 100, + -115, -112, -74, -64, + -54, -42, -29, -15, + -4, 10, 28, 44, + 61, 78, 94, 110, + -113, -110, -92, -86, + -74, -66, -36, -24, + -10, 9, 29, 49, + 65, 80, 96, 111, + -115, -111, -95, -60, + -48, -39, -25, -14, + 1, 13, 27, 44, + 63, 79, 96, 109, + -109, -105, -95, -82, + -74, -65, -30, -19, + -7, 12, 25, 36, + 48, 63, 87, 108, + -108, -104, -92, -79, + -71, -60, -51, -40, + -2, 10, 23, 38, + 56, 73, 92, 109, + -107, -105, -86, -81, + -72, -46, -34, -21, + -2, 9, 27, 45, + 66, 83, 97, 111, + -112, -107, -97, -85, + -75, -66, -40, -11, + 2, 14, 31, 43, + 56, 73, 91, 106, + -113, -109, -95, -71, + -61, -51, -39, -29, + -14, -3, 8, 19, + 44, 69, 90, 106, + -116, -112, -103, -97, + -61, -47, -33, -19, + -3, 17, 33, 46, + 60, 76, 93, 109, + -110, -106, -94, -71, + -55, -47, -34, -20, + -7, 5, 20, 32, + 43, 54, 68, 103, + -106, -102, -89, -73, + -63, -55, -43, -34, + -13, 17, 33, 44, + 58, 71, 85, 99, + -100, -95, -81, -68, + -55, -45, -30, -17, + -2, 13, 33, 47, + 65, 80, 97, 110, + -104, -100, -89, -79, + -74, -62, -23, -11, + 2, 16, 31, 42, + 57, 71, 86, 101, + -111, -107, -90, -61, + -42, -35, -23, -11, + 2, 17, 32, 43, + 56, 67, 80, 96, + -107, -103, -96, -91, + -58, -41, -29, -14, + 0, 14, 29, 45, + 61, 78, 96, 111, + -110, -106, -96, -88, + -80, -67, -27, -15, + -2, 13, 25, 38, + 61, 77, 95, 108, + -105, -103, -79, -75, + -67, -52, -40, -22, + -6, 6, 22, 38, + 53, 70, 90, 109, + -113, -106, -84, -65, + -48, -31, -14, 0, + 15, 28, 42, 55, + 68, 81, 96, 110, + -101, -92, -71, -59, + -48, -39, -26, -16, + -1, 12, 25, 38, + 55, 72, 89, 104, + -97, -92, -82, -74, + -68, -56, -28, -10, + 3, 16, 33, 46, + 61, 78, 96, 108, + -106, -103, -93, -88, + -83, -50, -23, -11, + 3, 20, 32, 47, + 64, 78, 94, 109, + -97, -94, -85, -78, + -73, -66, -32, -14, + 1, 16, 35, 49, + 61, 77, 96, 111, + -97, -94, -89, -81, + -63, -58, -42, -15, + 2, 13, 31, 49, + 64, 77, 94, 109, + -3, -2, -5, -8, 0, 1, 0, 0, - -2, -2, 9, 7, - 4, 3, 1, 1, - 0, 0, -2, -1, - -2, -2, 0, -1, - -2, -2, -1, -2, - -2, 1, 0, 0, - -1, -2, -3, -1, - -3, -2, -5, -6, - -1, -1, -4, -8, - 3, 2, 1, 3, - 1, 1, -1, 1, - 2, 3, 3, 1, - 0, 0, -2, -4, - -5, -7, -9, 4, - 2, 0, 1, 0, - -2, -1, 0, 0, - -3, -3, -1, 9, - 7, 6, 5, 4, - 3, 3, 4, 4, - 3, 3, 2, 1, - 8, 8, 6, 3, - 2, 0, 2, -1, - 0, 1, 1, 0, - -1, 0, 1, 0, - 2, 2, 3, 1, - 1, 1, 0, 6, - 6, 6, 7, 6, - 4, 3, 2, 0, - 1, 1, 0, -1, - -3, -4, -7, -10, - 0, 0, -1, 2, - 3, 2, 3, 2, - -1, 0, -1, -2, - -4, -5, 8, 5, - 3, 3, 1, -1, - -3, -3, -1, 0, - 2, 2, 2, 2, - 1, 1, 0, 0, - 0, 0, -2, -3, - -6, -10, -10, -1, - 1, 1, 1, -1, - -1, -2, -3, -5, - -8, -9, 4, 3, - 1, 1, 0, 1, - 0, 0, -2, -3, - 10, 9, 7, 4, - 2, 2, 1, 0, - -1, -3, -3, -2, - 2, 2, 2, 1, - 0, 1, 1, 0, - -1, 0, -2, -4, - 9, 7, 4, 1, - -1, -1, -2, -2, - -3, -3, -3, -1, - -2, -4, -3, -2, - 0, -1, 0, 1, - 0, 0, 3, 4, - 3, 2, 1, 1, - 0, -2, -3, -5, - -6, -2, -1, 0, - -2, -2, -4, -4, - 4, 2, 1, 1, + -1, -1, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 0, + -1, -1, 1, 1, + 0, 1, -1, -2, + -4, -5, -6, -8, + -8, -6, -5, -2, + -3, -4, -6, 5, + 2, 2, 3, 2, + 2, 1, 1, 0, + -1, 0, 0, 1, + -1, -1, 2, 3, + 3, 3, 2, 3, + 2, 1, 2, 1, + -1, -4, -8, -11, + -2, -2, 3, 4, + 3, 4, 3, 5, + 4, 5, 6, 7, + 6, 5, 4, 3, + -2, -2, -1, -1, + -4, -5, -8, 4, + 1, 0, 2, 2, + 1, 0, 0, 1, + 3, 3, 2, 0, + -3, 0, 0, -2, + 4, 3, 3, 5, + 6, 5, 3, 1, + 2, 2, 0, -4, + 7, 7, 5, 6, + 4, 3, 2, 2, + 1, 1, 0, 0, 1, 1, 0, -2, - -4, 5, 4, 3, - 4, 1, 0, 0, - 0, -1, 0, 0, - 3, 3, 2, 1, - 0, -1, -1, 0, - -1, -3, 0, 3, - 3, 3, 3, 3, - 0, 0, 1, 0, - 0, -3, -3, -5, - -7, 5, 3, 1, + -4, -7, 1, -2, + -4, 3, 1, -2, + -3, -2, 0, 1, + 1, 0, -1, 2, + -1, -3, -6, -9, + 2, 0, -1, -1, + -2, -2, -3, -1, + 0, 0, 0, -1, + -2, -2, -2, -4, + -6, -9, -8, 2, + 2, 2, 2, 2, + 7, 8, 4, 1, + 2, 1, 0, -1, + -1, -3, -2, -2, + -4, -3, -2, -1, + 1, 1, 3, 3, + 0, 2, 0, 0, + 1, -2, -4, -6, + 8, 7, 4, 2, + -1, 0, -1, -4, + -4, -5, 8, 6, + 4, 2, 1, 0, 0, 0, 0, 0, - 1, 1, 1, 2, - 1, 0, 1, 2, - 1, 0, 3, 3, - 1, -2, -6, -7, - -1, -1, 1, 1, - 0, -1, -1, -1, - 7, 5, 3, 2, - 3, 2, 3, 2, - -2, -2, -2, 0, - -1, 0, -2, 5, - 2, 2, 2, 0, - 0, 0, -1, -1, - 0, 0, -1, -2, - -3, -5, 4, 1, - 1, 1, -2, -1, - 0, 2, 1, 0, - 2, 2, 0, -3, - 3, 2, 1, 1, - -1, -1, -1, -2, - -1, 0, -2, -2, - -1, -1, 1, 3, - 2, 2, 0, -1, - -2, -2, -4, -2, - 2, 2, 2, 1, - -1, -1, -1, -2, - -2, -1, -2, -2, - -3, -4, 4, 3, - 2, 2, -1, 0, - 1, 1, 1, 0, - -1, -1, -3, -6, - 4, 2, 0, -1, -1, -1, -1, -1, - 0, 0, 3, 3, - 2, 2, 3, 1, - -1, 4, 3, 3, - 1, 0, -1, 1, - 1, 1, 1, 1, - 0, 0, -1, 0, - -1, -2, -1, -1, - -4, -6, 4, 2, - 0, -1, -4, 3, - 2, 0, 1, -1, - 0, 1, 0, -2, - -2, -1, -1, -1, - -1, -1, -1, -2, - -3, 3, 0, 0, - -1, -1, -1, -2, - -1, -1, 0, 1, - 1, 0, 1, 0, - -1, -2, -4, 4, - 2, 0, 0, -1, - 1, 1, 1, 1, - 1, 1, 0, -2, - -2, -3, 2, 0, - 0, 2, 2, 1, - 0, -3, -2, 1, - 0, 0, -1, 0, - 1, 2, 1, 0, - 2, 1, 3, 4, - 3, 1, 1, -1, - -2, -2, 4, 1, - 1, 0, 1, -1, - -2, -1, 0, -1, + -2, -3, -4, -7, + -10, 4, 5, 3, + 4, 4, 3, 1, + 1, 1, 2, 2, + 2, 2, 0, 0, + 0, -1, -1, -3, + -6, -7, 7, 5, + 1, 1, 0, -1, + -1, -2, -2, -1, + -3, -3, -5, -5, + -5, -2, -1, -1, + -1, -1, 6, 6, + 4, 3, 2, 2, + 1, 1, -1, -1, + -1, -1, -1, 0, + 4, 4, 1, 0, + -1, -2, -1, 0, + 0, -1, 1, 2, + 2, 4, 4, 2, + -1, -1, -3, -3, + 5, 2, 0, -1, + -3, 3, 2, 0, + 1, 1, 0, 0, + -3, -3, -5, 1, + -1, -2, 0, 0, + 0, 0, -2, 0, + 3, 3, 3, 2, + 1, 0, 0, -2, + -3, 7, 6, 4, + 3, 2, 0, 0, 0, -1, 0, 0, + 0, -1, 0, -1, + -2, -3, -4, -2, + -3, -5, 5, 5, + 2, 0, -1, -1, + -1, -1, 0, -1, + -2, -2, -1, -2, + 6, 5, 2, 1, + -1, -3, -2, -2, + -2, -1, -3, -4, + -4, -1, 0, 0, 1, 1, 1, 0, + 1, 1, 0, -1, + -1, -1, -2, 0, + 0, 0, -1, -1, + 0, -1, -3, -3, + -4, -5, 0, 0, 1, 1, 0, 0, - 0, 0, 1, -2, - -4, 5, 4, 2, + 0, -1, -2, 4, + 3, 3, 4, 2, + 2, 2, 1, -1, 1, 2, 0, 0, - 1, 0, 0, -3, - -1, -2, -5, 3, - 3, 0, -1, -2, - -1, -1, 0, -1, - -1, 0, 0, -1, - 2, 2, 0, -1, - -3, -2, -1, -2, - 0, 0, 1, 2, - 0, -1, -3, 1, - -1, -2, 2, 1, + 0, 0, -1, -3, + -5, -5, 2, -1, + -1, 1, 0, -1, + 2, 2, 1, 1, + 1, 0, 1, 1, + 1, 1, 0, 0, + -1, -5, -7, 1, + 0, 0, 1, 3, + 3, 3, 3, 1, + 2, 1, 0, -3, + -4, 3, 3, 1, + -1, -2, 3, 0, + 0, -2, 0, -2, + -2, 0, -1, 0, + 2, 2, 4, 3, + 0, 0, 0, 1, + 1, 2, 1, 0, + 0, -2, -4, 6, + 5, 1, -1, -3, + -1, -1, -3, 4, + 2, 1, 0, -1, + 0, -1, 1, 2, + 1, 0, -1, 0, + 0, 0, 1, 0, -1, -2, -1, -1, + -4, 4, 2, 1, + 0, -1, -2, -1, 0, 0, 1, 0, - -1, 1, -1, 2, - 1, 0, -3, 3, - 1, 2, 2, 0, - 0, 0, -2, 1, - 0, -1, 0, 0, - -2, 4, 2, 1, - 3, 1, 1, 0, - 0, 0, -1, -2, - 2, 1, 0, -2, - -1, 1, 0, 0, - -1, -1, 2, 2, - 1, 1, 1, 1, - 1, 1, 1, 1, - 2, 0, -2, -2, - 1, -1, -4, 2, - -1, -1, -1, -1, - -1, -1, 4, 1, - -1, -3, 1, 2, - 0, 0, 1, 1, - 1, 1, 0, 0, + 0, -2, -4, 5, + 2, 0, -2, -1, + -1, -1, -1, 0, + -1, -1, -2, -4, + 1, -1, 1, 0, + -1, -2, -1, 0, + 0, 2, 2, 2, + 0, 0, 1, 0, + -1, -1, -2, -5, + 4, 1, 0, -1, + 0, 2, 2, 2, + 2, 2, 1, 0, + 0, 0, 3, 0, 0, 0, -1, -2, - -1, -2, 0, -4, - 2, 4, 0, -2, - 1, 0, 0, -1, - -1, -2, -2, 1, - -2, 1, 1, -1, - -2, -1, -1, 0, - 1, 1, 0, 1, - 0, 2, 1, 0, - 0, -2, 1, 0, - -2, 0, 1, -2, - 0, -1, 0, 1, - 0, 0, 1, -1, - -1, 0, -3, 2, + 3, 3, 0, -2, + 1, 2, 1, 0, + -1, 1, 1, 0, -1, -2, 1, 1, - 0, -1, 1, 0, - 1, 1, 0, 0, - 1, -1, 2, 1, - 1, -1, -2, 3, - 0, -1, 1, 0, - 0, -1, 3, 1, - 1, 1, 0, 1, - 2, 2, -1, -3, - 0, -1, -3, 0, - 0, -1, -1, -1, - 2, -1, 0, 1, - 0, 2, 1, 1, - 0, 0, 0, -1, - 1, 0, 0, 1, - 0, 0, -1, -3, - 3, 0, 2, 1, - -3, 4, 1, 0, - 0, 0, 0, 0, + -2, -5, 2, 2, + -3, -3, 1, 0, + -1, 3, 2, 1, + 1, 0, 0, 0, + -1, -1, -2, -2, + 0, 0, 1, 0, + 0, 0, -1, -1, + 0, 1, 0, -2, + 3, 2, -2, -3, + 0, 1, 0, -2, + -1, 1, 0, 1, + 0, -1, -3, -3, + -1, -2, -1, 1, 0, 0, 0, 0, + 3, 1, 1, 0, + -2, -2, 1, 1, + -1, -1, -1, -3, + 1, 1, 0, 0, + 0, -2, -2, -2, + 0, 0, -2, 4, + 1, -1, 1, 0, + 0, 0, 2, 0, + 0, 2, 1, 0, + -1, -2, 2, 0, + 2, 1, 0, 4, + 0, 0, -1, 1, + -1, -3, 3, 0, + 1, 2, 0, -1, + -1, 0, 1, 0, + -1, -1, 0, 0, + 0, 0, -2, 1, + 0, -1, 1, -1, + -4, 4, 3, 1, + -1, -1, -2, 1, + 0, 1, 0, 2, + 1, 2, 2, 1, + 0, -3, 1, 1, + 0, 0, 0, -2, + 3, 1, -1, 0, + 2, 0, -1, 2, 1, 0, 0, 0, + 0, 0, 2, 2, + 1, 1, 0, -2, + 2, 1, 0, 0, + -1, -1, 0, -2, + 0, 0, 0, 0, + -3, 3, 1, 0, + 0, -1, 1, 1, + 1, 0, 0, -1, + 0, 0, -1, 0, 0, 0, 0, -1, + -3, 3, 1, 1, + -2, 1, 1, 1, + 0, 0, 0, 0, 0, -1, -1, 0, - 0, -2, -1, 1, - 0, -1, -2, -1, - 0, 2, 0, 0, - 1, -1, 0, 2, - 1, 0, -1, 0, - -2, 0, 0, 0, - -1, -1, 0, -1, + -2, -1, -1, -3, + 3, 0, 2, 1, + -1, -1, -3, 0, + 0, -1, 0, 1, + 0, 0, 0, 0, + -1, 1, -1, -3, + 1, 1, 0, 0, + -1, -1, -1, 1, + 2, 0, 1, -2, + -1, 0, -2, 3, + 0, 0, 2, 0, + 0, -3, 3, 1, + -1, -1, 0, 2, + 0, 0, -1, 0, 0, -1, 0, 0, - -1, 1, -1, -2, - 0, 2, -2, 0, - 1, 0, 0, -1, + -1, 0, -1, -1, + -1, -1, -1, 1, + -1, -2, -2, 2, -2, 2, 0, 0, - 1, 2, 1, 1, 0, 0, -1, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 1, 1, 0, 0, + 0, -1, 1, 0, + 1, -1, 0, 0, + 2, 0, -2, 0, + 1, 0, 0, -1, + -1, 2, 0, 1, + 1, 1, 0, -1, + -2, 2, -1, -2, + 1, 0, 0, 2, + 0, 1, -1, 1, + 0, -1, -2, 1, + 1, 1, 2, 0, + 0, 0, -1, 0, + 3, 0, 1, -1, + -1, 2, 0, -2, + 0, -1, -1, 1, + 0, -1, 0, 0, 0, 0, 2, 0, - 0, -2, 0, -2, - 1, 1, 0, 1, - 0, 1, 1, 1, - 0, 0, -2, 1, - -1, 1, 1, -1, - 1, -1, 0, -2, - 0, -1, 2, 2, - -1, -1, 1, 1, - 1, 1, 0, 1, - 0, 1, 0, 0, - 0, -1, 2, -3, - 1, 0, 0, 1, - 2, 0, 0, -1, - -2, -2, 2, 0, - 0, 0, 0, 1, - 0, -1, 0, 2, + 0, 0, 2, 1, + 1, 1, 3, 1, + -1, -2, 2, 0, + 0, -1, -1, 1, + 1, 0, 1, -1, + 0, -2, 1, -1, + -1, -1, 1, 0, + 0, -1, -1, 0, + 0, 0, 0, 2, + 0, 2, -1, 1, + 0, -1, -2, 0, 0, 1, -1, -1, - 1, 0, -1, 0, - -1, 1, -1, 0, - -1, 0, -3, 0, - 0, 0, 0, 1, - -1, 0, 0, 0, - 1, -1, 0, 0, - 1, 0, 0, 0, - 0, -1, 2, 2, - 1, 1, 1, 0, - -1, 0, 1, 1, + 1, 0, 0, -1, + 0, 0, 1, 0, + 0, 0, 0, -2, 0, -1, 0, 0, - -2, 0, -1, 0, - -1, 0, 1, 0, - 0, 1, 2, 1, - 1, 0, 1, 0, - -1, 1, 1, 0, - -2, 0, -1, -1, + 0, 1, 1, 1, 1, -1, -1, -1, - 0, 0, 0, -2, - 2, 0, -1, 0, - -1, 1, 0, 1, - 0, 1, 0, -1, - 1, 1, 0, 0, - -1, -1, -1, -1, 1, 0, 0, 0, - 1, -1, 0, 0, - -2, 1, 1, 0, - 1, 0, 1, -1, + -1, -1, 0, -2, + -1, -1, -1, -1, + -2, 0, 0, -1, + 1, 2, 1, 0, + 0, 1, 0, 1, + 1, 1, 0, 0, + 0, 0, 2, 0, + 1, 0, 0, 1, + 0, 0, -1, 2, + -2, -1, 2, -1, 0, -1, 0, 0, - 0, 0, 0, 0, - -1, 0, 1, 2, - -1, 0, 1, 1, + 0, -1, 1, 0, + 0, 1, 2, 1, + 0, 1, -2, 0, + 0, 0, 0, 1, + -1, 0, 0, 0, + 0, 0, 2, 0, 0, -1, 0, 0, - 1, 0, 0, -1, + 0, 0, 0, 0, + -2, 1, 0, 1, + 0, 0, -1, 0, 1, 1, -1, 0, - -1, 0, 0, 0, - 0, -1, 0, 1, - -1, 1, -1, 1, - 1, 1, 1, 1, + 0, 0, -1, 0, + 1, 0, -2, 0, + 0, 0, 1, 0, + 1, 0, 0, 2, + -2, 0, 0, 0, 0, 1, 0, 0, - 0, 2, 0, -1, - 0, 0, 1, 1, - -2, 1, 0, 1, - 0, 1, -2, -1, - -1, 0, -1, 0, + 1, -1, -2, -1, + 0, -2, 2, 0, + 0, 0, 0, -1, 0, 0, 0, 0, - -2, -1, 0, -1, - 0, -1, 0, 1, - 1, 1, -1, 0, + 0, 0, 0, -1, 1, -1, 0, 1, - 0, -1, -1, 0, + 1, -3, 0, 0, 0, 0, 0, -1, - 0, 1, 1, 2, - -2, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 1, -1, 2, -2, - 0, 0, -1, -1, - 0, 0, 2, -1, - 0, 1, -1, 0, - 1, -1, -1, -1, - -1, 0, 0, 0, + -2, -1, 0, 1, + 0, 0, -1, 0, + 0, 0, 1, 1, 0, -1, 0, 0, - 1, 2, 1, 1, - -1, -1, 0, 0, - -1, 1, 0, 1, + 0, 1, 1, -2, + -1, 0, -1, 0, + 0, 1, -1, 0, 1, 0, 0, 0, - 0, 0, -2, 1, - 0, 0, 1, 1, - 1, 1, 1, 1, - 1, 0, -1, 0, - 2, 0, 0, 0, - 2, 0, -1, 0, - 0, -1, 0, -1, + 0, 1, -2, 1, + -1, 0, 0, 0, 1, 0, -1, 0, - -1, -1, 0, 0, - 0, 1, -2, 0, - 0, 0, 1, -1, - 0, -1, 0, 1, - 1, -2, 0, 0, - -1, -1, -1, -1, - 0, 0, 0, 0, + 1, 0, 0, 0, + 2, -1, 0, 1, 0, 0, -1, -1, - 0, 1, 2, -2, + 0, 0, 0, 1, + 1, 0, 0, 0, + 0, -2, 0, -1, + 1, 2, 1, 0, 0, 0, 0, 0, - 1, 1, 0, 0, - 0, -1, 0, 0, - 0, 0, 0, -2, - -1, 0, 0, -1, - 1, -2, -1, 0, - 0, 1, 0, -1, + -1, 0, -1, 0, + 0, 1, 0, 2, + 0, 1, 0, 0, + 2, 1, 0, 0, + 0, 0, 3, 0, + 0, 1, 0, 0, + 0, 0, 1, 0, + -1, 0, 0, 1, + 1, 3, 0, 0, 0, 0, 1, 0, + -1, 0, 0, -1, + 0, 0, 0, 0, + 0, -1, 0, 0, + 0, 0, 0, 0, + -2, 0, -1, 1, + 0, -1, 2, -2, + 0, 0, 0, 2, -1, 0, 1, 0, - 1, -1, 1, 0 + 0, 0, 0, -1, + 0, 0, -1, 0, + -2, -1, 0, -1, + 0, 0, 0, 0, + -1, 0, 0, -1, + 0, 0, 0, 1, + 0, -1, 0, 0, + 0, 1, 1, 1, + 1, -1, 1, -1, + 0, 0, 0, 0 }; const SKP_Silk_NLSF_CBS SKP_Silk_NLSF_CB0_16_Stage_info[ NLSF_MSVQ_CB0_16_STAGES ] = @@ -962,7 +938,6 @@ const SKP_Silk_NLSF_CB_struct SKP_Silk_NLSF_CB0_16 = SKP_Silk_NLSF_CB0_16_Stage_info, SKP_Silk_NLSF_MSVQ_CB0_16_ndelta_min_Q15, SKP_Silk_NLSF_MSVQ_CB0_16_CDF, - SKP_Silk_NLSF_MSVQ_CB0_16_CDF_start_ptr, - SKP_Silk_NLSF_MSVQ_CB0_16_CDF_middle_idx + SKP_Silk_NLSF_MSVQ_CB0_16_CDF_start_ptr }; diff --git a/src_common/SKP_Silk_tables_NLSF_CB0_16.h b/src_common/SKP_Silk_tables_NLSF_CB0_16.h deleted file mode 100644 index ff2497b3c80e88dea82e2828c3c9f170b2590a24..0000000000000000000000000000000000000000 --- a/src_common/SKP_Silk_tables_NLSF_CB0_16.h +++ /dev/null @@ -1,51 +0,0 @@ -/*********************************************************************** -Copyright (c) 2006-2010, Skype Limited. All rights reserved. -Redistribution and use in source and binary forms, with or without -modification, (subject to the limitations in the disclaimer below) -are permitted provided that the following conditions are met: -- Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. -- Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -- Neither the name of Skype Limited, nor the names of specific -contributors, may be used to endorse or promote products derived from -this software without specific prior written permission. -NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED -BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, -BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -***********************************************************************/ - -#ifndef SKP_SILK_TABLES_NLSF_CB0_16_H -#define SKP_SILK_TABLES_NLSF_CB0_16_H - -#include "SKP_Silk_define.h" - -#ifdef __cplusplus -extern "C" -{ -#endif - -#define NLSF_MSVQ_CB0_16_STAGES 10 -#define NLSF_MSVQ_CB0_16_VECTORS 152 - -/* NLSF codebook entropy coding tables */ -extern const SKP_uint16 SKP_Silk_NLSF_MSVQ_CB0_16_CDF[ NLSF_MSVQ_CB0_16_VECTORS + NLSF_MSVQ_CB0_16_STAGES ]; -extern const SKP_uint16 * const SKP_Silk_NLSF_MSVQ_CB0_16_CDF_start_ptr[ NLSF_MSVQ_CB0_16_STAGES ]; -extern const SKP_int SKP_Silk_NLSF_MSVQ_CB0_16_CDF_middle_idx[ NLSF_MSVQ_CB0_16_STAGES ]; - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/src_common/SKP_Silk_tables_NLSF_CB1_10.c b/src_common/SKP_Silk_tables_NLSF_CB1_10.c index 0e7364e1a0c34a196ac8b082334bb38295b94fa1..a239e92f848693bd6c29492579e6d1d011d321a4 100644 --- a/src_common/SKP_Silk_tables_NLSF_CB1_10.c +++ b/src_common/SKP_Silk_tables_NLSF_CB1_10.c @@ -28,587 +28,569 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /**********************************************/ /* This file has been automatically generated */ /* */ -/* ROM usage: 0.22 + 0.90 kB */ +/* ROM usage: 0.11 + 0.90 kB */ /**********************************************/ #include "SKP_Silk_structs.h" #include "SKP_Silk_tables.h" -#include "SKP_Silk_tables_NLSF_CB1_10.h" +#include "SKP_Silk_tables_NLSF_CB.h" -const SKP_uint16 SKP_Silk_NLSF_MSVQ_CB1_10_CDF[ NLSF_MSVQ_CB1_10_VECTORS + NLSF_MSVQ_CB1_10_STAGES ] = +const SKP_uint8 SKP_Silk_NLSF_MSVQ_CB1_10_CDF[ NLSF_MSVQ_CB1_10_VECTORS ] = { + 176, + 144, + 119, + 102, + 92, + 85, + 79, + 73, + 68, + 63, + 58, + 53, + 49, + 45, + 41, + 37, + 34, + 30, + 27, + 24, + 22, + 19, + 17, + 15, + 13, + 12, + 10, + 8, + 6, + 4, + 2, 0, - 21247, - 28440, - 34489, - 38585, - 41021, - 43353, - 45401, - 47050, - 48562, - 49890, - 51162, - 52379, - 53597, - 54536, - 55435, - 56260, - 57049, - 57805, - 58562, - 59286, - 59979, - 60588, - 61122, - 61613, - 62103, - 62593, - 63084, - 63574, - 64064, - 64554, - 65045, - 65535, + 149, + 93, + 71, + 55, + 40, + 26, + 12, 0, - 34067, - 42961, - 48025, - 52103, - 55532, - 58961, - 62391, - 65535, + 121, + 100, + 80, + 61, + 45, + 29, + 14, 0, - 30146, - 40804, - 46615, - 50906, - 55016, - 58624, - 62080, - 65535, + 133, + 110, + 88, + 67, + 48, + 30, + 13, 0, - 31530, - 38758, - 44096, - 48990, - 53478, - 57776, - 62074, - 65535, + 199, + 152, + 111, + 76, + 53, + 32, + 15, 0, - 14400, - 25503, - 35253, - 44194, - 52756, - 58308, - 62234, - 65535, + 161, + 109, + 88, + 68, + 49, + 30, + 14, 0, - 26248, - 35939, - 44449, - 49733, - 53988, - 58062, - 61799, - 65535, - 0, - 20097, - 31540, - 38344, - 44584, - 50823, - 56798, - 62277, - 65535 + 211, + 171, + 134, + 98, + 63, + 37, + 11, + 0 }; -const SKP_uint16 * const SKP_Silk_NLSF_MSVQ_CB1_10_CDF_start_ptr[ NLSF_MSVQ_CB1_10_STAGES ] = +const SKP_uint8 * const SKP_Silk_NLSF_MSVQ_CB1_10_CDF_start_ptr[ NLSF_MSVQ_CB1_10_STAGES ] = { &SKP_Silk_NLSF_MSVQ_CB1_10_CDF[ 0 ], - &SKP_Silk_NLSF_MSVQ_CB1_10_CDF[ 33 ], - &SKP_Silk_NLSF_MSVQ_CB1_10_CDF[ 42 ], - &SKP_Silk_NLSF_MSVQ_CB1_10_CDF[ 51 ], - &SKP_Silk_NLSF_MSVQ_CB1_10_CDF[ 60 ], - &SKP_Silk_NLSF_MSVQ_CB1_10_CDF[ 69 ], - &SKP_Silk_NLSF_MSVQ_CB1_10_CDF[ 78 ] -}; - -const SKP_int SKP_Silk_NLSF_MSVQ_CB1_10_CDF_middle_idx[ NLSF_MSVQ_CB1_10_STAGES ] = -{ - 4, - 2, - 2, - 2, - 4, - 3, - 3 + &SKP_Silk_NLSF_MSVQ_CB1_10_CDF[ 32 ], + &SKP_Silk_NLSF_MSVQ_CB1_10_CDF[ 40 ], + &SKP_Silk_NLSF_MSVQ_CB1_10_CDF[ 48 ], + &SKP_Silk_NLSF_MSVQ_CB1_10_CDF[ 56 ], + &SKP_Silk_NLSF_MSVQ_CB1_10_CDF[ 64 ], + &SKP_Silk_NLSF_MSVQ_CB1_10_CDF[ 72 ] }; const SKP_uint8 SKP_Silk_NLSF_MSVQ_CB1_10_rates_Q4[ NLSF_MSVQ_CB1_10_VECTORS ] = { - 26, 51, - 55, 64, - 76, 77, - 80, 85, - 87, 90, - 91, 92, - 92, 98, - 99, 101, - 102, 103, - 103, 104, - 105, 108, - 111, 113, + 27, 48, + 54, 63, + 74, 84, + 85, 89, + 91, 91, + 91, 91, + 94, 95, + 96, 97, + 100, 101, + 102, 104, + 106, 106, 113, 113, 113, 113, 113, 113, 113, 113, - 15, 46, - 59, 64, - 68, 68, - 68, 70, - 18, 42, - 56, 63, - 64, 67, - 68, 68, - 17, 51, - 58, 60, - 62, 63, - 63, 68, - 35, 41, - 44, 46, - 47, 57, - 65, 69, - 21, 44, - 47, 58, - 63, 64, + 113, 113, + 20, 35, + 57, 64, 66, 66, - 27, 40, - 52, 54, - 54, 55, - 57, 69 + 67, 71, + 15, 58, + 58, 61, + 64, 64, + 65, 68, + 17, 55, + 57, 58, + 60, 61, + 63, 68, + 35, 39, + 43, 46, + 56, 58, + 63, 65, + 23, 37, + 57, 59, + 60, 61, + 63, 68, + 40, 43, + 45, 45, + 46, 53, + 53, 73 }; const SKP_int SKP_Silk_NLSF_MSVQ_CB1_10_ndelta_min_Q15[ 10 + 1 ] = { - 293, - 32, - 225, - 280, + 488, + 31, + 249, + 268, 153, - 23, - 13, - 14, + 20, + 12, + 15, 9, 3, - 688 + 685 }; const SKP_int8 SKP_Silk_NLSF_MSVQ_CB1_10_Q8[ 10 * NLSF_MSVQ_CB1_10_VECTORS ] = { - -113, -92, - -68, -43, + -112, -92, + -67, -43, -20, 3, 28, 52, 78, 100, - -114, -101, - -75, -53, + -113, -100, + -76, -53, -30, -7, 20, 45, - 72, 96, - -98, -81, - -58, -33, - -10, 10, - 35, 58, - 82, 103, - -110, -99, + 72, 97, + -97, -81, + -58, -34, + -10, 11, + 37, 59, + 83, 104, + -110, -100, -80, -61, -38, -15, 12, 38, - 66, 89, - -115, -108, - -77, -49, - -21, 4, - 29, 53, - 79, 102, - -101, -81, - -55, -29, - -7, 23, - 47, 71, - 93, 110, - -100, -83, - -65, -44, - -25, -7, - 19, 45, - 72, 96, - -110, -100, - -85, -45, - -25, -8, - 22, 39, - 78, 97, - -115, -107, - -89, -69, - -36, -9, - 20, 45, - 72, 99, - -113, -99, - -69, -38, - -12, 16, - 44, 68, - 92, 109, + 66, 90, + -114, -107, + -81, -50, + -23, 2, + 28, 51, + 77, 101, + -92, -80, + -59, -42, + -18, 2, + 26, 50, + 77, 97, + -102, -83, + -56, -29, + -8, 23, + 48, 73, + 98, 111, + -98, -78, + -48, -19, + 7, 32, + 54, 73, + 92, 107, + -105, -90, + -69, -42, + -4, 20, + 38, 57, + 77, 97, + -113, -101, + -71, -40, + -14, 11, + 42, 65, + 89, 108, + -109, -99, + -84, -61, + -17, 0, + 19, 46, + 65, 97, + -109, -100, + -85, -49, + -25, -10, + 21, 35, + 79, 97, + -109, -101, + -81, -33, + -10, 6, + 28, 46, + 81, 99, + -115, -84, + -58, -32, + -11, 11, + 36, 61, + 84, 104, + -114, -106, + -88, -68, + -39, -3, + 25, 44, + 66, 97, + -79, -68, + -46, -29, + -7, 13, + 36, 58, + 82, 101, + -106, -87, + -69, -51, + -27, -11, + 15, 52, + 74, 92, + -99, -87, + -70, -55, + -40, -13, + 31, 52, + 78, 101, -109, -98, - -84, -60, - -19, -3, - 18, 43, - 61, 98, - -99, -77, - -46, -17, - 10, 35, - 55, 74, - 92, 106, - -105, -91, - -70, -42, - -1, 17, - 35, 58, - 75, 99, - -90, -77, - -53, -38, - -21, 0, - 28, 49, - 76, 97, - -110, -101, - -80, -29, - -8, 6, - 30, 48, - 82, 99, - -110, -92, - -55, -19, - 4, 25, - 43, 62, - 84, 101, - -101, -88, - -73, -58, - -45, -26, - 21, 46, - 71, 98, - -83, -67, - -40, -22, + -83, -66, + -52, -28, + 23, 46, + 74, 99, + -111, -103, + -87, -57, -2, 19, - 41, 63, - 85, 103, - -112, -103, - -89, -62, - -8, 15, - 33, 56, - 74, 97, - -117, -73, - -56, -33, - -13, 11, - 34, 57, - 80, 101, - -110, -100, - -84, -72, - -59, -15, - 21, 45, - 76, 96, - -103, -90, - -72, -59, - -40, 1, - 32, 56, - 82, 98, - -107, -97, - -79, -54, - -37, -21, - -4, 22, - 71, 94, - -97, -67, - -27, -2, - 29, 44, - 58, 71, - 82, 98, - -89, -74, - -55, -45, - -30, -18, - -2, 23, - 65, 97, - -106, -82, - -56, -31, - -5, 34, - 59, 65, - 68, 78, + 33, 53, + 72, 97, + -113, -99, + -62, -21, + 5, 27, + 47, 65, + 86, 103, + -99, -79, + -37, -16, + 3, 19, + 37, 62, + 83, 101, + -92, -79, + -57, -41, + -25, -10, + 8, 30, + 68, 96, + -104, -92, + -77, -56, + -39, -23, + -7, 21, + 72, 95, + -78, -65, + -34, -16, + 10, 30, + 51, 71, + 90, 106, + -104, -76, + -38, -5, + 27, 52, + 66, 77, + 89, 101, + -106, -79, + -50, -24, + 15, 40, + 43, 35, + 47, 102, + -103, -71, + -40, -6, + 22, 22, + 26, 37, + 66, 99, + -106, -78, + -53, -30, + -3, 40, + 63, 69, + 57, 75, + -106, -79, + -51, -33, + -1, 17, + 51, 89, + 108, 121, -107, -82, - -57, -31, - 20, 31, - 34, 35, - 68, 103, - -109, -83, - -56, -32, - -6, 18, - 49, 82, - 109, 116, - -103, -82, - -50, -17, - -6, 2, - 19, 56, - 83, 105, - -106, -82, - -54, -30, - -1, 32, - 41, 49, - 52, 98, - -98, -66, - -36, 0, - 5, 12, - 14, 26, - 64, 97, - -105, -80, - -53, -29, - 2, 30, - 76, 90, - 94, 96, + -56, -37, + -7, 17, + 68, 86, + 86, 88, + -102, -76, + -47, -13, + -3, 3, + 10, 43, + 77, 105, -2, -2, - -2, 0, -1, -1, + 0, 0, -1, 0, 0, 0, + 2, 4, + 4, 3, + 4, 5, + 4, 3, 2, 2, - 3, 4, - 3, 5, - 7, 6, - 4, 2, - 8, 9, - 5, -2, + -1, -3, + -5, 0, + -5, -9, + -4, -1, + -4, -6, 1, 1, + 0, 2, + -4, -6, + -2, -4, + 9, 5, + -3, -6, + -9, -12, + 2, 0, + 0, 2, + 0, -1, + 0, -1, + 2, 9, + 6, 2, + -4, -9, + -7, -3, + 9, 9, + 7, 3, + -3, -6, + -3, -5, + -8, -2, 1, 0, - -2, -2, - 1, 1, - 2, -2, - -7, -11, - -11, 0, + -3, -8, + -12, 4, + 4, 7, + 7, 0, -1, 0, - 1, 0, - -3, -2, - -6, -3, - 2, -4, - 10, 5, + 0, 0, + 0, 1, + 0, 1, + 1, 1, + 3, 3, + 2, -5, + -8, -3, + -3, -1, -1, -3, + 3, 3, + 4, 4, + 2, -4, + -9, -1, + -2, -2, + 2, 2, + 2, 4, + 5, 5, + 3, 0, -5, -7, - 11, 7, - 4, -1, - 1, 1, + -1, -2, + -6, -5, + -1, -6, + 1, -1, + -6, 5, + -5, -10, + 4, 2, + 2, 0, 0, 1, - 7, 10, + 1, 0, + 2, 1, + -1, 3, 3, -1, - -6, -2, - -3, -4, + 12, 3, + 3, 3, + 0, -2, + -4, -4, + -4, 5, + -1, -9, + 1, 0, + -1, 0, + -1, 0, + 0, 0, + 1, 0, + -1, -2, + 0, -1, + -2, -1, + -1, 0, + 2, 8, + 4, 4, + 6, 4, + 0, -2, + -2, 0, 0, -1, + -2, 1, + 2, 0, + -3, -2, + 7, 1, + 1, -1, + -3, 2, + -1, -3, + -4, 6, + 0, 1, + -3, -1, + 5, 0, + 0, -2, + 1, -2, -2, -2, - 0, 3, - 0, -5, - -11, -10, + -6, -2, + 2, 5, + 0, -2, + 10, 5, -1, 1, + 0, 0, + -1, -1, + -1, 7, + 5, -2, + 0, 0, + 0, -4, + -1, -3, + -2, -1, + -2, -3, + 1, -1, + -1, -2, + 3, 0, + 0, 0, 1, 1, + -2, -5, 1, 1, - 1, 1, - 1, 0, + 0, 2, 2, 1, - -2, -4, - -5, -3, - -3, -3, - -3, -3, - 3, 2, - 3, 5, - 4, 0, - -3, -9, - -5, -1, - 3, 2, - 2, -1, - -1, -1, - -2, 6, - 7, 6, - -2, -5, - -9, -4, - -1, -3, - -3, 1, - 2, 2, - -6, -9, - 6, 3, - 3, 1, + 1, -3, + 1, 2, + 0, 3, + 0, -2, 2, 1, - -1, -1, - 3, 1, - -2, 2, - 4, -3, - 9, 3, - -3, 4, + 2, 3, 1, 0, - -1, -4, - -6, 11, - 4, 1, - 2, -1, - -1, -1, + -1, -3, + 0, -1, -1, -2, 0, 0, + 1, 3, + 5, 1, + -1, 1, + -4, 5, + 0, 2, + 1, 1, 0, 0, -1, 0, - 6, 3, + 0, -2, + -1, 1, + 2, 0, + -5, 4, + -1, 0, 1, 0, - 1, 1, - 1, -1, - 1, 2, - -5, 6, - 3, 2, - 3, 4, - 2, 1, - 0, 1, + -2, 1, + -6, 4, + 0, 0, + -2, 0, 0, -1, - -2, 2, 1, -1, - -6, -8, - 2, -1, - 0, -1, - 8, 1, - -5, 0, -1, -1, - 0, 0, - 0, 0, + 0, -3, -2, 0, - -2, -8, - 3, 0, - 2, 2, 1, 1, - 0, 0, + -1, 4, + 1, 0, + 0, 2, + -1, 2, + -3, 0, + 3, 0, 1, 0, - -2, 10, - 1, -4, - -1, -4, - -6, 6, - 3, 4, - 4, 1, - -1, -2, - 0, 1, - 2, 1, 1, 4, - 1, 1, - -1, -2, - 0, 4, 2, 0, - -1, -2, - -1, -2, + 2, 0, 1, 0, - -1, -2, - -2, 1, - -1, -4, - 0, -1, - -1, -4, - 0, -1, - -2, -4, - -1, 0, - 3, 3, - 1, 1, + 0, 1, + 1, -1, + 6, 2, + 0, 3, -1, -3, - 1, 1, - 1, 1, - -1, -2, - 4, 3, - 2, 0, - -1, -2, - 5, -1, - -3, 0, - -1, 0, - 0, -1, - 0, 0, 0, -2, - 0, -1, - -7, 6, - 2, 0, - -2, 4, - -4, 1, - -1, 1, + -2, 1, 1, 0, - 1, -1, - 1, 2, - 2, 0, - 1, 1, - 0, 1, - -1, 1, - 1, -4, - 2, -1, - 0, -1, + 0, 0, -1, -1, + 1, 6, + -1, 0, 0, -1, - -3, -1, - -2, 1, - 1, -3, - -1, 1, - 1, 1, - -2, 1, + 1, 0, 0, 1, - -5, 1, - -2, 1, + 0, -1, 1, 1, + 0, -7, + -1, -3, + -4, -1, -2, 0, 0, 1, - -1, 0, - 5, -3, - 0, -3, - 2, 0, - -3, -2, - -2, 0, - 0, -1, - 2, 2, - 1, 0, - -4, -1, + 0, 1, 2, 1, - -1, -3, - -5, 1, - 1, 2, - -2, 0, - 1, 1, - 2, 2, - 1, 1, - 0, -1, - -2, -1, + -3, 0, 0, 0, + 0, -1, + 1, -1, + -1, 1, + 1, -1, 0, 2, 0, 0, - 1, -1, 0, 3, - -2, -1, + 1, 0, + 1, 1, + -3, 0, + -2, 1, 1, 0, 0, 0, 1, 0, + 3, -2, 0, 0, - 4, -1, - 1, -3, - 0, 1, - 1, 4, + 1, 0, + -1, 0, 0, -1, + 0, 0, -1, 0, - -1, -1, + -4, -1, -2, -3, - -1, 0, - -1, 0, 0, 1, - -3, 0, - -1, 2, - -4, 0, - 1, 1, - 1, 1, 0, 0, - -2, -1, + 0, -1, + 1, 0, + 0, 1, 0, 0, - 3, -2, - -1, 1, - 1, 1, - 4, -1, -1, 0, - 1, 0, + 5, 0, + 1, -1, + 2, -3, + 1, -1, + 0, 0, 0, 0, - 0, -1 + 0, 0 }; const SKP_Silk_NLSF_CBS SKP_Silk_NLSF_CB1_10_Stage_info[ NLSF_MSVQ_CB1_10_STAGES ] = @@ -628,7 +610,6 @@ const SKP_Silk_NLSF_CB_struct SKP_Silk_NLSF_CB1_10 = SKP_Silk_NLSF_CB1_10_Stage_info, SKP_Silk_NLSF_MSVQ_CB1_10_ndelta_min_Q15, SKP_Silk_NLSF_MSVQ_CB1_10_CDF, - SKP_Silk_NLSF_MSVQ_CB1_10_CDF_start_ptr, - SKP_Silk_NLSF_MSVQ_CB1_10_CDF_middle_idx + SKP_Silk_NLSF_MSVQ_CB1_10_CDF_start_ptr }; diff --git a/src_common/SKP_Silk_tables_NLSF_CB1_16.c b/src_common/SKP_Silk_tables_NLSF_CB1_16.c index 0ef7a8d3448337347dd9d226b3959e60439ec2ae..aff9084680b5f948000a252cd509cad3f8420fa4 100644 --- a/src_common/SKP_Silk_tables_NLSF_CB1_16.c +++ b/src_common/SKP_Silk_tables_NLSF_CB1_16.c @@ -28,654 +28,630 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /**********************************************/ /* This file has been automatically generated */ /* */ -/* ROM usage: 0.29 + 1.80 kB */ +/* ROM usage: 0.14 + 1.80 kB */ /**********************************************/ #include "SKP_Silk_structs.h" #include "SKP_Silk_tables.h" -#include "SKP_Silk_tables_NLSF_CB1_16.h" +#include "SKP_Silk_tables_NLSF_CB.h" -const SKP_uint16 SKP_Silk_NLSF_MSVQ_CB1_16_CDF[ NLSF_MSVQ_CB1_16_VECTORS + NLSF_MSVQ_CB1_16_STAGES ] = +const SKP_uint8 SKP_Silk_NLSF_MSVQ_CB1_16_CDF[ NLSF_MSVQ_CB1_16_VECTORS ] = { + 192, + 162, + 146, + 130, + 116, + 103, + 92, + 83, + 75, + 69, + 63, + 57, + 51, + 46, + 40, + 36, + 32, + 28, + 25, + 23, + 21, + 19, + 17, + 15, + 13, + 12, + 10, + 8, + 6, + 4, + 2, 0, - 17152, - 24057, - 28733, - 32040, - 34820, - 37262, - 39228, - 41194, - 42997, - 44723, - 46376, - 47959, - 49543, - 50994, - 52446, - 53777, - 54897, - 56016, - 57088, - 58071, - 59013, - 59876, - 60667, - 61305, - 61942, - 62455, - 62969, - 63482, - 63995, - 64508, - 65022, - 65535, + 118, + 91, + 64, + 44, + 32, + 21, + 10, 0, - 27679, - 38351, - 48138, - 52625, - 56739, - 60199, - 62867, - 65535, + 128, + 104, + 81, + 60, + 41, + 26, + 12, 0, - 31319, - 40235, - 45312, - 50174, - 54632, - 59091, - 62383, - 65535, + 134, + 103, + 82, + 60, + 42, + 25, + 12, 0, - 39134, - 44026, - 48322, - 52261, - 55873, - 59185, - 62498, - 65535, + 103, + 83, + 64, + 47, + 32, + 19, + 8, 0, - 42248, - 46688, - 50941, - 55013, - 58437, - 61078, - 63499, - 65535, + 97, + 77, + 59, + 43, + 29, + 17, + 8, 0, - 44150, - 48053, - 51334, - 54477, - 57486, - 60245, - 63005, - 65535, + 96, + 75, + 58, + 41, + 29, + 18, + 9, 0, - 40440, - 45076, - 49515, - 53089, - 56512, - 59651, - 62657, - 65535, + 110, + 82, + 55, + 41, + 28, + 18, + 9, 0, - 31605, - 39507, - 45094, - 50444, - 55567, - 59351, - 62973, - 65535, + 197, + 143, + 101, + 73, + 50, + 33, + 16, 0, - 28639, - 39681, - 47834, - 52682, - 55965, - 59248, - 62391, - 65535, - 0, - 17932, - 34375, - 42961, - 49875, - 55689, - 59458, - 62628, - 65535 + 169, + 128, + 99, + 72, + 47, + 30, + 13, + 0 }; -const SKP_uint16 * const SKP_Silk_NLSF_MSVQ_CB1_16_CDF_start_ptr[ NLSF_MSVQ_CB1_16_STAGES ] = +const SKP_uint8 * const SKP_Silk_NLSF_MSVQ_CB1_16_CDF_start_ptr[ NLSF_MSVQ_CB1_16_STAGES ] = { &SKP_Silk_NLSF_MSVQ_CB1_16_CDF[ 0 ], - &SKP_Silk_NLSF_MSVQ_CB1_16_CDF[ 33 ], - &SKP_Silk_NLSF_MSVQ_CB1_16_CDF[ 42 ], - &SKP_Silk_NLSF_MSVQ_CB1_16_CDF[ 51 ], - &SKP_Silk_NLSF_MSVQ_CB1_16_CDF[ 60 ], - &SKP_Silk_NLSF_MSVQ_CB1_16_CDF[ 69 ], - &SKP_Silk_NLSF_MSVQ_CB1_16_CDF[ 78 ], - &SKP_Silk_NLSF_MSVQ_CB1_16_CDF[ 87 ], - &SKP_Silk_NLSF_MSVQ_CB1_16_CDF[ 96 ], - &SKP_Silk_NLSF_MSVQ_CB1_16_CDF[ 105 ] -}; - -const SKP_int SKP_Silk_NLSF_MSVQ_CB1_16_CDF_middle_idx[ NLSF_MSVQ_CB1_16_STAGES ] = -{ - 5, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 2, - 3 + &SKP_Silk_NLSF_MSVQ_CB1_16_CDF[ 32 ], + &SKP_Silk_NLSF_MSVQ_CB1_16_CDF[ 40 ], + &SKP_Silk_NLSF_MSVQ_CB1_16_CDF[ 48 ], + &SKP_Silk_NLSF_MSVQ_CB1_16_CDF[ 56 ], + &SKP_Silk_NLSF_MSVQ_CB1_16_CDF[ 64 ], + &SKP_Silk_NLSF_MSVQ_CB1_16_CDF[ 72 ], + &SKP_Silk_NLSF_MSVQ_CB1_16_CDF[ 80 ], + &SKP_Silk_NLSF_MSVQ_CB1_16_CDF[ 88 ], + &SKP_Silk_NLSF_MSVQ_CB1_16_CDF[ 96 ] }; const SKP_uint8 SKP_Silk_NLSF_MSVQ_CB1_16_rates_Q4[ NLSF_MSVQ_CB1_16_VECTORS ] = { - 31, 52, - 61, 69, - 73, 76, - 81, 81, - 83, 84, - 85, 86, - 86, 88, - 88, 90, - 94, 94, - 95, 97, - 98, 100, - 102, 107, - 107, 112, - 112, 112, - 112, 112, - 112, 112, - 20, 42, - 44, 62, - 64, 68, - 74, 74, - 17, 46, - 59, 60, - 62, 62, - 69, 70, - 12, 60, + 32, 50, 63, 65, - 67, 69, - 69, 71, - 10, 62, - 63, 64, - 68, 74, - 76, 80, - 9, 65, - 69, 70, + 66, 70, + 73, 77, + 81, 85, + 85, 88, + 88, 89, + 89, 93, + 95, 98, + 103, 113, + 113, 113, + 113, 113, + 113, 113, + 113, 113, + 113, 113, + 113, 113, + 14, 52, + 52, 58, 71, 73, - 73, 75, - 11, 61, - 62, 67, - 68, 70, - 71, 72, + 73, 74, + 16, 55, + 56, 58, + 60, 65, + 67, 71, 17, 49, - 57, 58, - 59, 66, - 67, 75, - 19, 41, - 48, 60, - 69, 69, - 70, 70, - 30, 32, - 47, 52, - 56, 66, - 70, 72 + 57, 57, + 61, 63, + 69, 70, + 12, 60, + 60, 62, + 66, 70, + 72, 80, + 11, 59, + 61, 64, + 67, 72, + 77, 79, + 11, 58, + 63, 63, + 71, 73, + 77, 78, + 13, 51, + 52, 67, + 69, 76, + 77, 77, + 34, 36, + 42, 51, + 55, 63, + 63, 64, + 25, 42, + 50, 52, + 54, 62, + 63, 69 }; const SKP_int SKP_Silk_NLSF_MSVQ_CB1_16_ndelta_min_Q15[ 16 + 1 ] = { 110, - 28, - 122, - 68, - 75, - 71, - 64, - 78, - 83, - 77, - 81, - 76, - 84, - 73, - 69, - 21, - 778 + 27, + 146, + 128, + 34, + 27, + 32, + 23, + 31, + 25, + 32, + 25, + 23, + 24, + 29, + 4, + 653 }; const SKP_int8 SKP_Silk_NLSF_MSVQ_CB1_16_Q8[ 16 * NLSF_MSVQ_CB1_16_VECTORS ] = { - -118, -105, -90, -74, - -58, -44, -29, -13, - 3, 18, 33, 49, - 64, 79, 95, 109, - -118, -110, -95, -81, - -66, -52, -37, -21, - -4, 12, 27, 43, + -118, -106, -90, -74, + -59, -44, -28, -13, + 2, 18, 33, 48, + 64, 79, 95, 110, + -118, -108, -94, -78, + -65, -51, -35, -19, + -4, 12, 28, 44, 60, 77, 93, 107, - -120, -114, -94, -78, - -60, -45, -29, -13, - 3, 19, 34, 49, - 65, 80, 95, 110, - -122, -117, -103, -88, - -69, -52, -37, -19, - -2, 15, 31, 47, - 63, 79, 95, 110, + -118, -111, -100, -88, + -74, -57, -41, -27, + -9, 9, 26, 42, + 60, 77, 94, 109, + -113, -100, -86, -69, + -54, -39, -24, -8, + 6, 21, 36, 51, + 66, 82, 97, 111, + -119, -113, -99, -85, + -67, -50, -33, -17, + 1, 16, 32, 48, + 64, 79, 95, 110, -119, -111, -95, -81, - -68, -53, -36, -22, - -5, 9, 27, 40, - 56, 70, 85, 96, - -117, -106, -90, -76, - -62, -49, -31, -15, - -2, 10, 26, 39, - 51, 64, 80, 90, - -113, -102, -84, -69, - -54, -42, -27, -15, - -1, 13, 28, 42, - 58, 73, 90, 106, - -115, -104, -90, -76, - -63, -50, -35, -21, - -8, 7, 22, 37, - 53, 70, 88, 107, - -109, -98, -82, -66, - -49, -35, -18, -2, - 14, 30, 45, 58, - 73, 86, 100, 113, - -106, -96, -82, -68, - -53, -40, -25, -10, - 5, 19, 34, 49, - 65, 80, 96, 110, - -120, -113, -99, -86, - -72, -59, -50, -36, - -7, 10, 27, 45, - 61, 78, 94, 109, - -117, -109, -96, -84, - -72, -58, -47, -32, - -19, -2, 23, 40, - 57, 75, 92, 109, - -119, -112, -99, -87, - -78, -66, -42, -20, - -6, 11, 28, 44, - 60, 78, 94, 110, + -68, -53, -36, -21, + -6, 9, 27, 40, + 57, 71, 86, 97, + -117, -106, -90, -77, + -63, -49, -30, -16, + -2, 10, 26, 38, + 51, 64, 81, 90, + -114, -103, -88, -71, + -57, -44, -31, -19, + -3, 11, 26, 40, + 55, 71, 89, 106, + -113, -101, -84, -67, + -50, -34, -18, -1, + 16, 31, 46, 59, + 71, 84, 99, 113, + -117, -110, -95, -81, + -70, -56, -43, -27, + -16, -4, 14, 38, + 58, 75, 92, 109, -110, -97, -79, -62, - -44, -26, -8, 8, - 23, 36, 49, 60, - 72, 84, 97, 111, - -109, -94, -73, -55, - -37, -22, -8, 2, - 13, 24, 37, 50, - 65, 79, 95, 110, - -114, -101, -83, -67, - -48, -31, -15, -1, - 10, 21, 34, 49, - 65, 80, 96, 111, - -118, -112, -100, -92, - -80, -49, -34, -19, - -7, 8, 26, 43, - 60, 78, 94, 110, - -118, -112, -100, -78, - -61, -51, -38, -26, - -6, 6, 19, 33, - 52, 73, 94, 110, - -117, -110, -94, -79, - -67, -54, -42, -27, - -16, -6, 8, 35, - 57, 75, 92, 109, - -113, -92, -71, -57, - -45, -34, -22, -10, - 4, 17, 32, 46, - 62, 77, 93, 107, - -120, -110, -90, -71, - -54, -37, -17, -1, - 16, 31, 44, 56, - 70, 82, 97, 111, - -110, -101, -88, -80, - -69, -50, -30, -13, - 2, 17, 32, 48, - 64, 80, 97, 111, - -118, -112, -101, -86, - -55, -41, -29, -16, - -4, 10, 30, 43, - 56, 72, 90, 107, - -112, -103, -88, -74, - -61, -49, -36, -24, - -10, 4, 17, 29, - 43, 57, 74, 102, - -118, -107, -84, -69, - -52, -35, -17, -5, - 9, 20, 34, 45, - 59, 69, 84, 93, - -106, -95, -78, -63, - -48, -36, -24, -13, - -1, 9, 21, 32, - 46, 60, 76, 92, - -116, -101, -85, -69, - -54, -37, -21, -6, - 11, 24, 39, 53, - 76, 93, 104, 112, - -114, -104, -87, -74, - -61, -50, -40, -30, - -19, -10, 4, 14, - 36, 69, 89, 109, - -112, -98, -85, -72, - -54, -35, -23, -11, - 3, 20, 38, 56, - 69, 81, 90, 108, - -116, -101, -84, -70, - -55, -40, -25, -8, - 11, 30, 41, 49, - 62, 83, 105, 117, - -115, -98, -82, -61, - -48, -40, -29, -14, - 6, 22, 39, 53, - 68, 82, 96, 110, - -113, -96, -76, -68, - -59, -44, -21, -8, - 3, 15, 33, 49, + -44, -26, -8, 9, + 24, 38, 50, 62, + 74, 87, 100, 112, + -112, -96, -75, -58, + -43, -29, -18, -6, + 7, 19, 34, 46, + 61, 76, 92, 107, + -110, -94, -75, -57, + -38, -22, -7, 2, + 15, 28, 40, 51, 65, 80, 95, 110, - -1, 0, 0, 1, - 1, 2, 2, 2, + -116, -108, -96, -80, + -67, -54, -40, -26, + -9, 5, 19, 33, + 48, 66, 88, 108, + -118, -106, -86, -68, + -48, -31, -14, -1, + 14, 26, 39, 50, + 65, 80, 95, 109, + -119, -112, -102, -86, + -56, -42, -29, -19, + -3, 10, 26, 40, + 56, 72, 90, 107, + -117, -110, -99, -88, + -78, -67, -46, -20, + -5, 10, 27, 43, + 60, 77, 93, 110, + -118, -108, -92, -75, + -58, -44, -28, -9, + 10, 26, 41, 57, + 70, 81, 95, 108, + -118, -107, -87, -71, + -51, -35, -18, -6, + 7, 19, 34, 44, + 58, 68, 83, 93, + -116, -96, -75, -61, + -58, -49, -29, 2, + 16, 19, 32, 54, + 72, 86, 97, 112, + -113, -101, -84, -70, + -57, -41, -42, -28, + -14, -8, 8, 19, + 38, 69, 87, 106, + -114, -104, -90, -74, + -58, -45, -31, -19, + -5, 7, 17, 28, + 40, 52, 67, 102, + -109, -95, -77, -62, + -51, -39, -24, -12, + 1, 10, 23, 35, + 50, 65, 81, 94, + -115, -95, -81, -69, + -49, -27, -21, -16, + -1, 25, 52, 50, + 51, 79, 98, 113, + -115, -96, -81, -67, + -50, -28, -9, -2, + 9, 15, 34, 52, + 65, 80, 96, 111, + -115, -95, -77, -57, + -39, -29, -32, -23, + 2, 17, 34, 49, + 66, 81, 96, 110, + -117, -97, -85, -74, + -52, -36, -15, 1, + 33, 39, 39, 36, + 56, 80, 94, 110, + -112, -96, -81, -65, + -52, -39, -22, -8, + 9, 23, 42, 60, + 87, 99, 100, 100, + -114, -99, -80, -67, + -52, -37, -19, -3, + 10, 29, 54, 63, + 65, 76, 111, 111, + -113, -96, -79, -64, + -51, -37, -22, -8, + 11, 25, 41, 60, + 78, 99, 118, 119, + -112, -95, -77, -59, + -48, -39, -23, -8, + 13, 41, 43, 41, + 48, 78, 98, 112, + -117, -102, -82, -66, + -50, -34, -16, 0, + 18, 35, 38, 62, + 74, 95, 101, 111, + -1, -1, 0, 0, + 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 0, - 0, -1, -3, -6, - -6, -5, -4, -4, - -3, -1, 0, 0, - 0, 0, 1, 1, - 0, 0, -1, 0, - -1, -2, -3, -3, - -4, -5, -5, -4, - -3, -2, -2, 0, - 9, 8, 5, 2, - 1, -1, -1, -2, - -1, -2, -1, -2, - -2, -2, -2, -2, - -5, -8, 3, 2, - 2, 0, 0, 0, - 0, 0, 1, 1, - 1, 1, 0, 0, - 0, 0, 2, 8, - 9, 8, 5, 2, - -1, -2, -2, -2, - -1, 1, 1, 2, - -1, 0, -1, 0, - 0, 2, 4, 5, - 4, 2, -1, -5, - -8, -8, -6, -2, - 0, 0, -2, -2, - -1, -1, 0, 2, - 5, 5, 5, 8, - 9, 7, 6, 3, - -1, -1, -1, -1, - -1, -1, -1, -1, - -1, -1, -1, 0, - -1, 0, 0, 0, - 4, 3, 4, 3, - 3, 3, 3, 3, - 2, 2, 2, 2, - 2, 2, 2, 2, - -1, -3, -6, -7, - 0, 0, 4, 3, - 3, 1, 1, 1, - 1, 1, 1, 1, - -4, 7, 4, 4, - 3, 3, 2, 2, - 1, 1, 1, 1, - 1, 1, 1, 1, - -2, -5, -7, 5, - 3, 3, 3, 3, - 2, 2, 1, 1, + 1, 2, 1, -1, + -2, -2, -2, -5, + -4, -3, -4, -4, + -6, -4, -2, 0, + 0, 0, 2, 7, + 5, 3, 1, -2, + -5, -5, -6, -4, + 0, 1, 1, 1, + 8, 8, 6, 1, + -1, -2, -2, 0, 1, 0, 0, 0, - 2, 1, 4, 3, - 0, -3, -7, -6, - -5, -3, -2, -1, + 1, 1, 1, 1, + 1, 1, -1, -3, + -4, -7, -2, 1, + -7, -2, 2, 3, + 3, 3, 1, 2, + 1, 0, -3, -8, + -11, -1, 0, 3, + 0, -2, -3, -2, + -4, -2, -4, -2, + 0, 1, 0, -2, + -3, -1, 0, 1, + 5, 2, 0, 0, + -1, -5, -6, -6, + -2, -5, -9, -1, + 2, -2, -4, -1, + -2, -3, 2, 3, + 3, -2, -1, 0, 0, 0, 0, 0, - 0, 0, 0, 1, - 2, 3, 3, 4, - 3, 4, 5, 4, - 1, -3, -6, -7, - 2, 2, 1, -1, - -3, -2, -2, -1, - 2, -1, -6, -9, - -4, -1, 1, 2, + -1, -1, -1, -1, + -1, -1, 0, 0, 0, 0, 0, 0, + -3, -7, 1, 3, + 2, 1, 2, 2, + 4, 2, 2, 2, + 2, 1, 1, 2, + 2, 2, 0, -2, + -3, -5, -4, -5, + -1, 0, -2, -2, + -2, -1, 1, 0, + 0, -2, -5, -7, + 2, 0, 0, 2, + -1, 0, 1, 1, + 2, 3, 3, 3, + 6, 5, 4, 2, + 2, 2, -1, -1, + -2, -1, -1, 0, + -1, -3, -4, -5, + -4, 7, 4, 4, + 2, 3, 4, 5, + 3, 4, 4, 4, + 3, 0, 0, 2, + 0, -1, 0, 2, + 5, 4, 3, 3, + 2, -1, -5, -9, + -6, -1, -2, -1, + 0, -2, -3, -1, + -1, 7, 5, 4, + 4, 4, 1, 1, + 1, 0, -3, -3, + -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 3, 1, -1, - -5, -7, 1, -1, - 0, 1, 0, 0, - 0, 0, 1, 1, - -1, -1, 1, 1, - 2, 3, 4, 4, - 3, 0, -3, -5, - -4, -3, -2, -1, - 2, 2, 1, 1, - 0, -2, -2, -2, - 1, 3, 3, 0, - -4, -6, -4, -1, - 0, 0, 1, 1, - 2, 0, -2, -5, - -7, -5, -1, 0, - 2, 2, 3, 2, - 0, 0, -4, -7, - 5, 3, -1, -2, - -1, -1, -1, 0, - 0, 0, 0, 0, - 0, -1, -1, -3, - -7, 2, 0, 4, - 3, 3, 2, 1, - 1, 1, 0, 0, - 0, 0, 2, 3, - 1, 0, 0, -1, - 2, 2, 4, 6, - 6, 3, 0, -2, + 0, -1, 1, 4, + 3, 3, 5, 3, 1, 1, 0, 0, 0, 0, 0, 0, + -3, -5, -3, -4, + -1, 0, 0, 0, + -1, 0, 0, -1, + -1, 0, -1, -2, + 1, 1, 2, 1, + 0, -4, -4, -5, + -4, 0, 0, 1, + 0, -1, 0, 1, + 0, 0, 0, -1, + -2, -1, 1, 3, + 4, 3, 5, 4, + 2, 0, 0, -1, + 6, 4, 3, -1, + -2, -1, -1, -2, + 0, -2, 0, 0, + 0, -1, 0, 1, + 0, -2, 0, -1, + -1, -1, -8, 0, + -2, -1, 0, 1, + -1, 2, 0, 1, + 1, 0, -1, 0, + -1, 3, 2, 1, + 2, -3, -7, -7, + 0, 0, 1, 0, + 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -4, -4, 2, 0, - 2, 2, 2, 1, - 2, 1, 1, 1, - 1, 0, 1, 0, - -1, -2, -4, 3, - 1, -2, -1, -4, - 2, 0, -2, -1, - -1, -2, -2, -1, - 0, 0, 1, -2, - -1, 3, 4, 0, - -3, -5, -4, -1, - -1, -1, 0, 0, - -1, -1, 2, 2, - 0, -3, -4, 1, - 4, 4, 3, 1, - 0, 1, 1, 2, - 0, -1, -1, -1, - -1, -2, -5, 4, - -1, -5, 2, 1, - -1, 0, 0, 1, - 0, -1, 0, 0, - 1, 0, 0, -4, - -7, 5, 2, 0, - 1, 1, 0, 0, - 1, 1, 0, 1, - 1, 0, 2, 1, - 0, 0, -3, -3, - 6, 5, 0, -3, 0, 0, 0, 0, + 1, 1, 1, -1, + -2, 0, 0, 1, + -1, 0, 2, 3, + 5, 5, 4, 2, + 1, 1, 2, 0, + 0, 4, 4, 1, + -2, -5, -2, -1, + 0, -1, 0, 0, + 0, -1, -3, 2, + 0, -2, -4, -6, + 4, 0, 0, 0, + 0, 1, 0, 0, + -1, -1, 7, 0, + 0, -1, 0, 1, + -1, 0, 0, 0, + -2, -2, -1, 0, + -1, 0, 0, 0, + 0, 0, 3, 2, + 0, 1, -1, -3, + -5, -3, 0, 1, + 0, 1, 1, 2, + 2, -1, 1, 0, + 2, 4, 5, 0, + -1, -2, -5, -3, + 1, 1, -2, -5, + 1, -1, -5, 1, + -1, 1, 0, 0, + -2, -2, -2, -2, + 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 1, 1, 0, - 1, 3, 1, 1, + 1, -1, 2, 2, + 0, 0, 0, 1, + 0, 0, 0, 1, + 4, 3, 0, 0, + 0, 0, -2, -2, + 4, 4, -1, -3, 0, 0, 0, 0, - -1, -2, -3, -4, - 1, 0, -2, 0, - 4, 0, -4, 1, - 0, 1, 0, -1, - -1, 0, 0, 0, - 0, -2, 4, 3, - 1, -1, -2, 3, - -2, 0, -2, -1, - 0, 1, 1, 0, - 1, 1, 0, -1, - -1, 2, -2, -5, - 4, 1, 1, 0, - -1, -1, 0, 1, - 1, 0, -2, 2, - 2, 0, 5, 3, - 2, 1, 1, 0, - -2, 1, 3, 0, - 0, 0, 1, 0, - 1, 0, -1, -1, - -1, -2, 1, 5, - 3, -2, -4, 2, - -2, 5, 3, -2, + 0, -1, -1, 0, + 0, -2, -4, 5, + 1, 0, -1, 1, + 0, 0, 0, 0, + -3, -1, -2, -1, + 0, 0, 0, 1, + 1, -3, 6, 0, + 0, 0, -4, 0, 0, -1, -1, -1, + 1, 1, 1, 2, + 1, 0, -3, 0, + 0, -4, 2, 2, + -1, -1, 5, 2, + 0, -1, -1, 1, + 1, -2, -2, -2, + -6, 5, 2, -2, + 1, 0, 0, -1, + 0, 1, 2, 1, + 2, 0, -1, 2, + 6, 4, 2, -2, + -2, 0, 1, 1, + 0, -1, -1, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 1, 1, 0, + 0, 0, 0, -1, + 2, 0, 0, -1, + -1, 1, 0, -5, + 1, 1, 2, 2, + 0, 0, -1, 5, + 0, 0, -1, 0, + 0, 0, 0, 1, 0, 1, 0, 0, - 2, 1, 0, -1, - -1, 0, 0, 0, + 0, -3, 3, 0, + 0, 0, -1, -2, + 0, 2, 4, 4, + 0, 0, 1, 0, + 0, 0, 1, -1, + 0, -2, -3, 5, + 0, -1, -4, -1, + 1, 2, 2, 1, + 3, 0, -3, -3, + -1, 0, 1, -3, + 0, 1, -1, 1, + 1, 0, 1, -1, + -4, 5, 0, -1, + 1, 1, 2, -2, + 0, -2, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, + -1, 2, 2, 3, + -1, -5, 1, 2, + 0, 1, 1, 1, + 1, 1, 0, 0, 0, 0, 0, 0, - 1, -1, -3, -1, - -3, 0, 0, -1, - -2, -1, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, - -1, -2, -2, -2, - 1, 2, 0, -1, - -1, 0, 0, -4, - 0, -1, 4, 2, - -3, 0, 1, -1, - 0, -2, -1, 0, - 0, 0, -1, -1, - 1, 0, -1, -1, - 1, -2, 2, 2, - -2, 3, 0, -2, - -2, -1, -3, 0, + 0, -1, 1, 1, + -3, -2, -1, 1, + -1, 0, -1, 0, + 0, 0, 0, 0, + 1, -1, -2, -3, + 0, -1, 0, 0, + -1, 1, -3, 0, + 0, 0, 0, 1, + 1, 0, -3, -1, + -1, -1, 2, 0, + 2, 2, 2, -2, + 0, 0, 0, 0, 0, 0, -1, -1, - -1, -2, -3, 2, - 3, 0, -4, 1, - 2, 1, 0, 0, - 1, 1, 0, -2, - 1, 0, 1, 0, - -2, -1, 3, 0, - 1, 3, 2, 0, + 0, -1, 0, 0, + 0, -4, 4, 0, + 0, 0, -2, 0, + 0, -1, 0, -1, + 0, 0, 0, 0, + 1, 1, 2, 0, + -5, 1, 3, 1, + -2, -1, 0, -2, + -2, 0, 0, -1, + 2, 0, 1, 0, + 0, -3, -1, -1, + 0, 1, -1, -1, + 0, -1, -2, -1, + 1, 2, 1, 0, + 5, 4, -2, -1, 0, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, 1, -1, - -3, -4, 5, 3, - -1, -1, 0, -1, - -1, 0, -1, -1, - -1, -1, -1, -1, 0, 0, 0, 0, - -1, 2, 1, 1, - 1, 2, 1, 1, - 1, 1, 0, 1, - 1, 1, 1, 1, - 2, 1, 0, 1, - 2, -1, 0, -2, - -1, 0, -1, 0, - 1, 0, 0, 0, - 1, 0, 1, -1, - 0, 1, -1, 3, - 1, 1, 1, 1, - 0, -1, -1, -1, - 0, 0, -1, 1, - 0, -3, 3, 1, - 0, -2, 2, 1, - 0, -1, -1, 0, 0, 0, -1, -1, - -1, 1, 2, -2, - 2, 3, -1, -1, - 1, -1, 0, 0, - 1, -1, -2, 4, - 0, 0, -2, 1, + -2, -2, -1, -1, + -3, 2, 0, 0, 0, 0, 0, 0, - 1, 1, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 1, + -1, -3, 0, 0, + 0, 0, 0, 0, + -1, 0, 0, 1, 1, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, 1, -1, - -5, 3, 1, 0, - -1, -1, -1, -1, - 0, -1, 0, 0, - 0, 1, 1, 1, - 1, 1, 0, 0, - 2, 1, 0, 1, - -1, -1, 1, 1, - 1, 0, -1, 0, - -1, 0, 0, 0, - 0, -1, 1, 2, + 1, 0, 0, 0, + 0, -1, 1, 1, + 2, -2, -1, -1, 1, 1, 1, 0, - -1, 1, 1, 0, - -1, -1, -1, -1, - 0, 0, 2, -3, - 1, -1, 0, 0, - 1, 0, -1, 0, - -1, -1, 0, 0, - 1, 0, 1, 0, - 0, 4, -1, -1, - -1, 1, -1, 0, - 1, 1, 1, 1, + 2, 1, 2, 0, + 0, 1, 0, -1, + -2, 2, 1, 1, + 1, 0, 0, 0, + 1, 0, -3, 2, + 0, 0, -2, 0, + 0, 0, 0, 0, + 4, 0, 1, 0, 1, 0, -1, 0, - 1, 1, 0, 0, - 1, -4, 0, 1, - 0, 0, 1, -2, 0, 0, 0, 0, - -1, 0, -1, 0, - 1, -1, 2, -4, - 1, 0, -1, 1, - -2, 3, 0, 1, - -1, 0, -1, 0, - -1, 0, 0, 1, - 0, 0, -1, 0, - 1, 1, 1, 0, - -1, 0, 0, 0, - -1, 0, 1, 1, + -1, -1, 1, 0, + -2, 4, 0, 0, + 0, 0, 1, -2, 0, 0, 0, 0, - -1, 0, 1, 1, - 1, -1, -1, -1, - 1, -1, 0, -1, + 2, 2, 2, 1, + 0, 0, 0, 1, + -1, -1, 1, -1, + 0, 0, -1, 1, + 0, -1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, + -2, 0, 1, -2, 0, 0, 0, 0, + 0, 0, 0, 1, + 1, 2, -1, -1, 0, 0, 1, 1, - -1, 0, -1, -1, - 1, -1, 0, -1, - 1, -2, 0, -1, + -1, -1, 0, 1, + 0, 0, -1, -1, + 0, 0, -1, 1, + 3, -2, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, - 0, 0, 1, 1, - 1, 2, -3, -1, 0, 0, 0, 0, + -1, 0, -1, 0, + 0, 3, 1, 1, + 1, 1, 0, 1, + 0, 1, 0, 0, 0, 0, 0, 0, - -1, 0, 0, 0, + 0, -1, 0, 0, + 1, 3, 0, 1, + 0, 0, 3, -1, 0, 0, 0, 0, 1, 0, 0, 0, - -1, 0, -2, 3, - -1, 0, 1, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 1, 2, -4, -1, - -2, -1, 0, 0, + 0, 0, -1, -5, + 0, -1, 0, 0, + 2, -1, 1, 0, + 0, 0, 0, -1, -1, 1, 0, 1, - 1, 0, 0, 0, - 0, 0, 0, 0 + 0, -1, -1, 0 }; const SKP_Silk_NLSF_CBS SKP_Silk_NLSF_CB1_16_Stage_info[ NLSF_MSVQ_CB1_16_STAGES ] = @@ -698,7 +674,6 @@ const SKP_Silk_NLSF_CB_struct SKP_Silk_NLSF_CB1_16 = SKP_Silk_NLSF_CB1_16_Stage_info, SKP_Silk_NLSF_MSVQ_CB1_16_ndelta_min_Q15, SKP_Silk_NLSF_MSVQ_CB1_16_CDF, - SKP_Silk_NLSF_MSVQ_CB1_16_CDF_start_ptr, - SKP_Silk_NLSF_MSVQ_CB1_16_CDF_middle_idx + SKP_Silk_NLSF_MSVQ_CB1_16_CDF_start_ptr }; diff --git a/src_common/SKP_Silk_tables_gain.c b/src_common/SKP_Silk_tables_gain.c index 673d8378d00d88e4328fb9c193c7ffc2ad880222..d891b08eafaad9ff1246f76cf1ef5cc3e5b70b83 100644 --- a/src_common/SKP_Silk_tables_gain.c +++ b/src_common/SKP_Silk_tables_gain.c @@ -32,46 +32,25 @@ extern "C" { #endif -const SKP_uint16 SKP_Silk_gain_CDF[ 2 ][ 65 ] = +const SKP_uint8 SKP_Silk_gain_iCDF[ 2 ][ N_LEVELS_QGAIN / 8 ] = { { - 0, 18, 45, 94, 181, 320, 519, 777, - 1093, 1468, 1909, 2417, 2997, 3657, 4404, 5245, - 6185, 7228, 8384, 9664, 11069, 12596, 14244, 16022, - 17937, 19979, 22121, 24345, 26646, 29021, 31454, 33927, - 36438, 38982, 41538, 44068, 46532, 48904, 51160, 53265, - 55184, 56904, 58422, 59739, 60858, 61793, 62568, 63210, - 63738, 64165, 64504, 64769, 64976, 65133, 65249, 65330, - 65386, 65424, 65451, 65471, 65487, 65501, 65513, 65524, - 65535 + 255, 251, 219, 143, 53, 10, 1, 0 }, { - 0, 214, 581, 1261, 2376, 3920, 5742, 7632, - 9449, 11157, 12780, 14352, 15897, 17427, 18949, 20462, - 21957, 23430, 24889, 26342, 27780, 29191, 30575, 31952, - 33345, 34763, 36200, 37642, 39083, 40519, 41930, 43291, - 44602, 45885, 47154, 48402, 49619, 50805, 51959, 53069, - 54127, 55140, 56128, 57101, 58056, 58979, 59859, 60692, - 61468, 62177, 62812, 63368, 63845, 64242, 64563, 64818, - 65023, 65184, 65306, 65391, 65447, 65482, 65505, 65521, - 65535 + 242, 199, 146, 94, 48, 15, 2, 0 } }; -const SKP_int SKP_Silk_gain_CDF_offset = 32; - - -const SKP_uint16 SKP_Silk_delta_gain_CDF[ 46 ] = { - 0, 2358, 3856, 7023, 15376, 53058, 59135, 61555, - 62784, 63498, 63949, 64265, 64478, 64647, 64783, 64894, - 64986, 65052, 65113, 65169, 65213, 65252, 65284, 65314, - 65338, 65359, 65377, 65392, 65403, 65415, 65424, 65432, - 65440, 65448, 65455, 65462, 65470, 65477, 65484, 65491, - 65499, 65506, 65513, 65521, 65528, 65535 +const SKP_uint8 SKP_Silk_delta_gain_iCDF[ MAX_DELTA_GAIN_QUANT - MIN_DELTA_GAIN_QUANT + 1 ] = { + 250, 245, 234, 203, 73, 52, 44, 40, + 37, 35, 33, 31, 30, 29, 28, 27, + 26, 25, 24, 23, 22, 21, 20, 19, + 18, 17, 16, 15, 14, 13, 12, 11, + 10, 9, 8, 7, 6, 5, 4, 3, + 2, 1, 0 }; -const SKP_int SKP_Silk_delta_gain_CDF_offset = 5; - #ifdef __cplusplus } #endif diff --git a/src_common/SKP_Silk_tables_other.c b/src_common/SKP_Silk_tables_other.c index d9208d7e336bc5afc5c94e8650f91cf4dc2250af..782f9d76996721dfe602a7a1956d1d7d9c91b0f5 100644 --- a/src_common/SKP_Silk_tables_other.c +++ b/src_common/SKP_Silk_tables_other.c @@ -28,32 +28,29 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "SKP_Silk_structs.h" #include "SKP_Silk_define.h" #include "SKP_Silk_tables.h" + #ifdef __cplusplus extern "C" { #endif /* Piece-wise linear mapping from bitrate in kbps to coding quality in dB SNR */ -const SKP_int32 TargetRate_table_NB[ TARGET_RATE_TAB_SZ ] = { +const SKP_uint16 TargetRate_table_NB[ TARGET_RATE_TAB_SZ ] = { 0, 8000, 9000, 11000, 13000, 16000, 22000, MAX_TARGET_RATE_BPS }; -const SKP_int32 TargetRate_table_MB[ TARGET_RATE_TAB_SZ ] = { +const SKP_uint16 TargetRate_table_MB[ TARGET_RATE_TAB_SZ ] = { 0, 10000, 12000, 14000, 17000, 21000, 28000, MAX_TARGET_RATE_BPS }; -const SKP_int32 TargetRate_table_WB[ TARGET_RATE_TAB_SZ ] = { +const SKP_uint16 TargetRate_table_WB[ TARGET_RATE_TAB_SZ ] = { 0, 11000, 14000, 17000, 21000, 26000, 36000, MAX_TARGET_RATE_BPS }; -const SKP_int32 TargetRate_table_SWB[ TARGET_RATE_TAB_SZ ] = { +const SKP_uint16 TargetRate_table_SWB[ TARGET_RATE_TAB_SZ ] = { 0, 13000, 16000, 19000, 25000, 32000, 46000, MAX_TARGET_RATE_BPS }; -const SKP_int32 SNR_table_Q1[ TARGET_RATE_TAB_SZ ] = { +const SKP_uint16 SNR_table_Q1[ TARGET_RATE_TAB_SZ ] = { 19, 31, 35, 39, 43, 47, 54, 59 }; -const SKP_int32 SNR_table_one_bit_per_sample_Q7[ 4 ] = { - 1984, 2240, 2408, 2708 -}; - /* Filter coeficicnts for HP filter: 4. Order filter implementad as two biquad filters */ const SKP_int16 SKP_Silk_SWB_detect_B_HP_Q13[ NB_SOS ][ 3 ] = { //{400, -550, 400}, {400, 130, 400}, {400, 390, 400} @@ -64,44 +61,56 @@ const SKP_int16 SKP_Silk_SWB_detect_A_HP_Q13[ NB_SOS ][ 2 ] = { //{14880, 6900}, {14400, 7300}, {13700, 7800} }; -/* Decoder high-pass filter coefficients for 24 kHz sampling, -6 dB @ 44 Hz */ -const SKP_int16 SKP_Silk_Dec_A_HP_24[ DEC_HP_ORDER ] = {-16220, 8030}; // second order AR coefs, Q13 -const SKP_int16 SKP_Silk_Dec_B_HP_24[ DEC_HP_ORDER + 1 ] = {8000, -16000, 8000}; // second order MA coefs, Q13 +/* Decoder high-pass filter coefficients, -6 dB @ 50 Hz, 0.05 dB ripple */ +const SKP_int32 SKP_Silk_Dec_A_HP_24[ DEC_HP_ORDER ] = {-530479464, 262127223}; /* second order AR coefs, Q28 */ +const SKP_int32 SKP_Silk_Dec_B_HP_24[ DEC_HP_ORDER + 1 ] = { 265214231, -530428461, 265214231}; /* second order MA coefs, Q28 */ -/* Decoder high-pass filter coefficients for 16 kHz sampling, - 6 dB @ 46 Hz */ -const SKP_int16 SKP_Silk_Dec_A_HP_16[ DEC_HP_ORDER ] = {-16127, 7940}; // second order AR coefs, Q13 -const SKP_int16 SKP_Silk_Dec_B_HP_16[ DEC_HP_ORDER + 1 ] = {8000, -16000, 8000}; // second order MA coefs, Q13 +const SKP_int32 SKP_Silk_Dec_A_HP_16[ DEC_HP_ORDER ] = {-527234079, 258986528}; /* second order AR coefs, Q28 */ +const SKP_int32 SKP_Silk_Dec_B_HP_16[ DEC_HP_ORDER + 1 ] = { 263603618, -527207236, 263603618}; /* second order MA coefs, Q28 */ -/* Decoder high-pass filter coefficients for 12 kHz sampling, -6 dB @ 44 Hz */ -const SKP_int16 SKP_Silk_Dec_A_HP_12[ DEC_HP_ORDER ] = {-16043, 7859}; // second order AR coefs, Q13 -const SKP_int16 SKP_Silk_Dec_B_HP_12[ DEC_HP_ORDER + 1 ] = {8000, -16000, 8000}; // second order MA coefs, Q13 +const SKP_int32 SKP_Silk_Dec_A_HP_12[ DEC_HP_ORDER ] = {-524058488, 255953207}; /* second order AR coefs, Q28 */ +const SKP_int32 SKP_Silk_Dec_B_HP_12[ DEC_HP_ORDER + 1 ] = { 261993005, -523986010, 261993005}; /* second order MA coefs, Q28 */ -/* Decoder high-pass filter coefficients for 8 kHz sampling, -6 dB @ 43 Hz */ -const SKP_int16 SKP_Silk_Dec_A_HP_8[ DEC_HP_ORDER ] = {-15885, 7710}; // second order AR coefs, Q13 -const SKP_int16 SKP_Silk_Dec_B_HP_8[ DEC_HP_ORDER + 1 ] = {8000, -16000, 8000}; // second order MA coefs, Q13 +const SKP_int32 SKP_Silk_Dec_A_HP_8[ DEC_HP_ORDER ] = {-517610668, 249913410}; /* second order AR coefs, Q28 */ +const SKP_int32 SKP_Silk_Dec_B_HP_8[ DEC_HP_ORDER + 1 ] = { 258905997, -517811995, 258905997}; /* second order MA coefs, Q28 */ /* table for LSB coding */ -const SKP_uint16 SKP_Silk_lsb_CDF[ 3 ] = {0, 40000, 65535}; +const SKP_uint8 SKP_Silk_lsb_iCDF[ 2 ] = { 100, 0 }; /* tables for LTPScale */ -const SKP_uint16 SKP_Silk_LTPscale_CDF[ 4 ] = {0, 32000, 48000, 65535}; -const SKP_int SKP_Silk_LTPscale_offset = 2; +const SKP_uint8 SKP_Silk_LTPscale_iCDF[ 3 ] = { 128, 64, 0 }; /* tables for VAD flag */ -const SKP_uint16 SKP_Silk_vadflag_CDF[ 3 ] = {0, 22000, 65535}; // 66% for speech, 33% for no speech -const SKP_int SKP_Silk_vadflag_offset = 1; +const SKP_uint8 SKP_Silk_vadflag_iCDF[ 2 ] = { 171, 0 }; /* 66% for speech, 33% for no speech */ + +/* tables for signal type and offset coding */ +const SKP_uint8 SKP_Silk_type_offset_iCDF[4] = { + 123, 116, 94, 0 +}; +const SKP_uint8 SKP_Silk_type_offset_joint_iCDF[4][4] = { +{ + 151, 33, 9, 0 +}, +{ + 248, 50, 25, 0 +}, +{ + 231, 204, 43, 0 +}, +{ + 249, 215, 126, 0 +} +}; + /* tables for NLSF interpolation factor */ -const SKP_uint16 SKP_Silk_NLSF_interpolation_factor_CDF[ 6 ] = {0, 3706, 8703, 19226, 30926, 65535}; -const SKP_int SKP_Silk_NLSF_interpolation_factor_offset = 4; +const SKP_uint8 SKP_Silk_NLSF_interpolation_factor_iCDF[ 5 ] = { 243, 221, 192, 181, 0 }; /* Table for frame termination indication */ -const SKP_uint16 SKP_Silk_FrameTermination_CDF[ 3 ] = {0, 50000, 65535}; -const SKP_int SKP_Silk_FrameTermination_offset = 1; +const SKP_uint8 SKP_Silk_FrameTermination_iCDF[ 2 ] = { 64, 0 }; /* Table for random seed */ -const SKP_uint16 SKP_Silk_Seed_CDF[ 5 ] = {0, 16384, 32768, 49152, 65535}; -const SKP_int SKP_Silk_Seed_offset = 2; +const SKP_uint8 SKP_Silk_Seed_iCDF[ 4 ] = { 192, 128, 64, 0 }; /* Quantization offsets */ const SKP_int16 SKP_Silk_Quantization_Offsets_Q10[ 2 ][ 2 ] = { @@ -111,6 +120,12 @@ const SKP_int16 SKP_Silk_Quantization_Offsets_Q10[ 2 ][ 2 ] = { /* Table for LTPScale */ const SKP_int16 SKP_Silk_LTPScales_table_Q14[ 3 ] = { 15565, 11469, 8192 }; +/* Uniform entropy tables */ +const SKP_uint8 SKP_Silk_uniform4_iCDF[ 4 ] = { 192, 128, 64, 0 }; +const SKP_uint8 SKP_Silk_uniform6_iCDF[ 6 ] = { 213, 171, 128, 85, 43, 0 }; +const SKP_uint8 SKP_Silk_uniform8_iCDF[ 8 ] = { 224, 192, 160, 128, 96, 64, 32, 0 }; +const SKP_uint8 SKP_Silk_uniform12_iCDF[ 12 ] = { 235, 213, 192, 171, 149, 128, 107, 85, 64, 43, 21, 0 }; + #if SWITCH_TRANSITION_FILTERING /* Elliptic/Cauer filters designed with 0.1 dB passband ripple, 80 dB minimum stopband attenuation, and diff --git a/src_common/SKP_Silk_tables_pitch_lag.c b/src_common/SKP_Silk_tables_pitch_lag.c index 7f33fb96a9146bc05cf12f7130839ae16ffe07c5..78ec04e9e6f57d5bca48f570f46988dc561be224 100644 --- a/src_common/SKP_Silk_tables_pitch_lag.c +++ b/src_common/SKP_Silk_tables_pitch_lag.c @@ -27,173 +27,39 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "SKP_Silk_tables.h" -const SKP_uint16 SKP_Silk_pitch_lag_NB_CDF[ 8 * ( PITCH_EST_MAX_LAG_MS - PITCH_EST_MIN_LAG_MS ) + 2 ] = { - 0, 194, 395, 608, 841, 1099, 1391, 1724, - 2105, 2544, 3047, 3624, 4282, 5027, 5865, 6799, - 7833, 8965, 10193, 11510, 12910, 14379, 15905, 17473, - 19065, 20664, 22252, 23814, 25335, 26802, 28206, 29541, - 30803, 31992, 33110, 34163, 35156, 36098, 36997, 37861, - 38698, 39515, 40319, 41115, 41906, 42696, 43485, 44273, - 45061, 45847, 46630, 47406, 48175, 48933, 49679, 50411, - 51126, 51824, 52502, 53161, 53799, 54416, 55011, 55584, - 56136, 56666, 57174, 57661, 58126, 58570, 58993, 59394, - 59775, 60134, 60472, 60790, 61087, 61363, 61620, 61856, - 62075, 62275, 62458, 62625, 62778, 62918, 63045, 63162, - 63269, 63368, 63459, 63544, 63623, 63698, 63769, 63836, - 63901, 63963, 64023, 64081, 64138, 64194, 64248, 64301, - 64354, 64406, 64457, 64508, 64558, 64608, 64657, 64706, - 64754, 64803, 64851, 64899, 64946, 64994, 65041, 65088, - 65135, 65181, 65227, 65272, 65317, 65361, 65405, 65449, - 65492, 65535 +const SKP_uint8 SKP_Silk_pitch_lag_iCDF[ 2 * ( PITCH_EST_MAX_LAG_MS - PITCH_EST_MIN_LAG_MS ) ] = { + 253, 250, 244, 233, 212, 182, 150, 131, + 120, 110, 98, 85, 72, 60, 49, 40, + 32, 25, 19, 15, 13, 11, 9, 8, + 7, 6, 5, 4, 3, 2, 1, 0 }; -const SKP_int SKP_Silk_pitch_lag_NB_CDF_offset = 43; - -const SKP_uint16 SKP_Silk_pitch_contour_NB_CDF[ 12 ] = { - 0, 14445, 18587, 25628, 30013, 34859, 40597, 48426, - 54460, 59033, 62990, 65535 +const SKP_uint8 SKP_Silk_pitch_delta_iCDF[21] = { + 210, 208, 206, 203, 199, 193, 183, 168, + 142, 104, 74, 52, 37, 27, 20, 14, + 10, 6, 4, 2, 0 }; -const SKP_int SKP_Silk_pitch_contour_NB_CDF_offset = 5; - -const SKP_uint16 SKP_Silk_pitch_lag_MB_CDF[ 12 * ( PITCH_EST_MAX_LAG_MS - PITCH_EST_MIN_LAG_MS ) + 2 ] = { - 0, 132, 266, 402, 542, 686, 838, 997, - 1167, 1349, 1546, 1760, 1993, 2248, 2528, 2835, - 3173, 3544, 3951, 4397, 4882, 5411, 5984, 6604, - 7270, 7984, 8745, 9552, 10405, 11300, 12235, 13206, - 14209, 15239, 16289, 17355, 18430, 19507, 20579, 21642, - 22688, 23712, 24710, 25677, 26610, 27507, 28366, 29188, - 29971, 30717, 31427, 32104, 32751, 33370, 33964, 34537, - 35091, 35630, 36157, 36675, 37186, 37692, 38195, 38697, - 39199, 39701, 40206, 40713, 41222, 41733, 42247, 42761, - 43277, 43793, 44309, 44824, 45336, 45845, 46351, 46851, - 47347, 47836, 48319, 48795, 49264, 49724, 50177, 50621, - 51057, 51484, 51902, 52312, 52714, 53106, 53490, 53866, - 54233, 54592, 54942, 55284, 55618, 55944, 56261, 56571, - 56873, 57167, 57453, 57731, 58001, 58263, 58516, 58762, - 58998, 59226, 59446, 59656, 59857, 60050, 60233, 60408, - 60574, 60732, 60882, 61024, 61159, 61288, 61410, 61526, - 61636, 61742, 61843, 61940, 62033, 62123, 62210, 62293, - 62374, 62452, 62528, 62602, 62674, 62744, 62812, 62879, - 62945, 63009, 63072, 63135, 63196, 63256, 63316, 63375, - 63434, 63491, 63549, 63605, 63661, 63717, 63772, 63827, - 63881, 63935, 63988, 64041, 64094, 64147, 64199, 64252, - 64304, 64356, 64409, 64461, 64513, 64565, 64617, 64669, - 64721, 64773, 64824, 64875, 64925, 64975, 65024, 65072, - 65121, 65168, 65215, 65262, 65308, 65354, 65399, 65445, - 65490, 65535 +const SKP_uint8 SKP_Silk_pitch_contour_iCDF[34] = { + 223, 201, 183, 167, 152, 138, 124, 111, + 98, 88, 79, 70, 62, 56, 50, 44, + 39, 35, 31, 27, 24, 21, 18, 16, + 14, 12, 10, 8, 6, 4, 3, 2, + 1, 0 }; -const SKP_int SKP_Silk_pitch_lag_MB_CDF_offset = 64; - -const SKP_uint16 SKP_Silk_pitch_lag_WB_CDF[ 16 * ( PITCH_EST_MAX_LAG_MS - PITCH_EST_MIN_LAG_MS ) + 2 ] = { - 0, 106, 213, 321, 429, 539, 651, 766, - 884, 1005, 1132, 1264, 1403, 1549, 1705, 1870, - 2047, 2236, 2439, 2658, 2893, 3147, 3420, 3714, - 4030, 4370, 4736, 5127, 5546, 5993, 6470, 6978, - 7516, 8086, 8687, 9320, 9985, 10680, 11405, 12158, - 12938, 13744, 14572, 15420, 16286, 17166, 18057, 18955, - 19857, 20759, 21657, 22547, 23427, 24293, 25141, 25969, - 26774, 27555, 28310, 29037, 29736, 30406, 31048, 31662, - 32248, 32808, 33343, 33855, 34345, 34815, 35268, 35704, - 36127, 36537, 36938, 37330, 37715, 38095, 38471, 38844, - 39216, 39588, 39959, 40332, 40707, 41084, 41463, 41844, - 42229, 42615, 43005, 43397, 43791, 44186, 44583, 44982, - 45381, 45780, 46179, 46578, 46975, 47371, 47765, 48156, - 48545, 48930, 49312, 49690, 50064, 50433, 50798, 51158, - 51513, 51862, 52206, 52544, 52877, 53204, 53526, 53842, - 54152, 54457, 54756, 55050, 55338, 55621, 55898, 56170, - 56436, 56697, 56953, 57204, 57449, 57689, 57924, 58154, - 58378, 58598, 58812, 59022, 59226, 59426, 59620, 59810, - 59994, 60173, 60348, 60517, 60681, 60840, 60993, 61141, - 61284, 61421, 61553, 61679, 61800, 61916, 62026, 62131, - 62231, 62326, 62417, 62503, 62585, 62663, 62737, 62807, - 62874, 62938, 62999, 63057, 63113, 63166, 63217, 63266, - 63314, 63359, 63404, 63446, 63488, 63528, 63567, 63605, - 63642, 63678, 63713, 63748, 63781, 63815, 63847, 63879, - 63911, 63942, 63973, 64003, 64033, 64063, 64092, 64121, - 64150, 64179, 64207, 64235, 64263, 64291, 64319, 64347, - 64374, 64401, 64428, 64455, 64481, 64508, 64534, 64560, - 64585, 64610, 64635, 64660, 64685, 64710, 64734, 64758, - 64782, 64807, 64831, 64855, 64878, 64902, 64926, 64950, - 64974, 64998, 65022, 65045, 65069, 65093, 65116, 65139, - 65163, 65186, 65209, 65231, 65254, 65276, 65299, 65321, - 65343, 65364, 65386, 65408, 65429, 65450, 65471, 65493, - 65514, 65535 +const SKP_uint8 SKP_Silk_pitch_contour_NB_iCDF[11] = { + 188, 176, 155, 138, 119, 97, 67, 43, + 26, 10, 0 }; -const SKP_int SKP_Silk_pitch_lag_WB_CDF_offset = 86; - - -const SKP_uint16 SKP_Silk_pitch_lag_SWB_CDF[ 24 * ( PITCH_EST_MAX_LAG_MS - PITCH_EST_MIN_LAG_MS ) + 2 ] = { - 0, 253, 505, 757, 1008, 1258, 1507, 1755, - 2003, 2249, 2494, 2738, 2982, 3225, 3469, 3713, - 3957, 4202, 4449, 4698, 4949, 5203, 5460, 5720, - 5983, 6251, 6522, 6798, 7077, 7361, 7650, 7942, - 8238, 8539, 8843, 9150, 9461, 9775, 10092, 10411, - 10733, 11057, 11383, 11710, 12039, 12370, 12701, 13034, - 13368, 13703, 14040, 14377, 14716, 15056, 15398, 15742, - 16087, 16435, 16785, 17137, 17492, 17850, 18212, 18577, - 18946, 19318, 19695, 20075, 20460, 20849, 21243, 21640, - 22041, 22447, 22856, 23269, 23684, 24103, 24524, 24947, - 25372, 25798, 26225, 26652, 27079, 27504, 27929, 28352, - 28773, 29191, 29606, 30018, 30427, 30831, 31231, 31627, - 32018, 32404, 32786, 33163, 33535, 33902, 34264, 34621, - 34973, 35320, 35663, 36000, 36333, 36662, 36985, 37304, - 37619, 37929, 38234, 38535, 38831, 39122, 39409, 39692, - 39970, 40244, 40513, 40778, 41039, 41295, 41548, 41796, - 42041, 42282, 42520, 42754, 42985, 43213, 43438, 43660, - 43880, 44097, 44312, 44525, 44736, 44945, 45153, 45359, - 45565, 45769, 45972, 46175, 46377, 46578, 46780, 46981, - 47182, 47383, 47585, 47787, 47989, 48192, 48395, 48599, - 48804, 49009, 49215, 49422, 49630, 49839, 50049, 50259, - 50470, 50682, 50894, 51107, 51320, 51533, 51747, 51961, - 52175, 52388, 52601, 52813, 53025, 53236, 53446, 53655, - 53863, 54069, 54274, 54477, 54679, 54879, 55078, 55274, - 55469, 55662, 55853, 56042, 56230, 56415, 56598, 56779, - 56959, 57136, 57311, 57484, 57654, 57823, 57989, 58152, - 58314, 58473, 58629, 58783, 58935, 59084, 59230, 59373, - 59514, 59652, 59787, 59919, 60048, 60174, 60297, 60417, - 60533, 60647, 60757, 60865, 60969, 61070, 61167, 61262, - 61353, 61442, 61527, 61609, 61689, 61765, 61839, 61910, - 61979, 62045, 62109, 62170, 62230, 62287, 62343, 62396, - 62448, 62498, 62547, 62594, 62640, 62685, 62728, 62770, - 62811, 62852, 62891, 62929, 62967, 63004, 63040, 63075, - 63110, 63145, 63178, 63212, 63244, 63277, 63308, 63340, - 63371, 63402, 63432, 63462, 63491, 63521, 63550, 63578, - 63607, 63635, 63663, 63690, 63718, 63744, 63771, 63798, - 63824, 63850, 63875, 63900, 63925, 63950, 63975, 63999, - 64023, 64046, 64069, 64092, 64115, 64138, 64160, 64182, - 64204, 64225, 64247, 64268, 64289, 64310, 64330, 64351, - 64371, 64391, 64411, 64431, 64450, 64470, 64489, 64508, - 64527, 64545, 64564, 64582, 64600, 64617, 64635, 64652, - 64669, 64686, 64702, 64719, 64735, 64750, 64766, 64782, - 64797, 64812, 64827, 64842, 64857, 64872, 64886, 64901, - 64915, 64930, 64944, 64959, 64974, 64988, 65003, 65018, - 65033, 65048, 65063, 65078, 65094, 65109, 65125, 65141, - 65157, 65172, 65188, 65204, 65220, 65236, 65252, 65268, - 65283, 65299, 65314, 65330, 65345, 65360, 65375, 65390, - 65405, 65419, 65434, 65449, 65463, 65477, 65492, 65506, - 65521, 65535 +const SKP_uint8 SKP_Silk_pitch_contour_10_ms_iCDF[12] = { + 165, 119, 80, 61, 47, 35, 27, 20, + 14, 9, 4, 0 }; -const SKP_int SKP_Silk_pitch_lag_SWB_CDF_offset = 128; - - -const SKP_uint16 SKP_Silk_pitch_contour_CDF[ 35 ] = { - 0, 372, 843, 1315, 1836, 2644, 3576, 4719, - 6088, 7621, 9396, 11509, 14245, 17618, 20777, 24294, - 27992, 33116, 40100, 44329, 47558, 50679, 53130, 55557, - 57510, 59022, 60285, 61345, 62316, 63140, 63762, 64321, - 64729, 65099, 65535 +const SKP_uint8 SKP_Silk_pitch_contour_10_ms_NB_iCDF[3] = { + 113, 63, 0 }; -const SKP_int SKP_Silk_pitch_contour_CDF_offset = 17; - -const SKP_uint16 SKP_Silk_pitch_delta_CDF[23] = { - 0, 343, 740, 1249, 1889, 2733, 3861, 5396, - 7552, 10890, 16053, 24152, 30220, 34680, 37973, 40405, - 42243, 43708, 44823, 45773, 46462, 47055, 65535 -}; -const SKP_int SKP_Silk_pitch_delta_CDF_offset = 11; diff --git a/src_common/SKP_Silk_tables_sign.c b/src_common/SKP_Silk_tables_sign.c index b84a3075004a9c5b3cfec5a2a808ba8e290a92e5..0d248a25bb81624f42a4a9a8c639ff9ea1ddaa37 100644 --- a/src_common/SKP_Silk_tables_sign.c +++ b/src_common/SKP_Silk_tables_sign.c @@ -27,8 +27,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "SKP_Silk_tables.h" -const SKP_uint16 SKP_Silk_sign_CDF[ 36 ] = +const SKP_uint8 SKP_Silk_sign_iCDF[ 36 ] = { + /* 37840, 36944, 36251, 35304, 34715, 35503, 34529, 34296, 34016, 47659, 44945, 42503, @@ -38,5 +39,15 @@ const SKP_uint16 SKP_Silk_sign_CDF[ 36 ] = 38252, 37795, 36637, 59159, 55630, 51806, 48073, 45036, 48416, 43857, 42678, 41146, + */ + 128, 128, 128, 128, + 128, 128, 128, 128, + 128, 128, 128, 128, + 128, 128, 128, 128, + 128, 128, 128, 128, + 128, 128, 128, 128, + 128, 128, 128, 128, + 128, 128, 128, 128, + 128, 128, 128, 128, }; diff --git a/src_common/SKP_Silk_tables_type_offset.c b/src_common/SKP_Silk_tables_type_offset.c deleted file mode 100644 index 5a50756370a25f1ce644d731d93a4b1e54d824f3..0000000000000000000000000000000000000000 --- a/src_common/SKP_Silk_tables_type_offset.c +++ /dev/null @@ -1,52 +0,0 @@ -/*********************************************************************** -Copyright (c) 2006-2010, Skype Limited. All rights reserved. -Redistribution and use in source and binary forms, with or without -modification, (subject to the limitations in the disclaimer below) -are permitted provided that the following conditions are met: -- Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. -- Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -- Neither the name of Skype Limited, nor the names of specific -contributors, may be used to endorse or promote products derived from -this software without specific prior written permission. -NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED -BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, -BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -***********************************************************************/ - -#include "SKP_Silk_tables.h" - -const SKP_uint16 SKP_Silk_type_offset_CDF[ 5 ] = { - 0, 37522, 41030, 44212, 65535 -}; - -const SKP_int SKP_Silk_type_offset_CDF_offset = 2; - - -const SKP_uint16 SKP_Silk_type_offset_joint_CDF[ 4 ][ 5 ] = -{ -{ - 0, 57686, 61230, 62358, 65535 -}, -{ - 0, 18346, 40067, 43659, 65535 -}, -{ - 0, 22694, 24279, 35507, 65535 -}, -{ - 0, 6067, 7215, 13010, 65535 -} -}; - diff --git a/src_common/SKP_Silk_tuning_parameters.h b/src_common/SKP_Silk_tuning_parameters.h index 8f67399b1646a7ba7ca6b043f6d5e91b3b2bbaec..21b62254ba65c1f815a6604303d9356df0090351 100644 --- a/src_common/SKP_Silk_tuning_parameters.h +++ b/src_common/SKP_Silk_tuning_parameters.h @@ -44,9 +44,9 @@ extern "C" #define FIND_PITCH_BANDWITH_EXPANSION 0.99f /* Threshold used by pitch estimator for early escape */ -#define FIND_PITCH_CORRELATION_THRESHOLD_HC_MODE 0.7f -#define FIND_PITCH_CORRELATION_THRESHOLD_MC_MODE 0.75f -#define FIND_PITCH_CORRELATION_THRESHOLD_LC_MODE 0.8f +#define FIND_PITCH_CORRELATION_THRESHOLD_HI_COMPL_MODE 0.7f +#define FIND_PITCH_CORRELATION_THRESHOLD_MID_COMPL_MODE 0.75f +#define FIND_PITCH_CORRELATION_THRESHOLD_LOW_COMPL_MODE 0.8f /*********************/ /* Linear prediction */ @@ -147,20 +147,11 @@ extern "C" #define HIGH_RATE_INPUT_TILT 0.1f /* parameter for reducing noise at the very low frequencies */ -#define LOW_FREQ_SHAPING 3.0f +#define LOW_FREQ_SHAPING 4.0f /* less reduction of noise at the very low frequencies for signals with low SNR at low frequencies */ #define LOW_QUALITY_LOW_FREQ_SHAPING_DECR 0.5f -/* noise floor to put a lower limit on the quantization step size */ -#define NOISE_FLOOR_dB 4.0f - -/* noise floor relative to active speech gain level */ -#define RELATIVE_MIN_GAIN_dB -50.0f - -/* subframe smoothing coefficient for determining active speech gain level (lower -> more smoothing) */ -#define GAIN_SMOOTHING_COEF 1e-3f - /* subframe smoothing coefficient for HarmBoost, HarmShapeGain, Tilt (lower -> more smoothing) */ #define SUBFR_SMTH_COEF 0.4f diff --git a/src_common/Silk_CommonFLP.vcproj b/src_common/Silk_CommonFLP.vcproj deleted file mode 100644 index 3a4bb39041bf9c49cefbe5ccc15dfb8d0f15bb2f..0000000000000000000000000000000000000000 --- a/src_common/Silk_CommonFLP.vcproj +++ /dev/null @@ -1,364 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="8.00" - Name="Silk_Common" - ProjectGUID="{0E29E502-AB22-4147-93A1-AC91528ED758}" - RootNamespace="Silk" - Keyword="Win32Proj" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory="$(SolutionDir)" - IntermediateDirectory="$(ConfigurationName)" - ConfigurationType="4" - CharacterSet="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - FavorSizeOrSpeed="0" - AdditionalIncludeDirectories="../../../celt-0.8.0/libcelt;../interface;../src_SigProc_FIX;../src_SigProc_FLP;../src_FLP" - PreprocessorDefinitions="WIN32;_DEBUG;_LIB;HAVE_CONFIG_H" - MinimalRebuild="true" - BasicRuntimeChecks="3" - RuntimeLibrary="1" - FloatingPointModel="2" - UsePrecompiledHeader="0" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="4" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - OutputFile="SKP_Silk_CommonFLP_Win32_debug.lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - CommandLine="" - /> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory="$(SolutionDir)" - IntermediateDirectory="$(ConfigurationName)" - ConfigurationType="4" - CharacterSet="1" - WholeProgramOptimization="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - InlineFunctionExpansion="0" - FavorSizeOrSpeed="0" - AdditionalIncludeDirectories="../../../celt-0.8.0/libcelt;../interface;../src_SigProc_FIX;../src_SigProc_FLP;../src_FLP" - PreprocessorDefinitions="WIN32;NDEBUG;_LIB;HAVE_CONFIG_H" - GeneratePreprocessedFile="0" - RuntimeLibrary="0" - FloatingPointModel="2" - UsePrecompiledHeader="0" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLibrarianTool" - OutputFile="SKP_Silk_CommonFLP_Win32_mt.lib" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCPostBuildEventTool" - CommandLine="" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="Source Files" - Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx" - UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" - > - <File - RelativePath=".\SKP_Silk_CNG.c" - > - </File> - <File - RelativePath=".\SKP_Silk_code_signs.c" - > - </File> - <File - RelativePath=".\SKP_Silk_create_init_destroy.c" - > - </File> - <File - RelativePath=".\SKP_Silk_dec_SDK_API.c" - > - </File> - <File - RelativePath=".\SKP_Silk_decode_core.c" - > - </File> - <File - RelativePath=".\SKP_Silk_decode_frame.c" - > - </File> - <File - RelativePath=".\SKP_Silk_decode_indices.c" - > - </File> - <File - RelativePath=".\SKP_Silk_decode_parameters.c" - > - </File> - <File - RelativePath=".\SKP_Silk_decode_pulses.c" - > - </File> - <File - RelativePath=".\SKP_Silk_decoder_set_fs.c" - > - </File> - <File - RelativePath=".\SKP_Silk_detect_SWB_input.c" - > - </File> - <File - RelativePath=".\SKP_Silk_enc_API.c" - > - </File> - <File - RelativePath=".\SKP_Silk_encode_parameters.c" - > - </File> - <File - RelativePath=".\SKP_Silk_encode_pulses.c" - > - </File> - <File - RelativePath=".\SKP_Silk_gain_quant.c" - > - </File> - <File - RelativePath=".\SKP_Silk_interpolate.c" - > - </File> - <File - RelativePath=".\SKP_Silk_LBRR_reset.c" - > - </File> - <File - RelativePath=".\SKP_Silk_LP_variable_cutoff.c" - > - </File> - <File - RelativePath=".\SKP_Silk_NLSF2A_stable.c" - > - </File> - <File - RelativePath=".\SKP_Silk_NLSF_MSVQ_decode.c" - > - </File> - <File - RelativePath=".\SKP_Silk_NSQ.c" - > - </File> - <File - RelativePath=".\SKP_Silk_NSQ_del_dec.c" - > - </File> - <File - RelativePath=".\SKP_Silk_PLC.c" - > - </File> - <File - RelativePath=".\SKP_Silk_pulses_to_bytes.c" - > - </File> - <File - RelativePath=".\SKP_Silk_range_coder.c" - > - </File> - <File - RelativePath=".\SKP_Silk_shell_coder.c" - > - </File> - <File - RelativePath=".\SKP_Silk_tables_gain.c" - > - </File> - <File - RelativePath=".\SKP_Silk_tables_LTP.c" - > - </File> - <File - RelativePath=".\SKP_Silk_tables_NLSF_CB0_10.c" - > - </File> - <File - RelativePath=".\SKP_Silk_tables_NLSF_CB0_16.c" - > - </File> - <File - RelativePath=".\SKP_Silk_tables_NLSF_CB1_10.c" - > - </File> - <File - RelativePath=".\SKP_Silk_tables_NLSF_CB1_16.c" - > - </File> - <File - RelativePath=".\SKP_Silk_tables_other.c" - > - </File> - <File - RelativePath=".\SKP_Silk_tables_pitch_lag.c" - > - </File> - <File - RelativePath=".\SKP_Silk_tables_pulses_per_block.c" - > - </File> - <File - RelativePath=".\SKP_Silk_tables_sign.c" - > - </File> - <File - RelativePath=".\SKP_Silk_tables_type_offset.c" - > - </File> - <File - RelativePath=".\SKP_Silk_VAD.c" - > - </File> - </Filter> - <Filter - Name="Header Files" - Filter="h;hpp;hxx;hm;inl;inc;xsd" - UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}" - > - <File - RelativePath=".\SKP_Silk_define.h" - > - </File> - <File - RelativePath=".\SKP_Silk_main.h" - > - </File> - <File - RelativePath=".\SKP_Silk_perceptual_parameters.h" - > - </File> - <File - RelativePath=".\SKP_Silk_PLC.h" - > - </File> - <File - RelativePath=".\SKP_Silk_structs.h" - > - </File> - <File - RelativePath=".\SKP_Silk_tables.h" - > - </File> - <File - RelativePath=".\SKP_Silk_tables_NLSF_CB0_10.h" - > - </File> - <File - RelativePath=".\SKP_Silk_tables_NLSF_CB0_16.h" - > - </File> - <File - RelativePath=".\SKP_Silk_tables_NLSF_CB1_10.h" - > - </File> - <File - RelativePath=".\SKP_Silk_tables_NLSF_CB1_16.h" - > - </File> - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/src_common/src_common.vcxproj b/src_common/src_common.vcxproj new file mode 100644 index 0000000000000000000000000000000000000000..011cf3e58b2ea5823d25fb9514c5c3f93d2c275a --- /dev/null +++ b/src_common/src_common.vcxproj @@ -0,0 +1,131 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|Win32"> + <Configuration>Debug</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{C303D2FC-FF97-49B8-9DDD-467B4C9A0B16}</ProjectGuid> + <Keyword>Win32Proj</Keyword> + <RootNamespace>src_common</RootNamespace> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <CharacterSet>Unicode</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <WholeProgramOptimization>true</WholeProgramOptimization> + <CharacterSet>Unicode</CharacterSet> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="ExtensionSettings"> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup /> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <ClCompile> + <PrecompiledHeader> + </PrecompiledHeader> + <WarningLevel>Level3</WarningLevel> + <Optimization>Disabled</Optimization> + <PreprocessorDefinitions>HAVE_CONFIG_H;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>../interface/;../src_SigProc_FIX;../src_SigProc_FLP;../src_FIX;../src_FLP;../../celt/libcelt</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Windows</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <PrecompiledHeader> + </PrecompiledHeader> + <Optimization>MaxSpeed</Optimization> + <FunctionLevelLinking>true</FunctionLevelLinking> + <IntrinsicFunctions>true</IntrinsicFunctions> + <PreprocessorDefinitions>HAVE_CONFIG_H;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>../interface/;../src_SigProc_FIX;../src_SigProc_FLP;../src_FIX;../src_FLP;../../celt/libcelt</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Windows</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <OptimizeReferences>true</OptimizeReferences> + </Link> + </ItemDefinitionGroup> + <ItemGroup> + <None Include="ReadMe.txt" /> + </ItemGroup> + <ItemGroup> + <ClInclude Include="SKP_Silk_define.h" /> + <ClInclude Include="SKP_Silk_main.h" /> + <ClInclude Include="SKP_Silk_PLC.h" /> + <ClInclude Include="SKP_Silk_setup_complexity.h" /> + <ClInclude Include="SKP_Silk_structs.h" /> + <ClInclude Include="SKP_Silk_tables.h" /> + <ClInclude Include="SKP_Silk_tables_NLSF_CB.h" /> + <ClInclude Include="SKP_Silk_tuning_parameters.h" /> + </ItemGroup> + <ItemGroup> + <ClCompile Include="SKP_Silk_CNG.c" /> + <ClCompile Include="SKP_Silk_code_signs.c" /> + <ClCompile Include="SKP_Silk_control_audio_bandwidth.c" /> + <ClCompile Include="SKP_Silk_create_init_destroy.c" /> + <ClCompile Include="SKP_Silk_decoder_set_fs.c" /> + <ClCompile Include="SKP_Silk_decode_core.c" /> + <ClCompile Include="SKP_Silk_decode_frame.c" /> + <ClCompile Include="SKP_Silk_decode_indices.c" /> + <ClCompile Include="SKP_Silk_decode_parameters.c" /> + <ClCompile Include="SKP_Silk_decode_pulses.c" /> + <ClCompile Include="SKP_Silk_dec_API.c" /> + <ClCompile Include="SKP_Silk_detect_SWB_input.c" /> + <ClCompile Include="SKP_Silk_encode_parameters.c" /> + <ClCompile Include="SKP_Silk_encode_pulses.c" /> + <ClCompile Include="SKP_Silk_enc_API.c" /> + <ClCompile Include="SKP_Silk_gain_quant.c" /> + <ClCompile Include="SKP_Silk_interpolate.c" /> + <ClCompile Include="SKP_Silk_LBRR_reset.c" /> + <ClCompile Include="SKP_Silk_LP_variable_cutoff.c" /> + <ClCompile Include="SKP_Silk_NLSF2A_stable.c" /> + <ClCompile Include="SKP_Silk_NLSF_MSVQ_decode.c" /> + <ClCompile Include="SKP_Silk_NSQ.c" /> + <ClCompile Include="SKP_Silk_NSQ_del_dec.c" /> + <ClCompile Include="SKP_Silk_PLC.c" /> + <ClCompile Include="SKP_Silk_pulses_to_bytes.c" /> + <ClCompile Include="SKP_Silk_quant_LTP_gains.c" /> + <ClCompile Include="SKP_Silk_range_coder.c" /> + <ClCompile Include="SKP_Silk_shell_coder.c" /> + <ClCompile Include="SKP_Silk_tables_gain.c" /> + <ClCompile Include="SKP_Silk_tables_LTP.c" /> + <ClCompile Include="SKP_Silk_tables_NLSF_CB0_10.c" /> + <ClCompile Include="SKP_Silk_tables_NLSF_CB0_16.c" /> + <ClCompile Include="SKP_Silk_tables_NLSF_CB1_10.c" /> + <ClCompile Include="SKP_Silk_tables_NLSF_CB1_16.c" /> + <ClCompile Include="SKP_Silk_tables_other.c" /> + <ClCompile Include="SKP_Silk_tables_pitch_lag.c" /> + <ClCompile Include="SKP_Silk_tables_pulses_per_block.c" /> + <ClCompile Include="SKP_Silk_tables_sign.c" /> + <ClCompile Include="SKP_Silk_VAD.c" /> + <ClCompile Include="SKP_Silk_VQ_WMat_EC.c" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project> \ No newline at end of file diff --git a/src_common/src_common.vcxproj.filters b/src_common/src_common.vcxproj.filters new file mode 100644 index 0000000000000000000000000000000000000000..ad41282dd963815eb4c61b05586c534200a88592 --- /dev/null +++ b/src_common/src_common.vcxproj.filters @@ -0,0 +1,168 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Source Files"> + <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> + <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> + </Filter> + <Filter Include="Header Files"> + <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> + <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions> + </Filter> + <Filter Include="Resource Files"> + <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> + <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> + </Filter> + </ItemGroup> + <ItemGroup> + <None Include="ReadMe.txt" /> + </ItemGroup> + <ItemGroup> + <ClInclude Include="SKP_Silk_define.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="SKP_Silk_main.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="SKP_Silk_PLC.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="SKP_Silk_structs.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="SKP_Silk_tables.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="SKP_Silk_tuning_parameters.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="SKP_Silk_setup_complexity.h"> + <Filter>Header Files</Filter> + </ClInclude> + <ClInclude Include="SKP_Silk_tables_NLSF_CB.h"> + <Filter>Header Files</Filter> + </ClInclude> + </ItemGroup> + <ItemGroup> + <ClCompile Include="SKP_Silk_CNG.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_code_signs.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_create_init_destroy.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_decode_core.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_decode_frame.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_decode_indices.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_decode_parameters.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_decode_pulses.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_decoder_set_fs.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_detect_SWB_input.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_enc_API.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_encode_parameters.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_encode_pulses.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_gain_quant.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_interpolate.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_LBRR_reset.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_LP_variable_cutoff.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_NLSF_MSVQ_decode.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_NLSF2A_stable.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_NSQ.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_NSQ_del_dec.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_PLC.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_pulses_to_bytes.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_range_coder.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_shell_coder.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_tables_gain.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_tables_LTP.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_tables_NLSF_CB0_10.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_tables_NLSF_CB0_16.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_tables_NLSF_CB1_10.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_tables_NLSF_CB1_16.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_tables_other.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_tables_pitch_lag.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_tables_pulses_per_block.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_tables_sign.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_VAD.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_dec_API.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_control_audio_bandwidth.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_quant_LTP_gains.c"> + <Filter>Source Files</Filter> + </ClCompile> + <ClCompile Include="SKP_Silk_VQ_WMat_EC.c"> + <Filter>Source Files</Filter> + </ClCompile> + </ItemGroup> +</Project> \ No newline at end of file diff --git a/test/Dec_SDK.vcproj b/test/Dec_SDK.vcproj deleted file mode 100644 index d2c2b186744c7e33267b704e4466a6371d0ec7ca..0000000000000000000000000000000000000000 --- a/test/Dec_SDK.vcproj +++ /dev/null @@ -1,221 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="8.00" - Name="Dec" - ProjectGUID="{82685D7F-0589-42BD-877C-31A952D53A8E}" - RootNamespace="Test" - Keyword="Win32Proj" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory="$(SolutionDir)" - IntermediateDirectory="$(ConfigurationName)_Dec" - ConfigurationType="1" - CharacterSet="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="../../../celt-0.8.0/libcelt;../interface;../src_SigProc_FIX" - PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;COMPILE_SDK" - MinimalRebuild="true" - BasicRuntimeChecks="3" - RuntimeLibrary="1" - UsePrecompiledHeader="0" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="4" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - OutputFile="$(OutDir)\Decoder_debug.exe" - LinkIncremental="2" - AdditionalLibraryDirectories="" - IgnoreAllDefaultLibraries="false" - IgnoreDefaultLibraryNames="" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb" - SubSystem="1" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCWebDeploymentTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory="$(SolutionDir)" - IntermediateDirectory="$(ConfigurationName)_Dec" - ConfigurationType="1" - CharacterSet="1" - WholeProgramOptimization="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="../../../celt-0.8.0/libcelt;../interface;../src_SigProc_FIX" - PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;COMPILE_SDK" - RuntimeLibrary="0" - FloatingPointModel="2" - UsePrecompiledHeader="0" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalOptions="/fixed:no" - OutputFile="$(OutDir)\Decoder.exe" - LinkIncremental="1" - AdditionalLibraryDirectories="" - IgnoreDefaultLibraryNames="" - GenerateDebugInformation="false" - SubSystem="1" - OptimizeReferences="2" - EnableCOMDATFolding="2" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCWebDeploymentTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="Source Files" - Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx" - UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" - > - <File - RelativePath=".\Decoder.c" - > - </File> - <File - RelativePath=".\SKP_debug.c" - > - </File> - </Filter> - <Filter - Name="interface" - > - <File - RelativePath="..\interface\SKP_Silk_control.h" - > - </File> - <File - RelativePath="..\interface\SKP_Silk_errors.h" - > - </File> - <File - RelativePath="..\interface\SKP_Silk_SDK_API.h" - > - </File> - <File - RelativePath="..\interface\SKP_Silk_typedef.h" - > - </File> - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/test/Enc_SDK.vcproj b/test/Enc_SDK.vcproj deleted file mode 100644 index b3269b9e540f2fbb296d7de4022c790d4b90f117..0000000000000000000000000000000000000000 --- a/test/Enc_SDK.vcproj +++ /dev/null @@ -1,221 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="8.00" - Name="Enc" - ProjectGUID="{6D97A8EF-5724-4D85-8BF4-C583714BBA78}" - RootNamespace="Enc" - Keyword="Win32Proj" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory="$(SolutionDir)" - IntermediateDirectory="$(ConfigurationName)\Enc" - ConfigurationType="1" - CharacterSet="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="../../../celt-0.8.0/libcelt;../interface;../src_SigProc_FIX" - PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE" - MinimalRebuild="true" - BasicRuntimeChecks="3" - RuntimeLibrary="1" - UsePrecompiledHeader="0" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="4" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - OutputFile="$(OutDir)\Encoder_debug.exe" - LinkIncremental="2" - AdditionalLibraryDirectories="" - IgnoreAllDefaultLibraries="false" - IgnoreDefaultLibraryNames="" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb" - SubSystem="1" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCWebDeploymentTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory="$(SolutionDir)" - IntermediateDirectory="$(ConfigurationName)_Enc" - ConfigurationType="1" - CharacterSet="1" - WholeProgramOptimization="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="../../../celt-0.8.0/libcelt;../interface;../src_SigProc_FIX" - PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" - RuntimeLibrary="0" - FloatingPointModel="2" - UsePrecompiledHeader="0" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalOptions="/fixed:no" - OutputFile="$(OutDir)\Encoder.exe" - LinkIncremental="1" - AdditionalLibraryDirectories="" - IgnoreDefaultLibraryNames="" - GenerateDebugInformation="false" - SubSystem="1" - OptimizeReferences="2" - EnableCOMDATFolding="2" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCWebDeploymentTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="Source Files" - Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx" - UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" - > - <File - RelativePath=".\Encoder.c" - > - </File> - <File - RelativePath=".\SKP_debug.c" - > - </File> - </Filter> - <Filter - Name="interface" - > - <File - RelativePath="..\interface\SKP_Silk_control.h" - > - </File> - <File - RelativePath="..\interface\SKP_Silk_errors.h" - > - </File> - <File - RelativePath="..\interface\SKP_Silk_SDK_API.h" - > - </File> - <File - RelativePath="..\interface\SKP_Silk_typedef.h" - > - </File> - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/test/SKP_debug.c b/test/SKP_debug.c deleted file mode 100644 index 31468f739b9cd7a3a03e322a518447f2dea0ee11..0000000000000000000000000000000000000000 --- a/test/SKP_debug.c +++ /dev/null @@ -1,169 +0,0 @@ -/*********************************************************************** -Copyright (c) 2006-2010, Skype Limited. All rights reserved. -Redistribution and use in source and binary forms, with or without -modification, (subject to the limitations in the disclaimer below) -are permitted provided that the following conditions are met: -- Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. -- Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -- Neither the name of Skype Limited, nor the names of specific -contributors, may be used to endorse or promote products derived from -this software without specific prior written permission. -NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED -BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND -CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, -BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF -USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -***********************************************************************/ - -/* * - * SKP_debug.c * - * * - * This contains code to help debugging * - * * - * Copyright 2009 (c), Skype Limited * - * Date: 090629 * - * */ - -#include "SKP_debug.h" -#include "../src_SigProc_FIX/SKP_Silk_SigProc_FIX.h" - -#ifdef _WIN32 - -#if (defined(_WIN32) || defined(_WINCE)) -#include <windows.h> /* timer */ -#else // Linux or Mac -#include <sys/time.h> -#endif - -unsigned long GetHighResolutionTime() /* O: time in usec*/ -{ - /* Returns a time counter in microsec */ - /* the resolution is platform dependent */ - /* but is typically 1.62 us resolution */ - LARGE_INTEGER lpPerformanceCount; - LARGE_INTEGER lpFrequency; - QueryPerformanceCounter(&lpPerformanceCount); - QueryPerformanceFrequency(&lpFrequency); - return (unsigned long)((1000000*(lpPerformanceCount.QuadPart)) / lpFrequency.QuadPart); -} -#else // Linux or Mac -unsigned long GetHighResolutionTime() /* O: time in usec*/ -{ - struct timeval tv; - gettimeofday(&tv, 0); - return((tv.tv_sec*1000000)+(tv.tv_usec)); -} -#endif - -#if SKP_TIC_TOC - -int SKP_Timer_nTimers = 0; -int SKP_Timer_depth_ctr = 0; -char SKP_Timer_tags[SKP_NUM_TIMERS_MAX][SKP_NUM_TIMERS_MAX_TAG_LEN]; -#ifdef WIN32 -LARGE_INTEGER SKP_Timer_start[SKP_NUM_TIMERS_MAX]; -#else -unsigned long SKP_Timer_start[SKP_NUM_TIMERS_MAX]; -#endif -unsigned int SKP_Timer_cnt[SKP_NUM_TIMERS_MAX]; -SKP_int64 SKP_Timer_min[SKP_NUM_TIMERS_MAX]; -SKP_int64 SKP_Timer_sum[SKP_NUM_TIMERS_MAX]; -SKP_int64 SKP_Timer_max[SKP_NUM_TIMERS_MAX]; -SKP_int64 SKP_Timer_depth[SKP_NUM_TIMERS_MAX]; - -#ifdef WIN32 -void SKP_TimerSave(char *file_name) -{ - if( SKP_Timer_nTimers > 0 ) - { - int k; - FILE *fp; - LARGE_INTEGER lpFrequency; - LARGE_INTEGER lpPerformanceCount1, lpPerformanceCount2; - int del = 0x7FFFFFFF; - double avg, sum_avg; - /* estimate overhead of calling performance counters */ - for( k = 0; k < 1000; k++ ) { - QueryPerformanceCounter(&lpPerformanceCount1); - QueryPerformanceCounter(&lpPerformanceCount2); - lpPerformanceCount2.QuadPart -= lpPerformanceCount1.QuadPart; - if( (int)lpPerformanceCount2.LowPart < del ) - del = lpPerformanceCount2.LowPart; - } - QueryPerformanceFrequency(&lpFrequency); - /* print results to file */ - sum_avg = 0.0f; - for( k = 0; k < SKP_Timer_nTimers; k++ ) { - if (SKP_Timer_depth[k] == 0) { - sum_avg += (1e6 * SKP_Timer_sum[k] / SKP_Timer_cnt[k] - del) / lpFrequency.QuadPart * SKP_Timer_cnt[k]; - } - } - fp = fopen(file_name, "w"); - fprintf(fp, " min avg %% max count\n"); - for( k = 0; k < SKP_Timer_nTimers; k++ ) { - if (SKP_Timer_depth[k] == 0) { - fprintf(fp, "%-28s", SKP_Timer_tags[k]); - } else if (SKP_Timer_depth[k] == 1) { - fprintf(fp, " %-27s", SKP_Timer_tags[k]); - } else if (SKP_Timer_depth[k] == 2) { - fprintf(fp, " %-26s", SKP_Timer_tags[k]); - } else if (SKP_Timer_depth[k] == 3) { - fprintf(fp, " %-25s", SKP_Timer_tags[k]); - } else { - fprintf(fp, " %-24s", SKP_Timer_tags[k]); - } - avg = (1e6 * SKP_Timer_sum[k] / SKP_Timer_cnt[k] - del) / lpFrequency.QuadPart; - fprintf(fp, "%8.2f", (1e6 * (SKP_max_64(SKP_Timer_min[k] - del, 0))) / lpFrequency.QuadPart); - fprintf(fp, "%12.2f %6.2f", avg, 100.0 * avg / sum_avg * SKP_Timer_cnt[k]); - fprintf(fp, "%12.2f", (1e6 * (SKP_max_64(SKP_Timer_max[k] - del, 0))) / lpFrequency.QuadPart); - fprintf(fp, "%10d\n", SKP_Timer_cnt[k]); - } - fprintf(fp, " microseconds\n"); - fclose(fp); - } -} -#else -void SKP_TimerSave(char *file_name) -{ - if( SKP_Timer_nTimers > 0 ) - { - int k; - FILE *fp; - /* print results to file */ - fp = fopen(file_name, "w"); - fprintf(fp, " min avg max count\n"); - for( k = 0; k < SKP_Timer_nTimers; k++ ) - { - if (SKP_Timer_depth[k] == 0) { - fprintf(fp, "%-28s", SKP_Timer_tags[k]); - } else if (SKP_Timer_depth[k] == 1) { - fprintf(fp, " %-27s", SKP_Timer_tags[k]); - } else if (SKP_Timer_depth[k] == 2) { - fprintf(fp, " %-26s", SKP_Timer_tags[k]); - } else if (SKP_Timer_depth[k] == 3) { - fprintf(fp, " %-25s", SKP_Timer_tags[k]); - } else { - fprintf(fp, " %-24s", SKP_Timer_tags[k]); - } - fprintf(fp, "%d ", SKP_Timer_min[k]); - fprintf(fp, "%f ", (double)SKP_Timer_sum[k] / (double)SKP_Timer_cnt[k]); - fprintf(fp, "%d ", SKP_Timer_max[k]); - fprintf(fp, "%10d\n", SKP_Timer_cnt[k]); - } - fprintf(fp, " microseconds\n"); - fclose(fp); - } -} -#endif - -#endif /* SKP_TIC_TOC */ diff --git a/test/SignalCompare.vcproj b/test/SignalCompare.vcproj deleted file mode 100644 index d708124ac729353948884bbe5a285eb54f7dde64..0000000000000000000000000000000000000000 --- a/test/SignalCompare.vcproj +++ /dev/null @@ -1,197 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="8,00" - Name="SignalCompare" - ProjectGUID="{7FE8F544-9175-40C3-A187-7F15CE9A75D8}" - RootNamespace="Test" - Keyword="Win32Proj" - > - <Platforms> - <Platform - Name="Win32" - /> - </Platforms> - <ToolFiles> - </ToolFiles> - <Configurations> - <Configuration - Name="Debug|Win32" - OutputDirectory="$(SolutionDir)" - IntermediateDirectory="$(ConfigurationName)_SigCmp" - ConfigurationType="1" - CharacterSet="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="..\interface;..\src_SigProc_FIX" - PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE" - MinimalRebuild="true" - BasicRuntimeChecks="3" - RuntimeLibrary="1" - UsePrecompiledHeader="0" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="4" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - OutputFile="SignalCompare_debug.exe" - LinkIncremental="2" - AdditionalLibraryDirectories="" - IgnoreAllDefaultLibraries="false" - IgnoreDefaultLibraryNames="" - GenerateDebugInformation="true" - ProgramDatabaseFile="$(TargetDir)$(TargetName).pdb" - SubSystem="1" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCWebDeploymentTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - <Configuration - Name="Release|Win32" - OutputDirectory="$(SolutionDir)" - IntermediateDirectory="$(ConfigurationName)_SigCmp" - ConfigurationType="1" - CharacterSet="1" - WholeProgramOptimization="1" - > - <Tool - Name="VCPreBuildEventTool" - /> - <Tool - Name="VCCustomBuildTool" - /> - <Tool - Name="VCXMLDataGeneratorTool" - /> - <Tool - Name="VCWebServiceProxyGeneratorTool" - /> - <Tool - Name="VCMIDLTool" - /> - <Tool - Name="VCCLCompilerTool" - AdditionalIncludeDirectories="..\interface;..\src_SigProc_FIX" - PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" - RuntimeLibrary="0" - FloatingPointModel="2" - UsePrecompiledHeader="0" - WarningLevel="3" - Detect64BitPortabilityProblems="true" - DebugInformationFormat="3" - /> - <Tool - Name="VCManagedResourceCompilerTool" - /> - <Tool - Name="VCResourceCompilerTool" - /> - <Tool - Name="VCPreLinkEventTool" - /> - <Tool - Name="VCLinkerTool" - AdditionalOptions="/fixed:no" - OutputFile="$(SolutionDir)SignalCompare.exe" - LinkIncremental="1" - AdditionalLibraryDirectories="" - IgnoreDefaultLibraryNames="" - GenerateDebugInformation="false" - SubSystem="1" - OptimizeReferences="2" - EnableCOMDATFolding="2" - TargetMachine="1" - /> - <Tool - Name="VCALinkTool" - /> - <Tool - Name="VCManifestTool" - /> - <Tool - Name="VCXDCMakeTool" - /> - <Tool - Name="VCBscMakeTool" - /> - <Tool - Name="VCFxCopTool" - /> - <Tool - Name="VCAppVerifierTool" - /> - <Tool - Name="VCWebDeploymentTool" - /> - <Tool - Name="VCPostBuildEventTool" - /> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="Source Files" - Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx" - UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" - > - <File - RelativePath=".\signalCompare.c" - > - </File> - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/test_silk_dec/test_silk_dec.vcxproj b/test_silk_dec/test_silk_dec.vcxproj new file mode 100644 index 0000000000000000000000000000000000000000..7cdf9af05508012ebeec55bc45b64f513b6a8a16 --- /dev/null +++ b/test_silk_dec/test_silk_dec.vcxproj @@ -0,0 +1,91 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|Win32"> + <Configuration>Debug</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{8CA2DBCB-F28E-4022-ACD7-E2C23A15827F}</ProjectGuid> + <Keyword>Win32Proj</Keyword> + <RootNamespace>test_silk_dec</RootNamespace> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <CharacterSet>Unicode</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <WholeProgramOptimization>true</WholeProgramOptimization> + <CharacterSet>Unicode</CharacterSet> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="ExtensionSettings"> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <LinkIncremental>true</LinkIncremental> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <LinkIncremental>false</LinkIncremental> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <ClCompile> + <PrecompiledHeader> + </PrecompiledHeader> + <WarningLevel>Level3</WarningLevel> + <Optimization>Disabled</Optimization> + <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>..\interface;..\..\celt\libcelt;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + <AdditionalLibraryDirectories>$(SolutionDir)$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + <AdditionalDependencies>libcelt.lib;src_common.lib;src_FIX.lib;src_FLP.lib;src_SigProc_FIX.lib;src_SigProc_FLP.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <PrecompiledHeader> + </PrecompiledHeader> + <Optimization>MaxSpeed</Optimization> + <FunctionLevelLinking>true</FunctionLevelLinking> + <IntrinsicFunctions>true</IntrinsicFunctions> + <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>..\interface;..\..\celt\libcelt;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <OptimizeReferences>true</OptimizeReferences> + <AdditionalLibraryDirectories>$(SolutionDir)$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + <AdditionalDependencies>libcelt.lib;src_common.lib;src_FIX.lib;src_FLP.lib;src_SigProc_FIX.lib;src_SigProc_FLP.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies> + </Link> + </ItemDefinitionGroup> + <ItemGroup> + <ClCompile Include="..\test\Decoder.c" /> + </ItemGroup> + <ItemGroup> + <ClInclude Include="..\interface\SKP_Silk_SDK_API.h" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project> \ No newline at end of file diff --git a/test_silk_dec/test_silk_dec.vcxproj.filters b/test_silk_dec/test_silk_dec.vcxproj.filters new file mode 100644 index 0000000000000000000000000000000000000000..bd33f587efc0a264f7013512bb37f2cafebdeafa --- /dev/null +++ b/test_silk_dec/test_silk_dec.vcxproj.filters @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Source Files"> + <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> + <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> + </Filter> + <Filter Include="Header Files"> + <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> + <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions> + </Filter> + <Filter Include="Resource Files"> + <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> + <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> + </Filter> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\test\Decoder.c"> + <Filter>Source Files</Filter> + </ClCompile> + </ItemGroup> + <ItemGroup> + <ClInclude Include="..\interface\SKP_Silk_SDK_API.h"> + <Filter>Header Files</Filter> + </ClInclude> + </ItemGroup> +</Project> \ No newline at end of file diff --git a/test_silk_enc/test_silk_enc.vcxproj b/test_silk_enc/test_silk_enc.vcxproj new file mode 100644 index 0000000000000000000000000000000000000000..cf33d594de07a4a59fd9826ed05ed952c6aad8d5 --- /dev/null +++ b/test_silk_enc/test_silk_enc.vcxproj @@ -0,0 +1,88 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|Win32"> + <Configuration>Debug</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{38945839-ADA4-40CA-9C43-092FD47960A0}</ProjectGuid> + <Keyword>Win32Proj</Keyword> + <RootNamespace>test_silk_enc</RootNamespace> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <CharacterSet>Unicode</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <WholeProgramOptimization>true</WholeProgramOptimization> + <CharacterSet>Unicode</CharacterSet> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="ExtensionSettings"> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <LinkIncremental>true</LinkIncremental> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <LinkIncremental>false</LinkIncremental> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <ClCompile> + <PrecompiledHeader> + </PrecompiledHeader> + <WarningLevel>Level3</WarningLevel> + <Optimization>Disabled</Optimization> + <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>..\interface;..\..\celt\libcelt;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + <AdditionalLibraryDirectories>$(SolutionDir)$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + <AdditionalDependencies>libcelt.lib;src_common.lib;src_FIX.lib;src_FLP.lib;src_SigProc_FIX.lib;src_SigProc_FLP.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <PrecompiledHeader> + </PrecompiledHeader> + <Optimization>MaxSpeed</Optimization> + <FunctionLevelLinking>true</FunctionLevelLinking> + <IntrinsicFunctions>true</IntrinsicFunctions> + <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>..\interface;..\..\celt\libcelt;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <OptimizeReferences>true</OptimizeReferences> + <AdditionalLibraryDirectories>$(SolutionDir)$(Configuration);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + <AdditionalDependencies>libcelt.lib;src_common.lib;src_FIX.lib;src_FLP.lib;src_SigProc_FIX.lib;src_SigProc_FLP.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies> + </Link> + </ItemDefinitionGroup> + <ItemGroup> + <ClCompile Include="..\test\Encoder.c" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project> \ No newline at end of file diff --git a/test_silk_enc/test_silk_enc.vcxproj.filters b/test_silk_enc/test_silk_enc.vcxproj.filters new file mode 100644 index 0000000000000000000000000000000000000000..c83754490526791c7225d065a3424329d2b5d55f --- /dev/null +++ b/test_silk_enc/test_silk_enc.vcxproj.filters @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Source Files"> + <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> + <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> + </Filter> + <Filter Include="Header Files"> + <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> + <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions> + </Filter> + <Filter Include="Resource Files"> + <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> + <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> + </Filter> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\test\Encoder.c"> + <Filter>Source Files</Filter> + </ClCompile> + </ItemGroup> +</Project> \ No newline at end of file