Commit 5d525f2c authored by Sandesh Venkatesh's avatar Sandesh Venkatesh
Browse files

Conversion and cleanup of renderactiveinputsmasa, LTV crash fix and high MLD fixes

[x] Fix for few LTV crash issue [ltv-SBA at 13.2 kbps, 32kHz in, 32kHz out, STEREO out]
[x] MSAN fixes
[x] Fix for high MLD issues
parent 91020149
Loading
Loading
Loading
Loading
Loading
+1 −3
Original line number Original line Diff line number Diff line
@@ -848,9 +848,7 @@ ivas_error acelp_core_switch_dec_bfi_ivas_fx(
    st_fx->cldfbSyn->Q_cldfb_state = sub( st_fx->cldfbSyn->Q_cldfb_state, 1 );
    st_fx->cldfbSyn->Q_cldfb_state = sub( st_fx->cldfbSyn->Q_cldfb_state, 1 );
    Copy_Scale_sig_32_16( synth32, synth_out, L_FRAME48k, -5 );
    Copy_Scale_sig_32_16( synth32, synth_out, L_FRAME48k, -5 );


    /* output to Q0 */
    Scale_sig( synth_out, L_FRAME48k, negate( st_fx->Q_syn ) );
    Copy_Scale_sig32_16( syn32, synth_out, L_FRAME16k, -5 );
    // Scale_sig(synth_out,L_FRAME48k, negate(st_fx->Q_syn));


    cldfb_restore_memory_ivas_fx( st_fx->cldfbSyn );
    cldfb_restore_memory_ivas_fx( st_fx->cldfbSyn );


+1 −1
Original line number Original line Diff line number Diff line
@@ -3299,7 +3299,7 @@ void IMDCT_ivas_fx(
            FOR( ; i < tcx_mdct_window_half_length; i++ )
            FOR( ; i < tcx_mdct_window_half_length; i++ )
            {
            {
                xn_buf_fx[sub( add( i, shr( overlap, 1 ) ), tcx_offset )] = mult_r( xn_buf_fx[sub( add( i, shr( overlap, 1 ) ), tcx_offset )], tcx_mdct_window_half_fx[sub( tcx_mdct_window_half_length, add( 1, i ) )].v.re );
                xn_buf_fx[sub( add( i, shr( overlap, 1 ) ), tcx_offset )] = mult_r( xn_buf_fx[sub( add( i, shr( overlap, 1 ) ), tcx_offset )], tcx_mdct_window_half_fx[sub( tcx_mdct_window_half_length, add( 1, i ) )].v.re );
                xn_buf_fx[sub( add( i, shr( overlap, 1 ) ), tcx_offset )] = add( xn_buf_fx[sub( add( i, shr( overlap, 1 ) ), tcx_offset )], mult_r( mult_r( hTcxDec->syn_OverlFB[i], tcx_mdct_window_half_fx[sub( tcx_mdct_window_half_length, add( 1, i ) )].v.im ), tcx_mdct_window_half_fx[sub( tcx_mdct_window_half_length, add( 1, i ) )].v.im ) );
                xn_buf_fx[sub( add( i, shr( overlap, 1 ) ), tcx_offset )] = add_sat( xn_buf_fx[sub( add( i, shr( overlap, 1 ) ), tcx_offset )], mult_r( mult_r( hTcxDec->syn_OverlFB[i], tcx_mdct_window_half_fx[sub( tcx_mdct_window_half_length, add( 1, i ) )].v.im ), tcx_mdct_window_half_fx[sub( tcx_mdct_window_half_length, add( 1, i ) )].v.im ) );
                move16();
                move16();
                move16();
                move16();
            }
            }
+1 −0
Original line number Original line Diff line number Diff line
@@ -1943,6 +1943,7 @@ void con_tcx_ivas_fx(


    new_Q = sub( Q_exc, 3 );
    new_Q = sub( Q_exc, 3 );
    new_Q = s_max( new_Q, -1 );
    new_Q = s_max( new_Q, -1 );
    new_Q = s_min( new_Q, norm_s( tmp_deemph ) );


    tmp16 = s_min( new_Q, st->prev_Q_syn );
    tmp16 = s_min( new_Q, st->prev_Q_syn );
    st->prev_Q_syn = new_Q;
    st->prev_Q_syn = new_Q;
+9 −3
Original line number Original line Diff line number Diff line
@@ -283,8 +283,11 @@ static void IGF_replaceTCXNoise_2_new_ivas( Word32 *in, /**< in
            {
            {
                Word16 nrm = norm_l( in[sb] );
                Word16 nrm = norm_l( in[sb] );
                in[sb] = L_shl( in[sb], nrm ); // exp: 31 - tmp
                in[sb] = L_shl( in[sb], nrm ); // exp: 31 - tmp
                move32();
                in[sb] = Mpy_32_16_1( in[sb], g ); // exp: 31 - tmp + tmp_e
                in[sb] = Mpy_32_16_1( in[sb], g ); // exp: 31 - tmp + tmp_e
                in[sb] = L_shr( in[sb], sub( in_e, sub( add( 31, tmp_e ), nrm ) ) ); // Making the exponent same as original
                move32();
                /* To handle corner cases */
                in[sb] = L_shr_sat( in[sb], sub( in_e, sub( add( 31, tmp_e ), nrm ) ) ); // Making the exponent same as original
                move32();
                move32();
            }
            }
        }
        }
@@ -4017,6 +4020,9 @@ void IGFDecSetMode_ivas_fx(


    hIGFDec->flag_sparse = &hIGFDec->flag_sparseBuf[0];
    hIGFDec->flag_sparse = &hIGFDec->flag_sparseBuf[0];
    hIGFDec->infoTCXNoise_ptr = &hIGFDec->infoTCXNoise_evs[0];
    hIGFDec->infoTCXNoise_ptr = &hIGFDec->infoTCXNoise_evs[0];
    hIGFDec->virtualSpec_fx = &hIGFDec->virtualSpec[0];
    hIGFDec->igfData.pSpecFlat = &hIGFDec->igfData.pSpecFlatBuf_fx[0];
    hIGFDec->igfData.igfInfo.nfSeed = &hIGFDec->igfData.igfInfo.nfSeedBuf[0];
    return;
    return;
}
}
/**********************************************************************/ /*
/**********************************************************************/ /*
+1 −1
Original line number Original line Diff line number Diff line
@@ -138,7 +138,7 @@ ivas_error ivas_cpe_dec_fx(
    }
    }
    q_old_out_LB = Q11;
    q_old_out_LB = Q11;
    move16();
    move16();
    FOR( Word16 ind1 = 0; ind1 < 1; ind1++ )
    FOR( Word16 ind1 = 0; ind1 < 2; ind1++ )
    {
    {
        IF( hCPE->hCoreCoder[ind1]->hHQ_core )
        IF( hCPE->hCoreCoder[ind1]->hHQ_core )
        {
        {
Loading