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

LTV all MRs included - 19062025

parent d8645b0c
Loading
Loading
Loading
Loading
Loading
+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 );
+25 −16
Original line number Diff line number Diff line
@@ -952,7 +952,7 @@ void ivas_mcmasa_param_est_ana_fx(
                temp2 = L_add( temp2, EPSILON_FX );
                lsEnergyRelation_fx = BASOP_Util_Divide3232_Scale( temp1, temp2, &lsEnergyRelation_e );
                lsEnergyRelation_e = add( lsEnergyRelation_e, sub( temp1_e, temp2_e ) );
                lsEnergyRelation_fx = L_shl( lsEnergyRelation_fx, add( 16, lsEnergyRelation_e ) ); // Q31
                lsEnergyRelation_fx = L_shl_sat( lsEnergyRelation_fx, add( 16, lsEnergyRelation_e ) ); // Q31
                stereoness_fx = Mult_32_32( stereoCoh_fx, lsEnergyRelation_fx );
                stereoness_e = stereoCoh_e;
                move16();
@@ -1105,12 +1105,12 @@ void ivas_mcmasa_param_est_ana_fx(
                lsEnergySum_fx = L_add_sat( lsEnergySum_fx, EPSILON_FX );
                lsEnergyRelation_fx = BASOP_Util_Divide3232_Scale( temp1, lsEnergySum_fx, &lsEnergyRelation_e );
                lsEnergyRelation_e = add( lsEnergyRelation_e, sub( temp1_e, lsEnergySum_e ) );
                lsEnergyRelation_fx = L_shl( lsEnergyRelation_fx, add( 16, lsEnergyRelation_e ) );                               // Q31
                lsEnergyRelation_fx = L_shl_sat( lsEnergyRelation_fx, add( 16, lsEnergyRelation_e ) );                           // Q31
                stereoRatio_fx = L_sub( Mult_32_32( L_shl_sat( stereoCoh_fx, stereoCoh_e ), lsEnergyRelation_fx ), surrCoh_fx ); // Q31

                temp2 = L_sub( temp2, EPSILON_FX );
                lsEnergyRelation_fx = BASOP_Util_Divide3232_Scale( temp2, lsEnergySum_fx, &lsEnergyRelation_e );
                lsEnergyRelation_e = add( lsEnergyRelation_e, sub( temp2_e, lsEnergySum_e ) );
                lsEnergyRelation_fx = L_shl( lsEnergyRelation_fx, add( 16, lsEnergyRelation_e ) );     // Q31
                lsEnergyRelation_fx = L_shl_sat( lsEnergyRelation_fx, add( 16, lsEnergyRelation_e ) ); // Q31
                cohPanRatio_fx = L_sub( Mult_32_32( cohPanCoh_fx, lsEnergyRelation_fx ), surrCoh_fx ); // Q31

                IF( GT_32( stereoRatio_fx, cohPanRatio_fx ) )
@@ -1436,6 +1436,8 @@ static void computeVerticalDiffuseness_fx(
    {
        Word16 tmp_e1, tmp_e2;
        tmp = BASOP_Util_Divide3232_Scale( intensity_slow_abs[i], L_add( energy_slow[i], EPSILON_FX_SMALL ), &tmp_e1 );
        IF( tmp != 0 )
        {
            tmp_e1 = add( tmp_e1, sub( intensity_slow_e[i], energy_slow_e[i] ) );
            tmp = BASOP_Util_Divide3232_Scale( L_sub( tmp, L_shr( VERTICAL_ENERGY_RATIO_OFFSET_FX, tmp_e1 ) ), L_sub( ONE_IN_Q15, VERTICAL_ENERGY_RATIO_OFFSET_FX ), &tmp_e2 ); /* Tuned to avoid effect due to ambience of vertically un-even setups */
            tmp_e2 = add( tmp_e2, tmp_e1 );
@@ -1454,6 +1456,13 @@ static void computeVerticalDiffuseness_fx(
            {
                tmp = L_shl( tmp, add( 16, tmp_e2 ) ); // Q31
            }
        }
        ELSE
        {
            tmp = ONE_IN_Q31; // Q31
            move32();
        }

        diffuseness[i] = tmp; // Q31
        move32();
    }