Commit 8d51792c authored by Sandesh Venkatesh's avatar Sandesh Venkatesh
Browse files

LTV streams +10dB scaled input crash fixes

[x] LTV crash occurring in SynthesisSTFT function resolved.
parent 42068a47
Loading
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -2511,7 +2511,7 @@ void SynthesisSTFT(
    {
        FOR( i = 0; i < len; i++ )
        {
            olapBuffer[i] = round_fx( L_shl( fftBuffer[i], fftBufferExp - 15 ) );
            olapBuffer[i] = extract_l( L_shr_r( fftBuffer[i], 31 - fftBufferExp ) );
            move16();
        }
    }
@@ -2519,9 +2519,11 @@ void SynthesisSTFT(
    {
        FOR( i = 0; i < len4; i++ )
        {
            olapBuffer[i + 1 * len4] = add_sat( olapBuffer[i + 1 * len4], mult_r( round_fx( L_shl( fftBuffer[i + 1 * len4], fftBufferExp - 15 ) ), olapWin[i].v.im ) );
            // olapBuffer[i + 1 * len4] = add_sat( olapBuffer[i + 1 * len4], mult_r( round_fx( L_shl( fftBuffer[i + 1 * len4], fftBufferExp - 15 ) ), olapWin[i].v.im ) );
            olapBuffer[i + 1 * len4] = add_sat( olapBuffer[i + 1 * len4], mult_r( extract_l( L_shr_r( fftBuffer[i + 1 * len4], 31 - fftBufferExp ) ), olapWin[i].v.im ) );
            move16();
            olapBuffer[i + 2 * len4] = add_sat( olapBuffer[i + 2 * len4], mult_r( round_fx( L_shl( fftBuffer[i + 2 * len4], fftBufferExp - 15 ) ), olapWin[len4 - 1 - i].v.re ) );
            // olapBuffer[i + 2 * len4] = add_sat( olapBuffer[i + 2 * len4], mult_r( round_fx( L_shl( fftBuffer[i + 2 * len4], fftBufferExp - 15 ) ), olapWin[len4 - 1 - i].v.re ) );
            olapBuffer[i + 2 * len4] = add_sat( olapBuffer[i + 2 * len4], mult_r( extract_l( L_shr_r( fftBuffer[i + 2 * len4], 31 - fftBufferExp ) ), olapWin[len4 - 1 - i].v.re ) );
            move16();
        }
        FOR( i = len3; i < len; i++ )
@@ -2532,9 +2534,9 @@ void SynthesisSTFT(

    FOR( i = 0; i < len4; i++ )
    {
        olapBuffer[i + 5 * len4] = mult_r( round_fx( L_shl( fftBuffer[i + 5 * len4], fftBufferExp - 15 ) ), olapWin[i].v.re );
        olapBuffer[i + 5 * len4] = mult_r( extract_l( L_shr_r( fftBuffer[i + 5 * len4], 31 - fftBufferExp ) ), olapWin[i].v.re );
        move16();
        olapBuffer[i + 6 * len4] = mult_r( round_fx( L_shl( fftBuffer[i + 6 * len4], fftBufferExp - 15 ) ), olapWin[len4 - 1 - i].v.im );
        olapBuffer[i + 6 * len4] = mult_r( extract_l( L_shr_r( fftBuffer[i + 6 * len4], 31 - fftBufferExp ) ), olapWin[len4 - 1 - i].v.im );
        move16();
    }

+10 −0
Original line number Diff line number Diff line
@@ -7056,6 +7056,16 @@ void generate_comfort_noise_dec_fx(
    const Word16 nchan_out /* i  : number of output channels     */
);

void generate_comfort_noise_dec_ivas_fx(
    Word32 **bufferReal, /* o   : matrix to real part of i   bands */
    Word32 **bufferImag, /* o   : matrix to imaginary part of i   bands */
    Word16 *bufferScale, /* o   : pointer to scalefactor for real and imaginary part of i   bands */
    Decoder_State *stdec,
    Word16 *Q_new,
    Word16 gen_exc,
    const Word16 nchan_out /* i  : number of output channels     */
);

void generate_comfort_noise_dec_hf_fx( Word32 **bufferReal, /* o   : matrix to real part of i   bands */
                                       Word32 **bufferImag, /* o   : matrix to imaginary part of i   bands */
                                       Word16 *bufferScale, /* o   : pointer to scalefactor for real and imaginary part of i   bands */
+1 −1
Original line number Diff line number Diff line
@@ -692,7 +692,7 @@ ivas_error acelp_core_dec_ivas_fx(
                    }
                }

                generate_comfort_noise_dec_fx( NULL, NULL, NULL, st, &( st->Q_exc ), 1, nchan_out );
                generate_comfort_noise_dec_ivas_fx( NULL, NULL, NULL, st, &( st->Q_exc ), 1, nchan_out );

                FdCng_exc( st->hFdCngDec->hFdCngCom, &st->CNG_mode, st->L_frame, st->lsp_old_fx, st->first_CNG, st->lspCNG_fx, Aq_fx, lsp_new_fx, lsf_new_fx, exc_fx, exc2_fx, bwe_exc_fx );

+543 −0

File changed.

Preview size limit exceeded, changes collapsed.