diff options
author | Koen Vos <koenvos@users.noreply.github.com> | 2016-02-19 10:38:31 +0300 |
---|---|---|
committer | Jean-Marc Valin <jmvalin@jmvalin.ca> | 2016-03-26 01:18:29 +0300 |
commit | 3e370f6290ce98bda9df7d1b473ea1ea6606aa5c (patch) | |
tree | d24796e7bd18e9f1430e54d0e6f5537a9b3cee43 | |
parent | 1286872f821a07e72858315342e047092618d2a8 (diff) |
undo some loop unrolling
-rw-r--r-- | Makefile.unix | 2 | ||||
-rw-r--r-- | silk/fixed/pitch_analysis_core_FIX.c | 13 | ||||
-rw-r--r-- | silk/float/find_pred_coefs_FLP.c | 3 | ||||
-rw-r--r-- | silk/float/pitch_analysis_core_FLP.c | 11 |
4 files changed, 8 insertions, 21 deletions
diff --git a/Makefile.unix b/Makefile.unix index 5e3c393e..b13230e8 100644 --- a/Makefile.unix +++ b/Makefile.unix @@ -1,7 +1,7 @@ #################### COMPILE OPTIONS ####################### # Uncomment this for fixed-point build -FIXED_POINT=1 +#FIXED_POINT=1 # It is strongly recommended to uncomment one of these # VAR_ARRAYS: Use C99 variable-length arrays for stack allocation diff --git a/silk/fixed/pitch_analysis_core_FIX.c b/silk/fixed/pitch_analysis_core_FIX.c index daf313b3..2c5a4386 100644 --- a/silk/fixed/pitch_analysis_core_FIX.c +++ b/silk/fixed/pitch_analysis_core_FIX.c @@ -141,6 +141,7 @@ opus_int silk_pitch_analysis_core( /* O Voicing estimate: 0 /* Downscale input if necessary */ silk_sum_sqr_shift( &energy, &shift, frame_unscaled, frame_length ); + shift += 2 - silk_CLZ32( energy ); /* at least one bit headroom */ if( shift > 0 ) { shift = silk_RSHIFT( shift + 1, 1 ); ALLOC( frame_scaled, frame_length, opus_int16 ); @@ -174,16 +175,10 @@ opus_int silk_pitch_analysis_core( /* O Voicing estimate: 0 silk_resampler_down2( filt_state, frame_4kHz, frame_8kHz, frame_length_8kHz ); /* Low-pass filter */ - silk_assert( frame_length_4kHz & 3 == 0 ); - for( i = frame_length_4kHz - 1; i > 4; i -= 4 ) { - frame_4kHz[ i - 0 ] = silk_ADD_SAT16( frame_4kHz[ i - 0 ], frame_4kHz[ i - 1 ] ); - frame_4kHz[ i - 1 ] = silk_ADD_SAT16( frame_4kHz[ i - 1 ], frame_4kHz[ i - 2 ] ); - frame_4kHz[ i - 2 ] = silk_ADD_SAT16( frame_4kHz[ i - 2 ], frame_4kHz[ i - 3 ] ); - frame_4kHz[ i - 3 ] = silk_ADD_SAT16( frame_4kHz[ i - 3 ], frame_4kHz[ i - 4 ] ); + for( i = frame_length_4kHz - 1; i > 0; i-- ) { + frame_4kHz[ i ] = silk_ADD_SAT16( frame_4kHz[ i ], frame_4kHz[ i - 1 ] ); } - frame_4kHz[ i - 0 ] = silk_ADD_SAT16( frame_4kHz[ i - 0 ], frame_4kHz[ i - 1 ] ); - frame_4kHz[ i - 1 ] = silk_ADD_SAT16( frame_4kHz[ i - 1 ], frame_4kHz[ i - 2 ] ); - frame_4kHz[ i - 2 ] = silk_ADD_SAT16( frame_4kHz[ i - 2 ], frame_4kHz[ i - 3 ] ); + /****************************************************************************** * FIRST STAGE, operating in 4 khz diff --git a/silk/float/find_pred_coefs_FLP.c b/silk/float/find_pred_coefs_FLP.c index 9fb53232..0c8a896f 100644 --- a/silk/float/find_pred_coefs_FLP.c +++ b/silk/float/find_pred_coefs_FLP.c @@ -43,7 +43,7 @@ void silk_find_pred_coefs_FLP( opus_int i; silk_float XXLTP[ MAX_NB_SUBFR * LTP_ORDER * LTP_ORDER ]; silk_float xXLTP[ MAX_NB_SUBFR * LTP_ORDER ]; - silk_float invGains[ MAX_NB_SUBFR ], Wght[ MAX_NB_SUBFR ]; + silk_float invGains[ MAX_NB_SUBFR ]; opus_int16 NLSF_Q15[ MAX_LPC_ORDER ]; const silk_float *x_ptr; silk_float *x_pre_ptr, LPC_in_pre[ MAX_NB_SUBFR * MAX_LPC_ORDER + MAX_FRAME_LENGTH ]; @@ -53,7 +53,6 @@ void silk_find_pred_coefs_FLP( for( i = 0; i < psEnc->sCmn.nb_subfr; i++ ) { silk_assert( psEncCtrl->Gains[ i ] > 0.0f ); invGains[ i ] = 1.0f / psEncCtrl->Gains[ i ]; - Wght[ i ] = invGains[ i ] * invGains[ i ]; } if( psEnc->sCmn.indices.signalType == TYPE_VOICED ) { diff --git a/silk/float/pitch_analysis_core_FLP.c b/silk/float/pitch_analysis_core_FLP.c index b284d9ad..b3716937 100644 --- a/silk/float/pitch_analysis_core_FLP.c +++ b/silk/float/pitch_analysis_core_FLP.c @@ -158,16 +158,9 @@ opus_int silk_pitch_analysis_core_FLP( /* O Voicing estimate: 0 voiced, silk_short2float_array( frame_4kHz, frame_4_FIX, frame_length_4kHz ); /* Low-pass filter */ - silk_assert( frame_length_4kHz & 3 == 0 ); - for( i = frame_length_4kHz - 1; i > 4; i -= 4 ) { - frame_4kHz[ i - 0 ] = silk_ADD_SAT16( frame_4kHz[ i - 0 ], frame_4kHz[ i - 1 ] ); - frame_4kHz[ i - 1 ] = silk_ADD_SAT16( frame_4kHz[ i - 1 ], frame_4kHz[ i - 2 ] ); - frame_4kHz[ i - 2 ] = silk_ADD_SAT16( frame_4kHz[ i - 2 ], frame_4kHz[ i - 3 ] ); - frame_4kHz[ i - 3 ] = silk_ADD_SAT16( frame_4kHz[ i - 3 ], frame_4kHz[ i - 4 ] ); + for( i = frame_length_4kHz - 1; i > 0; i-- ) { + frame_4kHz[ i ] = silk_ADD_SAT16( frame_4kHz[ i ], frame_4kHz[ i - 1 ] ); } - frame_4kHz[ i - 0 ] = silk_ADD_SAT16( frame_4kHz[ i - 0 ], frame_4kHz[ i - 1 ] ); - frame_4kHz[ i - 1 ] = silk_ADD_SAT16( frame_4kHz[ i - 1 ], frame_4kHz[ i - 2 ] ); - frame_4kHz[ i - 2 ] = silk_ADD_SAT16( frame_4kHz[ i - 2 ], frame_4kHz[ i - 3 ] ); /****************************************************************************** * FIRST STAGE, operating in 4 khz |