Commit 6a9f686c authored by Manuel Jander's avatar Manuel Jander
Browse files

Merge remote-tracking branch 'origin/main' into...

Merge remote-tracking branch 'origin/main' into 1010-complexity-high-complexity-overhead-for-parammc-decoding
parents daead0fd 33cc0215
Loading
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -1571,7 +1571,7 @@ Word32 DEPR_L_macNs( Word32 L_var3, Word16 var1, Word16 var2, Flag *Carry )
    Word32 L_var_out;

    L_var_out = L_mult( var1, var2 );
    L_var_out = DEPR_L_add_c( L_var3, L_var_out, Carry );
    L_var_out = L_add_c( L_var3, L_var_out, Carry );

#ifdef WMOPS
    multiCounter[currCounter].L_mult--;
@@ -1938,7 +1938,7 @@ Word32 L_sub_sat( Word32 L_var1, Word32 L_var2 )
#ifndef BASOP_NOGLOB
Word32 L_add_c( Word32 L_var1, Word32 L_var2 )
#else  /* BASOP_NOGLOB */
Word32 DEPR_L_add_c( Word32 L_var1, Word32 L_var2, Flag *Carry )
Word32 L_add_c( Word32 L_var1, Word32 L_var2, Flag *Carry )
#endif /* BASOP_NOGLOB */
{
    Word32 L_var_out;
@@ -2121,13 +2121,13 @@ Word32 L_add_co( Word32 L_var1, Word32 L_var2, Flag *Carry, Flag *Overflow )
        carry_int ? set_carry( Carry ) : unset_carry( Carry );
    }

#ifdef WMOPS
    multiCounter[currCounter].L_add_c++;
#endif
    return ( L_var_out );
}
Word32 L_add_c( Word32 L_var1, Word32 L_var2 )
{
    return L_add_co( L_var1, L_var2, NULL, NULL );
}
#endif

/*___________________________________________________________________________
 |                                                                           |
 |   Function Name : L_sub_c                                                 |
@@ -2199,7 +2199,7 @@ Word32 DEPR_L_sub_c( Word32 L_var1, Word32 L_var2, Flag *Carry )
#ifndef BASOP_NOGLOB
            L_var_out = L_add_c( L_var1, -L_var2 );
#else  /* BASOP_NOGLOB */
            L_var_out = DEPR_L_add_c( L_var1, -L_var2, Carry );
            L_var_out = L_add_c( L_var1, -L_var2, Carry );
#endif /* BASOP_NOGLOB */
#ifdef WMOPS
            multiCounter[currCounter].L_add_c--;
+1 −2
Original line number Diff line number Diff line
@@ -163,7 +163,6 @@ Word32 L_macNs( Word32 L_var3, Word16 var1, Word16 var2 ); /*
Word32 L_msuNs( Word32 L_var3, Word16 var1, Word16 var2 );                   /* Msu without sat, 1 */
Word32 L_add_co( Word32 L_var1, Word32 L_var2, Flag *Carry, Flag *Overflow );
Word32 L_sub_co( Word32 L_var1, Word32 L_var2, Flag *Carry, Flag *Overflow );
Word32 L_add_c( Word32 L_var1, Word32 L_var2 );                              /* Long add with c, 2 */
Word32 L_sub_c( Word32 L_var1, Word32 L_var2 );                              /* Long sub with c, 2 */

