Commit 537a1baf authored by multrus's avatar multrus
Browse files

[cleanup] accept OPT_2185_MATRIX_OUT_SCALING

parent ed1d0909
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -118,7 +118,6 @@

/* #################### Start BASOP optimization switches ############################ */

#define OPT_2185_MATRIX_OUT_SCALING         /* Dolby: Issue 2185, optimize matrix-mul output-format. */
#define NONBE_OPT_2239_IVAS_FILTER_PROCESS  /* Dolby: Issue 2239, optimize ivas_filter_process_fx. */
#define NONBE_OPT_2193_EIG2X2               /* Dolby: Issue 2193, optimize eig2x2_fx. */
#define BE_FIX_2240_COMPUTE_COV_MTC_FX_FAST /* FhG: Speeds up covariance calculation e.g. 60 WMOPS for encoding -mc 7_1_4 24400 48 */
+0 −52
Original line number Diff line number Diff line
@@ -4184,9 +4184,7 @@ static void matrixDiagMul_fx(
{
    Word16 chA, chB;

#ifdef OPT_2185_MATRIX_OUT_SCALING
    Word32 not_zero = 0;
#endif

    FOR( chA = 0; chA < BINAURAL_CHANNELS; chA++ )
    {
@@ -4196,29 +4194,18 @@ static void matrixDiagMul_fx(
            imOut_fx[chA][chB] = Mpy_32_32( imIn_fx[chA][chB], D_fx[chB] );
            move32();
            move32();
#ifdef OPT_2185_MATRIX_OUT_SCALING
            not_zero = L_or( not_zero, reOut_fx[chA][chB] );
            not_zero = L_or( not_zero, imOut_fx[chA][chB] );
#endif
        }
    }

    *q_Out = sub( add( q_In, q_D ), 31 );
    move16();
#ifdef OPT_2185_MATRIX_OUT_SCALING
    if ( !not_zero )
    {
        *q_Out = Q31;
        move16();
    }
#else
    Word16 size = i_mult( BINAURAL_CHANNELS, BINAURAL_CHANNELS );
    if ( L_and( is_zero_arr( reOut_fx[0], size ), is_zero_arr( imOut_fx[0], size ) ) )
    {
        *q_Out = Q31;
        move16();
    }
#endif


    return;
@@ -4250,9 +4237,7 @@ static void matrixMul_fx(
    Word16 *q_out )
{
    Word16 chA, chB;
#ifdef OPT_2185_MATRIX_OUT_SCALING
    Word32 not_zero = 0;
#endif

    FOR( chA = 0; chA < BINAURAL_CHANNELS; chA++ )
    {
@@ -4279,29 +4264,18 @@ static void matrixMul_fx(
                                             Are_fx[chA][1], Bim_fx[1][chB] );
            move32();
#endif /* #ifdef IVAS_ENH64_CADENCE_CHANGES */
#ifdef OPT_2185_MATRIX_OUT_SCALING
            not_zero = L_or( not_zero, outRe_fx[chA][chB] );
            not_zero = L_or( not_zero, outIm_fx[chA][chB] );
#endif
        }
    }

    *q_out = sub( add( *q_A, *q_B ), 31 );
    move16();
#ifdef OPT_2185_MATRIX_OUT_SCALING
    if ( !not_zero )
    {
        *q_out = Q31;
        move16();
    }
#else
    Word16 size = BINAURAL_CHANNELS * BINAURAL_CHANNELS;
    if ( L_and( is_zero_arr( outRe_fx[0], size ), is_zero_arr( outIm_fx[0], size ) ) )
    {
        *q_out = Q31;
        move16();
    }
#endif

    return;
}
@@ -4346,9 +4320,7 @@ static void matrixTransp1Mul_fx(
            common_lsh = s_min( common_lsh, W_norm( tmp_outIm_fx[chA][chB] ) );
        }
    }
#ifdef OPT_2185_MATRIX_OUT_SCALING
    Word32 not_zero = 0;
#endif
    FOR( chA = 0; chA < BINAURAL_CHANNELS; chA++ )
    {
        FOR( chB = 0; chB < BINAURAL_CHANNELS; chB++ )
@@ -4357,28 +4329,17 @@ static void matrixTransp1Mul_fx(
            move32();
            outIm_fx[chA][chB] = W_extract_h( W_shl( tmp_outIm_fx[chA][chB], common_lsh ) );
            move32();
#ifdef OPT_2185_MATRIX_OUT_SCALING
            not_zero = L_or( not_zero, outRe_fx[chA][chB] );
            not_zero = L_or( not_zero, outIm_fx[chA][chB] );
#endif
        }
    }
    *q_out = sub( add( q, common_lsh ), 32 );
    move16();
#ifdef OPT_2185_MATRIX_OUT_SCALING
    if ( !not_zero )
    {
        *q_out = Q31;
        move16();
    }
#else
    Word16 size = i_mult( BINAURAL_CHANNELS, BINAURAL_CHANNELS );
    if ( L_and( is_zero_arr( outRe_fx[0], size ), is_zero_arr( outIm_fx[0], size ) ) )
    {
        *q_out = Q31;
        move16();
    }
#endif

    return;
}
@@ -4396,9 +4357,7 @@ static void matrixTransp2Mul_fx(
{
    Word16 chA, chB;
    // Word16 size = BINAURAL_CHANNELS * BINAURAL_CHANNELS;
#ifdef OPT_2185_MATRIX_OUT_SCALING
    Word32 not_zero = 0;
#endif
    FOR( chA = 0; chA < BINAURAL_CHANNELS; chA++ )
    {
        FOR( chB = 0; chB < BINAURAL_CHANNELS; chB++ )
@@ -4424,29 +4383,18 @@ static void matrixTransp2Mul_fx(
                                             Are_fx[chA][1], Bim_fx[chB][1] );
            move32();
#endif /* #ifdef IVAS_ENH64_CADENCE_CHANGES */
#ifdef OPT_2185_MATRIX_OUT_SCALING
            not_zero = L_or( not_zero, outRe_fx[chA][chB] );
            not_zero = L_or( not_zero, outIm_fx[chA][chB] );
#endif
        }
    }

    *q_out = sub( add( *q_A, *q_B ), 31 );
    move16();
#ifdef OPT_2185_MATRIX_OUT_SCALING
    if ( !not_zero )
    {
        *q_out = Q31;
        move16();
    }
#else
    Word16 size = BINAURAL_CHANNELS * BINAURAL_CHANNELS;
    if ( L_and( is_zero_arr( outRe_fx[0], size ), is_zero_arr( outIm_fx[0], size ) ) )
    {
        *q_out = Q31;
        move16();
    }
#endif

    return;
}