Commit a46f74eb authored by Vladimir Malenovsky's avatar Vladimir Malenovsky
Browse files

Merge branch 'main' into 815-prepare-framework-for-wmc_tool

parents edef7c63 96c285ba
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1063,6 +1063,7 @@ Word64 W_msu_16_16( Word64 L64_var1, Word16 var2, Word16 var3 )
    return L64_var_out;
}

/* Below BASOP is not part of STL 2023 library, might be proposed in next update */
/*________________________________________________________________________________________________
|                                                                                                 |
|   Function Name : W_mac_32_32                                                                   |
+1 −0
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ Word64 W_msu0_16_16( Word64 L64_acc, Word16 var1, Word16 var2 );
Word64 W_mult_16_16( Word16 var1, Word16 var2 );
Word64 W_mac_16_16( Word64 L64_acc, Word16 var1, Word16 var2 );
Word64 W_msu_16_16( Word64 L64_acc, Word16 var1, Word16 var2 );
/* BASOP W_mac_32_32 is not part of STL 2023 library, might be proposed in next update */
Word64 W_mac_32_32( Word64 L64_acc, Word32 var1, Word32 var2 );

Word64 W_deposit32_l( Word32 L_var1 );
+16 −0
Original line number Diff line number Diff line
@@ -1360,8 +1360,12 @@ void minimum_statistics_fx(
                scalar16 = shl( scalar16, s3 );
                scalar16 = s_max( scalar16, MSALPHACORMAX );

#ifdef IVAS_ENH32_CADENCE_CHANGES
                hFdCngCom->msAlphaCor[cnt] = Madd_32_16( L_mult( scalar16, msAlphaCorAlpha2 ), hFdCngCom->msAlphaCor[cnt], msAlphaCorAlpha );
#else
                hFdCngCom->msAlphaCor[cnt] = L_add( Mpy_32_16_1( hFdCngCom->msAlphaCor[cnt], msAlphaCorAlpha ),
                                                    L_mult( scalar16, msAlphaCorAlpha2 ) );
#endif
                move32();
            }

@@ -1447,8 +1451,12 @@ void minimum_statistics_fx(
                }

                /* Compute the PSD (smoothed periodogram) in each band */
#ifdef IVAS_ENH32_CADENCE_CHANGES
                msPsd[j] = round_fx( Madd_32_16( Mpy_32_16_1( msAlpha[j], msPsd[j] ), L_sub( 2147483647l /*1.0 Q31*/, msAlpha[j] ), msPeriodog[j] ) );
#else
                msPsd[j] = round_fx( L_add( Mpy_32_16_1( msAlpha[j], msPsd[j] ),
                                            Mpy_32_16_1( L_sub( 2147483647l /*1.0 Q31*/, msAlpha[j] ), msPeriodog[j] ) ) );
#endif
                move16();
            }
            msPsdSum[cnt] = dotp_s_fx( msPsd + start, psize + start, current_len, CNG_HS );