#endif /* BASOP_NOGLOB */
@@ -189,7 +188,7 @@ Word16 shr_r( Word16 var1, Word16 var2 ); /* Shift right with
#else                                           /* BASOP_NOGLOB */
Word32 L_add( Word32 L_var1, Word32 L_var2 );                                /* Long add,        1 */
Word32 L_sub( Word32 L_var1, Word32 L_var2 );                                /* Long sub,        1 */
Word32 DEPR_L_add_c( Word32 L_var1, Word32 L_var2, Flag *Carry );            /* Long add with c, 2 */
Word32 L_add_c( Word32 L_var1, Word32 L_var2, Flag *Carry );                 /* Long add with c, 2 */
Word32 DEPR_L_sub_c( Word32 L_var1, Word32 L_var2, Flag *Carry );            /* Long sub with c, 2 */
Word32 L_negate( Word32 L_var1 );                                            /* Long negate,     1 */
Word16 mult_r( Word16 var1, Word16 var2 );                                   /* Mult with round, 1 */
+7 −4
Original line number Diff line number Diff line
@@ -117,4 +117,7 @@
#define FIX_ISSUE_1152                          /* Ittiam: Fix for issue 1152: Assertion error observed in evs_enc_fx (with option stereo_dmx_evs) from find_tilt_fx function*/
#define FIX_ISSUE_1156                          /* Ittiam: Fix for Issue 1156: Encoder crash for Stereo at 32kbps in SWB_BWE_encoding_ivas_fx() */
#define FIX_DISCLAIMER                          /* VA: Add disclaimer for external renderer + Add info about IVAS reference version (FLP issue 1225) */
#define FIX_ISSUE_1167                          /* Ittiam: Fix for Issue 1167: Encoder crash for OSBA ISM3SBA1 at 13.2 and 16.4 kbps in gauss_L2_ivas_fx() */
#define FIX_1009_REPLACE_DIV_SQRT_BY_ISQRT_LC   /* FhG: Reduce workload of binaural rendering: replace 1./tmp & sqrt by Isqrt32 */
#define FIX_1113_OPT_DIRAC_BIN_REND             /* FhG: Various optimizations to ivas_dirac_dec_binaual_functions.c */
#endif
+19 −1
Original line number Diff line number Diff line
@@ -143,14 +143,24 @@ void gauss_L2_ivas_fx(
    *gain = L_deposit_l( 0 );
    move32();
    /*Update correlations for gains coding */
#ifdef FIX_ISSUE_1167
    tmp32 = L_shr( 21474836l /*0.01f Q31*/, 31 - 16 );   /* Q16 */
    tmp32_2 = L_shr( 21474836l /*0.01f Q31*/, 31 - 16 ); /* Q16 */
    FOR( i = 0; i < L_SUBFR; i++ )
    {
        tmp16 = shr( y11[i], 1 );
        tmp32 = L_mac0( tmp32, tmp16, tmp16 );               /* Q16 */
        tmp32_2 = L_mac0( tmp32_2, tmp16, shr( y2[i], 1 ) ); /* Q16 */
    }
#else
    tmp32 = L_shr( 21474836l /*0.01f Q31*/, 31 - 18 );   /* Q18 */
    tmp32_2 = L_shr( 21474836l /*0.01f Q31*/, 31 - 18 ); /* Q18 */

    FOR( i = 0; i < L_SUBFR; i++ )
    {
        tmp32 = L_mac0( tmp32, y11[i], y11[i] );    /* Q18 */
        tmp32_2 = L_mac0( tmp32_2, y11[i], y2[i] ); /* Q18 */
    }
#endif

    tmp16 = norm_l( tmp32 );
    // To be checked
@@ -159,13 +169,21 @@ void gauss_L2_ivas_fx(
#else
    g_corr->y1y1 = round_fx( L_shl( tmp32, tmp16 ) );
#endif
#ifdef FIX_ISSUE_1167
    g_corr->y1y1_e = sub( 31 - 16, tmp16 );
#else
    g_corr->y1y1_e = sub( 31 - 18, tmp16 );
#endif
    move16();
    move16();

    tmp16 = norm_l( tmp32_2 );
    g_corr->y1y2 = round_fx_sat( L_shl( tmp32_2, tmp16 ) );
#ifdef FIX_ISSUE_1167
    g_corr->y1y2_e = sub( 31 - 16, tmp16 );
#else
    g_corr->y1y2_e = sub( 31 - 18, tmp16 );
#endif
    move16();
    move16();
}
+19 −2
Original line number Diff line number Diff line
@@ -2364,7 +2364,16 @@ static void reduce_metadata_further_fx(
        }
    }

    tmp2 = W_norm( W_tmp );
    IF( W_tmp != 0 )
    {
        tmp2 = sub( W_norm( W_tmp ), 1 ); // Usage of guard bits to avoid the large values of onset_detector in multiplication
    }
    ELSE
    {
        tmp2 = 0;
        move16();
    }

    tmp2 = s_min( 32, tmp2 );
    totalEnergySum = W_extract_h( W_shl( W_tmp, tmp2 ) );
    tmp2 = sub( tmp2, 32 );
@@ -2500,6 +2509,8 @@ static void reduce_metadata_further_fx(
        Word32 x, y, z;
        Word32 veclen, L_tmp;

        W_tmp = 0;
        move64();
        FOR( band = 0; band < numCodingBands; band++ )
        {
            xSum = 0;
@@ -2528,9 +2539,14 @@ static void reduce_metadata_further_fx(
                ySum = L_add( ySum, y );
                zSum = L_add( zSum, z );

                bandSumEnergy = L_add( bandSumEnergy, energy[sf][band] );
                W_tmp = W_add( W_tmp, energy[sf][band] );
            }

            tmp2 = W_norm( W_tmp );
            tmp2 = s_min( 32, tmp2 );
            bandSumEnergy = W_extract_h( W_shl( W_tmp, tmp2 ) );
            tmp2 = sub( add( hMasa->data.q_energy, tmp2 ), 32 );

            aziRad = BASOP_util_atan2( ySum, xSum, 0 ); // Q13
            W_xSum_sq = W_mult0_32_32( xSum, xSum );    // 2 * hMasa->data.q_energy - Q6
            W_ySum_sq = W_mult0_32_32( ySum, ySum );    // 2 * hMasa->data.q_energy - Q6
@@ -2558,6 +2574,7 @@ static void reduce_metadata_further_fx(
                }
                // hqmetadata->q_direction[0].coherence_band_data[band].spread_coherence[0] = (uint8_t) roundf( spreadCohSum / ( bandSumEnergy + EPSILON ) * 255.0f );
                tmp = BASOP_Util_Divide3232_Scale( spreadCohSum, bandSumEnergy, &exp );
                exp = add( exp, sub( tmp2, hMasa->data.q_energy ) );
                tmp = mult_r( tmp, 32640 /* 255 in Q7 */ );                                                                    // 15 - exp + 7 - 15 => 7 - exp
                hqmetadata->q_direction[0].coherence_band_data[band].spread_coherence[0] = (UWord8) shr( tmp, sub( 7, exp ) ); // Q0
                move16();
Loading