Loading lib_dec/ivas_stereo_cng_dec.c +14 −1 Original line number Diff line number Diff line Loading @@ -342,12 +342,25 @@ static void stereo_dft_generate_comfort_noise( ptr0 = cngNoiseLevel_upd; ptr1 = ptr0 + 2; ptr2 = ptr1 + 1; #ifdef FIX617_UBSAN_DIVBYZERO_STEREOCNG assert( st->lp_ener > 0.0f ); factor = 2.0f * sqrtf( st->lp_ener / st->L_frame * 0.5f ); /* fixed factor in the loop below */ for ( i = 0; i < st->L_frame / 2 - 1; i++ ) { ftmp = *ptr1 * *ptr1 + *ptr2 * *ptr2; assert( ftmp > 0.0f ); *ptr0++ = factor * inv_sqrt( ftmp ); ptr1 += 2; ptr2 += 2; } #else for ( i = 0; i < st->L_frame / 2 - 1; i++ ) { *ptr0++ = 2.0f * sqrtf( st->lp_ener / st->L_frame * 0.5f ) * inv_sqrt( *ptr1 * *ptr1 + *ptr2 * *ptr2 ); ptr1 += 2; ptr2 += 2; } #endif if ( min( output_frame, L_FRAME32k ) - hFdCngCom->stopFFTbin > 0 ) { Loading Loading @@ -380,7 +393,7 @@ static void stereo_dft_generate_comfort_noise( { #ifdef FIX617_UBSAN_DIVBYZERO_STEREOCNG ftmp = ( *ptr1 * *ptr1 + *ptr2 * *ptr2 ); assert( ftmp != 0.0f ); assert( ftmp > 0.0f ); ftmp = 1.0f / ftmp; /* in float: both a = "div"=(1/(x^2+y^2) and sqrt(a) is used and summed up in the same loop. Loading Loading
lib_dec/ivas_stereo_cng_dec.c +14 −1 Original line number Diff line number Diff line Loading @@ -342,12 +342,25 @@ static void stereo_dft_generate_comfort_noise( ptr0 = cngNoiseLevel_upd; ptr1 = ptr0 + 2; ptr2 = ptr1 + 1; #ifdef FIX617_UBSAN_DIVBYZERO_STEREOCNG assert( st->lp_ener > 0.0f ); factor = 2.0f * sqrtf( st->lp_ener / st->L_frame * 0.5f ); /* fixed factor in the loop below */ for ( i = 0; i < st->L_frame / 2 - 1; i++ ) { ftmp = *ptr1 * *ptr1 + *ptr2 * *ptr2; assert( ftmp > 0.0f ); *ptr0++ = factor * inv_sqrt( ftmp ); ptr1 += 2; ptr2 += 2; } #else for ( i = 0; i < st->L_frame / 2 - 1; i++ ) { *ptr0++ = 2.0f * sqrtf( st->lp_ener / st->L_frame * 0.5f ) * inv_sqrt( *ptr1 * *ptr1 + *ptr2 * *ptr2 ); ptr1 += 2; ptr2 += 2; } #endif if ( min( output_frame, L_FRAME32k ) - hFdCngCom->stopFFTbin > 0 ) { Loading Loading @@ -380,7 +393,7 @@ static void stereo_dft_generate_comfort_noise( { #ifdef FIX617_UBSAN_DIVBYZERO_STEREOCNG ftmp = ( *ptr1 * *ptr1 + *ptr2 * *ptr2 ); assert( ftmp != 0.0f ); assert( ftmp > 0.0f ); ftmp = 1.0f / ftmp; /* in float: both a = "div"=(1/(x^2+y^2) and sqrt(a) is used and summed up in the same loop. Loading