@@ -1527,13 +1535,21 @@ void minimum_statistics_fx(

                /* Compute bias correction Bmin */
                tmp0 = Mpy_32_16_1( scalar, QeqInv );
#ifdef IVAS_ENH32_CADENCE_CHANGES
                tmp1 = L_msu( 1073741824l /*0.5 Q31*/, msM_win, QeqInv );
#else
                tmp1 = L_sub( 1073741824l /*0.5 Q31*/, L_mult( msM_win, QeqInv ) );
#endif
                tmp16 = BASOP_Util_Divide3232_uu_1616_Scale( tmp0, tmp1, &s );
                msBminWin[j] = L_add( 134217728l /*1.0 Q27*/, L_shl( L_deposit_h( tmp16 ), add( s, 7 - 4 ) ) );
                move32();

                tmp0 = Mpy_32_16_1( scalar2, QeqInv );
#ifdef IVAS_ENH32_CADENCE_CHANGES
                tmp1 = L_msu( 1073741824l /*0.5 Q31*/, msM_subwin, QeqInv );
#else
                tmp1 = L_sub( 1073741824l /*0.5 Q31*/, L_mult( msM_subwin, QeqInv ) );
#endif
                tmp16 = BASOP_Util_Divide3232_uu_1616_Scale( tmp0, tmp1, &s );
                msBminSubWin[j] = L_add( 134217728l /*1.0 Q27*/, L_shl( L_deposit_h( tmp16 ), s ) );
                move32();
+48 −0
Original line number Diff line number Diff line
@@ -537,6 +537,53 @@ void Interpolate_allpass_steep_32(
    int16_t n, k;
    Word32 temp_fx[ALLPASSSECTIONS_STEEP - 1];

#ifdef IVAS_ENH32_CADENCE_CHANGES
    /* upper allpass filter chain */
    FOR( k = 0; k < N; k++ )
    {
        temp_fx[0] = Madd_32_16( mem_fx[0], in_fx[k], AP2_STEEP_FX[0] );
        move32();
        mem_fx[0] = Msub_32_16( in_fx[k], temp_fx[0], AP2_STEEP_FX[0] );
        move32();

        /* for better performance, unroll this loop */
        FOR( n = 1; n < ALLPASSSECTIONS_STEEP - 1; n++ )
        {
            temp_fx[n] = Madd_32_16( mem_fx[n], temp_fx[n - 1], AP2_STEEP_FX[n] );
            move32();
            mem_fx[n] = Msub_32_16( temp_fx[n - 1], temp_fx[n], AP2_STEEP_FX[n] );
            move32();
        }

        out_fx[2 * k + 1] = Madd_32_16( mem_fx[ALLPASSSECTIONS_STEEP - 1], temp_fx[ALLPASSSECTIONS_STEEP - 2], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] );
        move32();
        mem_fx[ALLPASSSECTIONS_STEEP - 1] = Msub_32_16( temp_fx[ALLPASSSECTIONS_STEEP - 2], out_fx[2 * k + 1], AP2_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] );
        move32();
    }

    /* lower allpass filter chain */
    FOR( k = 0; k < N; k++ )
    {
        temp_fx[0] = Madd_32_16( mem_fx[ALLPASSSECTIONS_STEEP], in_fx[k], AP1_STEEP_FX[0] );
        move32();
        mem_fx[ALLPASSSECTIONS_STEEP] = Msub_32_16( in_fx[k], temp_fx[0], AP1_STEEP_FX[0] );
        move32();

        /* for better performance, unroll this loop */
        FOR( n = 1; n < ALLPASSSECTIONS_STEEP - 1; n++ )
        {
            temp_fx[n] = Madd_32_16( mem_fx[ALLPASSSECTIONS_STEEP + n], temp_fx[n - 1], AP1_STEEP_FX[n] );
            move32();
            mem_fx[ALLPASSSECTIONS_STEEP + n] = Msub_32_16( temp_fx[n - 1], temp_fx[n], AP1_STEEP_FX[n] );
            move32();
        }

        out_fx[2 * k] = Madd_32_16( mem_fx[2 * ALLPASSSECTIONS_STEEP - 1], temp_fx[ALLPASSSECTIONS_STEEP - 2], AP1_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] );
        move32();
        mem_fx[2 * ALLPASSSECTIONS_STEEP - 1] = Msub_32_16( temp_fx[ALLPASSSECTIONS_STEEP - 2], out_fx[2 * k], AP1_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] );
        move32();
    }
#else
    /* upper allpass filter chain */
    FOR( k = 0; k < N; k++ )
    {
@@ -582,6 +629,7 @@ void Interpolate_allpass_steep_32(
        mem_fx[2 * ALLPASSSECTIONS_STEEP - 1] = L_sub( temp_fx[ALLPASSSECTIONS_STEEP - 2], Mpy_32_16_1( out_fx[2 * k], AP1_STEEP_FX[ALLPASSSECTIONS_STEEP - 1] ) );
        move32();
    }
#endif

    return;
}
+1 −0
Original line number Diff line number Diff line
@@ -89,6 +89,7 @@
#define FIX_785_REMOVE_DEAD_CODE                        /* VA: issue 785: remove dead code */
#define FIX_852_FIX_HANDLE_DEREF                        /* VA: issue 852: Fix missing handle dereferencing of hIsmMetadaData in ivas_ism_metadata_close() */
#define FIX_901_PARAMMC_DEAD_CODE                       /* FhG: issue 901: remove dead ParamMC code             */
#define IVAS_ENH32_CADENCE_CHANGES

/* #################### End BE switches ################################## */

Loading