ref: 4b6af2da93379da6ea4778889d678ee6cea964d8
parent: 4503261d0f055a4a2ba7bd1c05035a5759912857
author: Jean-Marc Valin <jmvalin@jmvalin.ca>
date: Fri Feb 16 07:36:44 EST 2018
Fixes integer overflow in SILK VAD for 10-ms frames Reported by Chandrakala Madhira on the mailing list
--- a/silk/VAD.c
+++ b/silk/VAD.c
@@ -252,15 +252,14 @@
speech_nrg += ( b + 1 ) * silk_RSHIFT( Xnrg[ b ] - psSilk_VAD->NL[ b ], 4 );
}
+ if( psEncC->frame_length == 20 * psEncC->fs_kHz ) {
+ speech_nrg = silk_RSHIFT32( speech_nrg, 1 );
+ }
/* Power scaling */
if( speech_nrg <= 0 ) {
SA_Q15 = silk_RSHIFT( SA_Q15, 1 );
- } else if( speech_nrg < 32768 ) {
- if( psEncC->frame_length == 10 * psEncC->fs_kHz ) {
- speech_nrg = silk_LSHIFT_SAT32( speech_nrg, 16 );
- } else {
- speech_nrg = silk_LSHIFT_SAT32( speech_nrg, 15 );
- }
+ } else if( speech_nrg < 16384 ) {
+ speech_nrg = silk_LSHIFT32( speech_nrg, 16 );
/* square-root */
speech_nrg = silk_SQRT_APPROX( speech_nrg );