Commit 993c6285 authored by Jonas Svedberg's avatar Jonas Svedberg
Browse files

added additional DivByZero asserts in the stereo dtx decoder

parent ffa2407b
Loading
Loading
Loading
Loading
Loading
+14 −1
Original line number Diff line number Diff line
@@ -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 )
        {
@@ -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.