Commit 7618cbdd authored by Sandesh Venkatesh's avatar Sandesh Venkatesh
Browse files

Merge branch 'ltv_crash_fix_high_mld_fixes' into 'main'

LTV crash and high MLD fixes

See merge request !439
parents a34ef103 c1bc360e
Loading
Loading
Loading
Loading
Loading
+15 −1
Original line number Diff line number Diff line
@@ -2226,8 +2226,22 @@ void scalebands_fx(
                val = partpow[stopPartM1];
                move32();
                FOR( ; i <= part[stopPartM1]; i++ )
                {
                    test();
                    IF( val != 0 && delta != 0 )
                    {
                        val = L_shl( Mpy_32_16_1( val, delta ), s1 );
                        IF( val == 0 )
                        {
                            val = 1;
                            move32();
                        }
                    }
                    ELSE
                    {
                        val = 0;
                        move32();
                    }
                    bandpow[i] = val;
                    move32();
                }
+8 −2
Original line number Diff line number Diff line
@@ -1571,7 +1571,7 @@ void decoder_tcx_tns_fx(
    const Word16 whitenedDomain,
    Word16 *length )
{
    Word16 index, isTCX5, L;
    Word16 index, isTCX5, L, tmp;
    TCX_CONFIG_HANDLE hTcxCfg = st->hTcxCfg;

    index = hTcxCfg->tcx_last_overlap_mode; /* backup last TCX overlap mode */
@@ -1581,6 +1581,8 @@ void decoder_tcx_tns_fx(
    move16();
    L = L_frameTCX;
    move16();
    tmp = L;
    move16();

    test();
    IF( EQ_16( L_frame, shr( st->L_frame, 1 ) ) && NE_16( st->tcxonly, 0 ) )
@@ -1601,6 +1603,8 @@ void decoder_tcx_tns_fx(
        {
            L = L_spec;
            move16();
            tmp = L;
            move16();
        }

        test();
@@ -1652,6 +1656,8 @@ void decoder_tcx_tns_fx(
            IF( EQ_16( st->element_mode, EVS_MONO ) || LT_16( L_spec, L_frameTCX ) ) /* todo: this is temporary to maintain EVS BE, this is a bug and should be fixed also for EVS (see issue 13) */
            {
                tcx5TnsUngrouping_fx( shr( L_frameTCX, 1 ), shr( hTcxCfg->tnsConfig[0][0].iFilterBorders[0], 1 ), x_fx, DEC );
                tmp = L_frameTCX;
                move16();
            }
            ELSE
            {
@@ -1679,7 +1685,7 @@ void decoder_tcx_tns_fx(

    if ( length != NULL )
    {
        *length = L;
        *length = tmp;
        move16();
    }

+16 −1
Original line number Diff line number Diff line
@@ -2907,7 +2907,22 @@ void perform_noise_estimation_dec_ivas_fx(
                    }

                    /* IIR smoothing */
                    test();
                    IF( *ptr_per != 0 && alpha != 0 )
                    {
                        *ptr_per = Mpy_32_16_1( ( *ptr_per ), alpha );
                        move32();
                        IF( *ptr_per == 0 )
                        {
                            *ptr_per = 1;
                            move32();
                        }
                    }
                    ELSE
                    {
                        *ptr_per = 0;
                        move32();
                    }
                    *ptr_per = L_add( ( *ptr_per ), Mpy_32_16_1( temp, sub( MAX_16, alpha ) ) );
                    ptr_per++;
                }
+9 −1
Original line number Diff line number Diff line
@@ -4469,7 +4469,15 @@ static void ivas_parse_parameter_bitstream_dtx(

                value = get_next_indice( st0, pr_pd_bits );

                IF( value != 0 )
                {
                    pr = idiv1616( value, pd_q_lvls );
                }
                ELSE
                {
                    pr = 0;
                    move16();
                }
                pd = extract_l( L_sub( value, i_mult( pr, pd_q_lvls ) ) );
                val_fx = dtx_pd_real_min_max_fx[0];
                move32();
+1 −1
Original line number Diff line number Diff line
@@ -2153,7 +2153,7 @@ void stereo_dft_dec_fx(
                        move16();
                    }
                    l_gamma = L_deposit_l( gamma );
                    op1 = L_add( l_gamma, L_shr( L_deposit_l( sub( MAX_16, mult( g, g ) ) ), q_gamma ) );
                    op1 = L_add( l_gamma, L_shr( L_deposit_l( sub( MAX_16, mult_sat( g, g ) ) ), q_gamma ) ); /*The mult_sat function is needed because -0.999979973 is being mapped to -32768. This value, when multiplied by -32768, is causing a crash.*/
                    q_loc2 = add( Q16, q_gamma );
                    q_loc1 = q_loc2;
                    move16();