Commit 1dc85670 authored by Sandesh Venkatesh's avatar Sandesh Venkatesh
Browse files

Merge branch '3gpp_issue_1020_fix_1' into 'main'

Fix for 3GPP issue 1020: ParamISM: Binaural: HF click [allow regression]

See merge request !1729
parents 31a2fd7b b7cb47dc
Loading
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -2326,6 +2326,11 @@ ivas_error acelp_core_dec_fx(
            st->hBWE_TD->bwe_non_lin_prev_scale_fx = 0;
            move32();
            set16_fx( st->hBWE_TD->old_bwe_exc_extended_fx, 0, NL_BUFF_OFFSET );
            if ( NE_16( st->element_mode, EVS_MONO ) )
            {
                st->hBWE_TD->q_old_bwe_exc_extended_fx = Q15;
                move16();
            }
        }

        test();
@@ -2341,9 +2346,12 @@ ivas_error acelp_core_dec_fx(
            }
            ELSE
            {
                Copy_Scale_sig_16_32_no_sat( st->hBWE_TD->old_bwe_exc_extended_fx, bwe_exc_extended_fx, NL_BUFF_OFFSET, ( sub( shl( st->Q_exc, 1 ), sub( st->prev_Q_bwe_exc, 16 ) ) ) ); // prev_Q_bwe_exc
                Copy_Scale_sig_16_32_no_sat( st->hBWE_TD->old_bwe_exc_extended_fx, bwe_exc_extended_fx, NL_BUFF_OFFSET, ( sub( shl( st->Q_exc, 1 ), st->hBWE_TD->q_old_bwe_exc_extended_fx ) ) ); /* Q(q_old_bwe_exc_extended_fx) -> Q(2 * Q_exc) */
                non_linearity_ivas_fx( bwe_exc_fx, bwe_exc_extended_fx + NL_BUFF_OFFSET, L_FRAME32k, &st->hBWE_TD->bwe_non_lin_prev_scale_fx, st->Q_exc, st->coder_type, voice_factors_fx, st->L_frame );
                Copy_Scale_sig_32_16( bwe_exc_extended_fx + L_FRAME32k, st->hBWE_TD->old_bwe_exc_extended_fx, NL_BUFF_OFFSET, negate( sub( shl( st->Q_exc, 1 ), sub( st->prev_Q_bwe_exc, 16 ) ) ) ); // prev_Q_bwe_exc
                exp = sub( L_norm_arr( bwe_exc_extended_fx + L_FRAME32k, NL_BUFF_OFFSET ), 16 );
                Copy_Scale_sig_32_16( bwe_exc_extended_fx + L_FRAME32k, st->hBWE_TD->old_bwe_exc_extended_fx, NL_BUFF_OFFSET, exp ); /* Q(2 * Q_exc) -> Q(q_old_bwe_exc_extended_fx) */
                st->hBWE_TD->q_old_bwe_exc_extended_fx = add( shl( st->Q_exc, 1 ), exp );
                move16();
            }
        }

+2 −1
Original line number Diff line number Diff line
@@ -822,7 +822,8 @@ typedef struct td_bwe_dec_structure
    Word16 old_bwe_exc_fx[PIT16k_MAX * 2]; /*Q_exc*/
    Word16 bwe_seed[2];
    Word32 bwe_non_lin_prev_scale_fx;
    Word16 old_bwe_exc_extended_fx[NL_BUFF_OFFSET];
    Word16 old_bwe_exc_extended_fx[NL_BUFF_OFFSET]; /* EVS : Q(prev_Q_bwe_exc - 16), IVAS : Q(q_old_bwe_exc_extended_fx) */
    Word16 q_old_bwe_exc_extended_fx;

    Word32 genSHBsynth_Hilbert_Mem_fx[HILBERT_MEM_SIZE];

