Commit a55f234e authored by Sandesh Venkatesh's avatar Sandesh Venkatesh
Browse files

LTV test 18062025 - all MRs included for reference

parent d12363f0
Loading
Loading
Loading
Loading
Loading
+28 −3
Original line number Diff line number Diff line
@@ -6982,6 +6982,7 @@ void synthesise_fb_high_band_fx(
        elliptic_bpf_48k_generic_fx( excitation_in_interp3, &exp_tmp, tmp, bpf_memory, bpf_memory_Q, full_band_bpf_1_fx );
#endif
    }
    /* temp1 = sum2_f( tmp, L_FRAME48k ) + 0.001f */
    temp1 = sum2_fx_mod( tmp, L_FRAME48k );

    L_tmp = L_max( 1, fb_exc_energy ); /*Q(2*Q_fb_exc + 1)*/
@@ -6990,9 +6991,33 @@ void synthesise_fb_high_band_fx(
    tmp1 = sub( add( Q_fb_exc, Q_fb_exc ), 8 ); /* 1-9*/
    exp = sub( sub( 31, tmp1 ), exp );

    IF( element_mode != EVS_MONO )
    {
        Word16 sft, t_Q;
        Word64 P_ONE = 33; /* 0.001f in Q15 */
        move64();
        Word64 W_temp;

        t_Q = sub( shl( exp_tmp, 1 ), 8 );
        P_ONE = W_shl( P_ONE, sub( t_Q, 15 ) );

        W_temp = W_add( P_ONE, temp1 );

        sft = W_norm( W_temp );
        W_temp = W_shl( W_temp, sft );

        temp1 = W_extract_h( W_temp );
        t_Q = sub( add( t_Q, sft ), 32 );

        tmp2 = extract_h( temp1 );
        exp2 = sub( 31, t_Q );
    }
    ELSE
    {
        exp2 = norm_l( temp1 );
        tmp2 = extract_h( L_shl( temp1, exp2 ) );
        exp2 = sub( sub( 31, sub( shl( exp_tmp, 1 ), 8 ) ), exp2 ); /* in Q15 (temp1 in Q9)*/
    }

    exp = sub( exp2, exp ); /* Denormalize and substract */
    IF( GT_16( tmp2, tmp3 ) )
+5 −5
Original line number Diff line number Diff line
@@ -2608,7 +2608,7 @@ void stereo_dft_dec_fx(
                    q_cna_level = hFdCngDec->smoothed_psd_exp;
                    move16();
                    l_tmp = Sqrt32( cna_level, &q_cna_level );
                    scale_fact = Mpy_32_32( l_tmp, scale_fact0 ); /* q_cna_level */
                    scale_fact = Mpy_32_32( l_tmp, scale_fact0 ); /* Q = (31-q_cna_level) + Q15 - 31 */
                    /*
                       scale_fact0 will be in Q15 by the time the above operation is performed
                       so the q of scale_fact represented now by q_cna_level has to be updated
@@ -2628,12 +2628,12 @@ void stereo_dft_dec_fx(
                    l_tmp = L_add( Madd_32_16( N1, N1, g ), Mpy_32_16_1( N2, gamma ) ); /* q_cna_level */
                    l_tmp = L_shr( l_tmp, sub( q_cna_level, hStereoDft->q_dft ) );      /* q_dft */
#endif                                                                        /* OPT_STEREO_32KBPS_V1 */
                    DFT_L[2 * i] = L_add( DFT_L[2 * i], l_tmp );              /* q_dft */
                    DFT_L[2 * i] = L_add_sat( DFT_L[2 * i], l_tmp );          /* q_dft */
                    move32();
#ifdef OPT_STEREO_32KBPS_V1
                    l_tmp = Msub_32_16( Msub_32_16( N1, N1, g ), N2, gamma ); /* q_cna_level */
                    l_tmp = L_shr( l_tmp, shift );                            /* q_dft */
                    DFT_R[2 * i] = L_add( DFT_R[2 * i], l_tmp );              /* q_dft */
                    DFT_R[2 * i] = L_add_sat( DFT_R[2 * i], l_tmp );          /* q_dft */
#else                                                                         /* OPT_STEREO_32KBPS_V1 */
                    l_tmp = L_sub( Msub_32_16( N1, N1, g ), Mpy_32_16_1( N2, gamma ) ); /* q_cna_level */
                    l_tmp = L_shr( l_tmp, sub( q_cna_level, hStereoDft->q_dft ) );      /* q_dft */
@@ -2646,11 +2646,11 @@ void stereo_dft_dec_fx(
#ifdef OPT_STEREO_32KBPS_V1
                    l_tmp = Madd_32_16( Madd_32_16( N1, N1, g ), N2, gamma ); /* q_cna_level */
                    l_tmp = L_shr( l_tmp, shift );                            /* q_dft */
                    DFT_L[2 * i + 1] = L_add( DFT_L[2 * i + 1], l_tmp );      /* q_dft */
                    DFT_L[2 * i + 1] = L_add_sat( DFT_L[2 * i + 1], l_tmp );  /* q_dft */
                    move32();
                    l_tmp = Msub_32_16( Msub_32_16( N1, N1, g ), N2, gamma ); /* q_cna_level */
                    l_tmp = L_shr( l_tmp, shift );                            /* q_dft */
                    DFT_R[2 * i + 1] = L_add( DFT_R[2 * i + 1], l_tmp );      /* q_dft */
                    DFT_R[2 * i + 1] = L_add_sat( DFT_R[2 * i + 1], l_tmp );  /* q_dft */
                    move32();
#else  /* OPT_STEREO_32KBPS_V1 */
                    l_tmp = L_add( Madd_32_16( N1, N1, g ), Mpy_32_16_1( N2, gamma ) ); /* q_cna_level */
+19 −11
Original line number Diff line number Diff line
@@ -1392,25 +1392,33 @@ void tcx_scalar_quantization_ivas_fx(
        s = sub( add( x_e, gain_e ), 15 );
    }

    /* substract 0x8000 to affect the mac_r in the following loop
    so it acts like extract_h. the 0x4000 will be multiplied by 2
    by the mac_r to get to 0x8000 and disable the round. */
    offset = sub( offset, 0x4000 );

    FOR( ; i >= 0; i-- )
    {
        offs32 = Mpy_32_16_1( L_abs( x[i] ), gain ); /* multiply */
        offs32 = Mpy_32_16_1( x[i], gain ); /* multiply */
        offs32 = L_shl_sat( offs32, s );    /* convert to 15Q16 */
        tmp16 = mac_r_sat( offs32, offset, 1 );      /* add offset and truncate */
        IF( x[i] < 0 )
        IF( x[i] > 0 )
        {
            tmp16 = negate( tmp16 ); /* restore sign */
            offs32 = L_add_sat( offs32, L_shl( offset, 1 ) );
            tmp16 = extract_h( offs32 );
            IF( GT_32( L_deposit_h( tmp16 ), offs32 ) )
            {
                tmp16 = sub( tmp16, 1 );
            }
        }
        ELSE
        {
            offs32 = L_add_sat( offs32, L_shl( negate( offset ), 1 ) );
            tmp16 = extract_h( offs32 );
            IF( LT_32( L_deposit_h( tmp16 ), offs32 ) )
            {
                tmp16 = add( tmp16, 1 );
            }
        }

        xq[i] = tmp16;
        move16();
    }


    IF( alfe_flag == 0 )
    {
        AdaptLowFreqEmph_fx( x, x_e, xq, gain, gain_e,
+5 −0
Original line number Diff line number Diff line
@@ -192,6 +192,11 @@ void diffuse_meta_merge_1x1_fx(
            tmp = BASOP_Util_Divide3232_Scale( total_diff_nrg_fx, L_add( total_nrg_fx, EPSILON_FX ), &scale );
            L_tmp1 = L_deposit_h( tmp ); /* Q( 31 - ( scale + total_nrg_e - total_diff_nrg_e ) ) */
            scale = add( scale, sub( total_diff_nrg_e, total_nrg_e ) );
            if ( L_tmp1 == 0 )
            {
                scale = 30;
                move16();
            }
            L_tmp2 = L_sub( L_shl( 1, scale ), L_tmp1 );

            L_tmp1 = BASOP_Util_Add_Mant32Exp( dir_ratio_ism_fx, dir_ratio_ism_e, L_tmp2, scale, &tmp );