Commit bc1096d3 authored by Manuel Jander's avatar Manuel Jander
Browse files

Cleanup a bit and fix crash due to too large Q value.

parent ed99cf71
Loading
Loading
Loading
Loading
Loading
+2 −21
Original line number Diff line number Diff line
@@ -1571,27 +1571,9 @@ ivas_error ivas_compute_core_buffers_fx(

#ifndef FIX_2363_FIND_WSP
        ivas_find_wsp_fx( L_FRAME16k, L_SUBFR, NB_SUBFR16k, A_fx, Aw_fx, st->speech_enc_pe, PREEMPH_FAC_16k, st->wspeech_enc, &st->mem_wsp_enc, st->gamma, L_LOOK_16k );

#ifdef NONBE_FIX_ISSUE_2206
        Word16 tmp;
        // L_FRAME16k + L_SUBFR / L_FRAME16k + L_NEXT_MAX_16k + 320
        //                        L_FRAME16k + L_LOOK_16k
        tmp = norm_arr( st->wspeech_enc, L_FRAME16k + L_LOOK_16k );
        tmp = s_min( tmp, norm_arr( st->buf_wspeech_enc, (Word16) ( st->wspeech_enc - st->buf_wspeech_enc ) ) );
        assert( ( st->wspeech_enc - st->buf_wspeech_enc ) + L_FRAME16k + L_LOOK_16k <= L_FRAME16k + L_SUBFR + L_FRAME16k + L_NEXT_MAX_16k + 320 );
        tmp = s_min( tmp, norm_arr( st->wspeech_enc + L_FRAME16k + L_LOOK_16k, L_FRAME16k + L_SUBFR + L_FRAME16k + L_NEXT_MAX_16k + 320 - ( (Word16) ( st->wspeech_enc - st->buf_wspeech_enc ) + L_FRAME16k + L_LOOK_16k ) ) );
        tmp = add( s_min( sub( Q15, st->exp_buf_speech_enc_pe ), sub( Q15, st->exp_buf_wspeech_enc ) ), tmp );
        scale_sig( st->buf_wspeech_enc, (Word16) ( st->wspeech_enc - st->buf_wspeech_enc ), sub( tmp, sub( Q15, st->exp_buf_wspeech_enc ) ) );
        scale_sig( st->wspeech_enc, L_FRAME16k + L_LOOK_16k, sub( tmp, sub( Q15, st->exp_buf_speech_enc_pe ) ) );
        scale_sig( st->wspeech_enc + L_FRAME16k + L_LOOK_16k, L_FRAME16k + L_SUBFR + L_FRAME16k + L_NEXT_MAX_16k + 320 - ( (Word16) ( st->wspeech_enc - st->buf_wspeech_enc ) + L_FRAME16k + L_LOOK_16k ), sub( tmp, sub( Q15, st->exp_buf_wspeech_enc ) ) );
        st->exp_buf_wspeech_enc = sub( Q15, tmp );
        st->mem_wsp_enc = shl( st->mem_wsp_enc, sub( st->exp_buf_speech_enc_pe, st->exp_buf_wspeech_enc ) );
        move16();
#else
        ivas_find_wsp_fx( L_FRAME16k, L_SUBFR, NB_SUBFR16k, A_fx, Aw_fx, st->speech_enc_pe, PREEMPH_FAC_16k, st->wspeech_enc, &st->mem_wsp_enc, st->gamma, L_LOOK_16k );
#endif
#else
        find_wsp_fx( A_fx, st->speech_enc_pe, st->wspeech_enc, &st->mem_wsp_enc, PREEMPH_FAC_16k, L_FRAME16k, L_LOOK_16k, L_SUBFR, Aw_fx, st->gamma, NB_SUBFR16k );
#endif

#ifdef NONBE_FIX_ISSUE_2206
        Word16 tmp;
@@ -1601,14 +1583,13 @@ ivas_error ivas_compute_core_buffers_fx(
        tmp = s_min( tmp, norm_arr( st->buf_wspeech_enc, (Word16) ( st->wspeech_enc - st->buf_wspeech_enc ) ) );
        assert( ( st->wspeech_enc - st->buf_wspeech_enc ) + L_FRAME16k + L_LOOK_16k <= L_FRAME16k + L_SUBFR + L_FRAME16k + L_NEXT_MAX_16k + 320 );
        tmp = s_min( tmp, norm_arr( st->wspeech_enc + L_FRAME16k + L_LOOK_16k, L_FRAME16k + L_SUBFR + L_FRAME16k + L_NEXT_MAX_16k + 320 - ( (Word16) ( st->wspeech_enc - st->buf_wspeech_enc ) + L_FRAME16k + L_LOOK_16k ) ) );
        tmp = add( s_min( sub( Q15, st->exp_buf_speech_enc_pe ), sub( Q15, st->exp_buf_wspeech_enc ) ), tmp );
        tmp = s_min( Q15, add( s_min( sub( Q15, st->exp_buf_speech_enc_pe ), sub( Q15, st->exp_buf_wspeech_enc ) ), tmp ) );
        scale_sig( st->buf_wspeech_enc, (Word16) ( st->wspeech_enc - st->buf_wspeech_enc ), sub( tmp, sub( Q15, st->exp_buf_wspeech_enc ) ) );
        scale_sig( st->wspeech_enc, L_FRAME16k + L_LOOK_16k, sub( tmp, sub( Q15, st->exp_buf_speech_enc_pe ) ) );
        scale_sig( st->wspeech_enc + L_FRAME16k + L_LOOK_16k, L_FRAME16k + L_SUBFR + L_FRAME16k + L_NEXT_MAX_16k + 320 - ( (Word16) ( st->wspeech_enc - st->buf_wspeech_enc ) + L_FRAME16k + L_LOOK_16k ), sub( tmp, sub( Q15, st->exp_buf_wspeech_enc ) ) );
        st->exp_buf_wspeech_enc = sub( Q15, tmp );
        st->mem_wsp_enc = shl( st->mem_wsp_enc, sub( st->exp_buf_speech_enc_pe, st->exp_buf_wspeech_enc ) );
        move16();
#endif
#endif
    }