+27 −19
Original line number Diff line number Diff line
@@ -56,11 +56,14 @@ static void find_max_mem_dec(
    hBWE_TD = st_fx->hBWE_TD;

    /* old BWE exc max */
    IF( EQ_16( st_fx->element_mode, EVS_MONO ) )
    {
        FOR( i = 0; i < NL_BUFF_OFFSET; i++ )
        {
            tempQ15 = abs_s( hBWE_TD->old_bwe_exc_extended_fx[i] );
            max = s_max( max, tempQ15 );
        }
    }

    /* decimate all-pass steep memory */
    FOR( i = 0; i < 7; i++ )
@@ -232,11 +235,14 @@ static void rescale_genSHB_mem_dec(
    TD_BWE_DEC_HANDLE hBWE_TD;
    hBWE_TD = st_fx->hBWE_TD;

    IF( EQ_16( st_fx->element_mode, EVS_MONO ) )
    {
        FOR( i = 0; i < NL_BUFF_OFFSET; i++ )
        {
            hBWE_TD->old_bwe_exc_extended_fx[i] = shl( hBWE_TD->old_bwe_exc_extended_fx[i], sf );
            move16();
        }
    }

    FOR( i = 0; i < 7; i++ )
    {
@@ -283,10 +289,13 @@ void find_max_mem_wb( Decoder_State *st_fx, Word16 *n_mem )
    TD_BWE_DEC_HANDLE hBWE_TD;
    hBWE_TD = st_fx->hBWE_TD;

    IF( EQ_16( st_fx->element_mode, EVS_MONO ) )
    {
        FOR( i = 0; i < NL_BUFF_OFFSET; i++ )
        {
            max = s_max( max, abs_s( hBWE_TD->old_bwe_exc_extended_fx[i] ) );
        }
    }
    FOR( i = 0; i < 7; i++ )
    {

@@ -362,11 +371,14 @@ void rescale_genWB_mem( Decoder_State *st_fx, Word16 sf )
    TD_BWE_DEC_HANDLE hBWE_TD;
    hBWE_TD = st_fx->hBWE_TD;

    IF( EQ_16( st_fx->element_mode, EVS_MONO ) )
    {
        FOR( i = 0; i < NL_BUFF_OFFSET; i++ )
        {
            hBWE_TD->old_bwe_exc_extended_fx[i] = shl( hBWE_TD->old_bwe_exc_extended_fx[i], sf );
            move16();
        }
    }

    FOR( i = 0; i < 10; i++ )
    {
@@ -418,6 +430,8 @@ static void InitSWBdecBuffer_fx(
    move16();

    set16_fx( hBWE_TD->old_bwe_exc_extended_fx, 0, NL_BUFF_OFFSET );
    hBWE_TD->q_old_bwe_exc_extended_fx = Q15;
    move16();
    hBWE_TD->bwe_non_lin_prev_scale_fx = 0;
    move16();

@@ -5375,12 +5389,6 @@ static void rescale_genSHB_mem_dec_ivas(
    TD_BWE_DEC_HANDLE hBWE_TD;
    hBWE_TD = st_fx->hBWE_TD;

    FOR( i = 0; i < NL_BUFF_OFFSET; i++ )
    {
        hBWE_TD->old_bwe_exc_extended_fx[i] = shl( hBWE_TD->old_bwe_exc_extended_fx[i], sf );
        move16();
    }

    FOR( i = 0; i < 7; i++ )
    {
        hBWE_TD->mem_genSHBexc_filt_down_shb_fx[i] = shl( hBWE_TD->mem_genSHBexc_filt_down_shb_fx[i], sf );
@@ -6147,7 +6155,7 @@ void ivas_swb_tbe_dec_fx(
    /* ----- calculate optimum Q_bwe_exc and rescale memories accordingly ----- */
    Lmax = 0;
    move32();
    FOR( cnt = 0; cnt < L_FRAME32k; cnt++ )
    FOR( cnt = 0; cnt < L_FRAME32k + NL_BUFF_OFFSET; cnt++ )
    {
        Lmax = L_max( Lmax, L_abs( bwe_exc_extended_fx[cnt] ) );
    }
@@ -6177,7 +6185,7 @@ void ivas_swb_tbe_dec_fx(
    /* rescale the bwe_exc_extended and bring it to 16-bit single precision with dynamic norm  */
    sc = sub( Q_bwe_exc, add( Q_exc, Q_exc ) );

    FOR( cnt = 0; cnt < L_FRAME32k; cnt++ )
    FOR( cnt = 0; cnt < L_FRAME32k + NL_BUFF_OFFSET; cnt++ )
    {
        bwe_exc_extended_16[cnt] = round_fx_sat( L_shl_sat( bwe_exc_extended_fx[cnt], sc ) );
        move16();