Loading lib_com/options.h +4 −4 Original line number Diff line number Diff line Loading @@ -114,7 +114,7 @@ #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 OPT_2269_IVAS_DIRAC_DEC_BINAURAL_FUNCTIONS /* Dolby: Issue 2269, optimize IVAS DIRAC DEC binaural functions. */ #define OPT_2269_IVAS_DIRAC_DEC_BINAURAL_FUNCTIONS /* Dolby: Issue 2269, optimize IVAS DIRAC DEC binaural functions. */ #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 */ /* #################### End BASOP optimization switches ############################ */ Loading lib_rend/ivas_dirac_dec_binaural_functions_fx.c +21 −31 Original line number Diff line number Diff line Loading @@ -4187,33 +4187,23 @@ static void matrixDiagMul_fx( Word32 not_zero = 0; #ifdef OPT_2269_IVAS_DIRAC_DEC_BINAURAL_FUNCTIONS reOut_fx[0][0] = Mpy_32_32( reIn_fx[0][0], D_fx[0] ); imOut_fx[0][0] = Mpy_32_32( imIn_fx[0][0], D_fx[0] ); move32(); move32(); not_zero = L_or( not_zero, reOut_fx[0][0] ); not_zero = L_or( not_zero, imOut_fx[0][0] ); reOut_fx[0][1] = Mpy_32_32( reIn_fx[0][1], D_fx[1] ); imOut_fx[0][1] = Mpy_32_32( imIn_fx[0][1], D_fx[1] ); move32(); move32(); not_zero = L_or( not_zero, reOut_fx[0][1] ); not_zero = L_or( not_zero, imOut_fx[0][1] ); reOut_fx[1][0] = Mpy_32_32( reIn_fx[1][0], D_fx[0] ); imOut_fx[1][0] = Mpy_32_32( imIn_fx[1][0], D_fx[0] ); move32(); move32(); not_zero = L_or( not_zero, reOut_fx[1][0] ); not_zero = L_or( not_zero, imOut_fx[1][0] ); reOut_fx[1][1] = Mpy_32_32( reIn_fx[1][1], D_fx[1] ); imOut_fx[1][1] = Mpy_32_32( imIn_fx[1][1], D_fx[1] ); move32(); move32(); not_zero = L_or( not_zero, reOut_fx[1][1] ); not_zero = L_or( not_zero, imOut_fx[1][1] ); #define MATRIX_DIAG_MUL_FX( chA, chB ) \ do \ { \ reOut_fx[chA][chB] = Mpy_32_32( reIn_fx[chA][chB], D_fx[chB] ); \ imOut_fx[chA][chB] = Mpy_32_32( imIn_fx[chA][chB], D_fx[chB] ); \ move32(); \ move32(); \ not_zero = L_or( not_zero, reOut_fx[chA][chB] ); \ not_zero = L_or( not_zero, imOut_fx[chA][chB] ); \ } while ( 0 ) MATRIX_DIAG_MUL_FX( 0, 0 ) MATRIX_DIAG_MUL_FX( 0, 1 ) MATRIX_DIAG_MUL_FX( 1, 0 ) MATRIX_DIAG_MUL_FX( 1, 1 ) #undef MATRIX_DIAG_MUL_FX #else Word16 chA, chB; Loading Loading @@ -4246,7 +4236,7 @@ static void matrixScale_fx( Word32 Aim_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS], /*q_A*/ Word16 *q_A ) { #ifdef OPT_2269_IVAS_DIRAC_DEC_BINAURAL_FUNCTIONS #if 0 // def OPT_2269_IVAS_DIRAC_DEC_BINAURAL_FUNCTIONS Word16 shift_tmp; Word16 shift = 31; move16(); Loading Loading @@ -4340,7 +4330,7 @@ static void matrixMul_fx( Word16 *q_out ) { Word32 not_zero = 0; #if defined( OPT_2269_IVAS_DIRAC_DEC_BINAURAL_FUNCTIONS ) && !defined( IVAS_ENH64_CADENCE_CHANGES ) #if 0 // defined( OPT_2269_IVAS_DIRAC_DEC_BINAURAL_FUNCTIONS ) && !defined( IVAS_ENH64_CADENCE_CHANGES ) outRe_fx[0][0] = Msub_32_32( Msub_32_32( Madd_32_32( Mpy_32_32( Are_fx[0][0], Bre_fx[0][0] ), Are_fx[0][1], Bre_fx[1][0] ), Aim_fx[0][0], Bim_fx[0][0] ), Loading Loading @@ -4459,7 +4449,7 @@ static void matrixTransp1Mul_fx( Word32 not_zero = 0; move32(); #ifdef OPT_2269_IVAS_DIRAC_DEC_BINAURAL_FUNCTIONS #if 0 // def OPT_2269_IVAS_DIRAC_DEC_BINAURAL_FUNCTIONS tmp64 = W_mult_32_32( Are_fx[0][0], Bre_fx[0][0] ); tmp64 = W_mac_32_32( tmp64, Are_fx[1][0], Bre_fx[1][0] ); tmp64 = W_mac_32_32( tmp64, Aim_fx[0][0], Bim_fx[0][0] ); Loading Loading @@ -4603,7 +4593,7 @@ static void matrixTransp2Mul_fx( Word16 *q_out ) { Word32 not_zero = 0; #if defined( OPT_2269_IVAS_DIRAC_DEC_BINAURAL_FUNCTIONS ) && !defined( IVAS_ENH64_CADENCE_CHANGES ) #if 0 // defined( OPT_2269_IVAS_DIRAC_DEC_BINAURAL_FUNCTIONS ) && !defined( IVAS_ENH64_CADENCE_CHANGES ) outRe_fx[0][0] = Madd_32_32( Madd_32_32( Madd_32_32( Mpy_32_32( Are_fx[0][0], Bre_fx[0][0] ), Are_fx[0][1], Bre_fx[0][1] ), Aim_fx[0][0], Bim_fx[0][0] ), Loading Loading
lib_com/options.h +4 −4 Original line number Diff line number Diff line Loading @@ -114,7 +114,7 @@ #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 OPT_2269_IVAS_DIRAC_DEC_BINAURAL_FUNCTIONS /* Dolby: Issue 2269, optimize IVAS DIRAC DEC binaural functions. */ #define OPT_2269_IVAS_DIRAC_DEC_BINAURAL_FUNCTIONS /* Dolby: Issue 2269, optimize IVAS DIRAC DEC binaural functions. */ #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 */ /* #################### End BASOP optimization switches ############################ */ Loading
lib_rend/ivas_dirac_dec_binaural_functions_fx.c +21 −31 Original line number Diff line number Diff line Loading @@ -4187,33 +4187,23 @@ static void matrixDiagMul_fx( Word32 not_zero = 0; #ifdef OPT_2269_IVAS_DIRAC_DEC_BINAURAL_FUNCTIONS reOut_fx[0][0] = Mpy_32_32( reIn_fx[0][0], D_fx[0] ); imOut_fx[0][0] = Mpy_32_32( imIn_fx[0][0], D_fx[0] ); move32(); move32(); not_zero = L_or( not_zero, reOut_fx[0][0] ); not_zero = L_or( not_zero, imOut_fx[0][0] ); reOut_fx[0][1] = Mpy_32_32( reIn_fx[0][1], D_fx[1] ); imOut_fx[0][1] = Mpy_32_32( imIn_fx[0][1], D_fx[1] ); move32(); move32(); not_zero = L_or( not_zero, reOut_fx[0][1] ); not_zero = L_or( not_zero, imOut_fx[0][1] ); reOut_fx[1][0] = Mpy_32_32( reIn_fx[1][0], D_fx[0] ); imOut_fx[1][0] = Mpy_32_32( imIn_fx[1][0], D_fx[0] ); move32(); move32(); not_zero = L_or( not_zero, reOut_fx[1][0] ); not_zero = L_or( not_zero, imOut_fx[1][0] ); reOut_fx[1][1] = Mpy_32_32( reIn_fx[1][1], D_fx[1] ); imOut_fx[1][1] = Mpy_32_32( imIn_fx[1][1], D_fx[1] ); move32(); move32(); not_zero = L_or( not_zero, reOut_fx[1][1] ); not_zero = L_or( not_zero, imOut_fx[1][1] ); #define MATRIX_DIAG_MUL_FX( chA, chB ) \ do \ { \ reOut_fx[chA][chB] = Mpy_32_32( reIn_fx[chA][chB], D_fx[chB] ); \ imOut_fx[chA][chB] = Mpy_32_32( imIn_fx[chA][chB], D_fx[chB] ); \ move32(); \ move32(); \ not_zero = L_or( not_zero, reOut_fx[chA][chB] ); \ not_zero = L_or( not_zero, imOut_fx[chA][chB] ); \ } while ( 0 ) MATRIX_DIAG_MUL_FX( 0, 0 ) MATRIX_DIAG_MUL_FX( 0, 1 ) MATRIX_DIAG_MUL_FX( 1, 0 ) MATRIX_DIAG_MUL_FX( 1, 1 ) #undef MATRIX_DIAG_MUL_FX #else Word16 chA, chB; Loading Loading @@ -4246,7 +4236,7 @@ static void matrixScale_fx( Word32 Aim_fx[BINAURAL_CHANNELS][BINAURAL_CHANNELS], /*q_A*/ Word16 *q_A ) { #ifdef OPT_2269_IVAS_DIRAC_DEC_BINAURAL_FUNCTIONS #if 0 // def OPT_2269_IVAS_DIRAC_DEC_BINAURAL_FUNCTIONS Word16 shift_tmp; Word16 shift = 31; move16(); Loading Loading @@ -4340,7 +4330,7 @@ static void matrixMul_fx( Word16 *q_out ) { Word32 not_zero = 0; #if defined( OPT_2269_IVAS_DIRAC_DEC_BINAURAL_FUNCTIONS ) && !defined( IVAS_ENH64_CADENCE_CHANGES ) #if 0 // defined( OPT_2269_IVAS_DIRAC_DEC_BINAURAL_FUNCTIONS ) && !defined( IVAS_ENH64_CADENCE_CHANGES ) outRe_fx[0][0] = Msub_32_32( Msub_32_32( Madd_32_32( Mpy_32_32( Are_fx[0][0], Bre_fx[0][0] ), Are_fx[0][1], Bre_fx[1][0] ), Aim_fx[0][0], Bim_fx[0][0] ), Loading Loading @@ -4459,7 +4449,7 @@ static void matrixTransp1Mul_fx( Word32 not_zero = 0; move32(); #ifdef OPT_2269_IVAS_DIRAC_DEC_BINAURAL_FUNCTIONS #if 0 // def OPT_2269_IVAS_DIRAC_DEC_BINAURAL_FUNCTIONS tmp64 = W_mult_32_32( Are_fx[0][0], Bre_fx[0][0] ); tmp64 = W_mac_32_32( tmp64, Are_fx[1][0], Bre_fx[1][0] ); tmp64 = W_mac_32_32( tmp64, Aim_fx[0][0], Bim_fx[0][0] ); Loading Loading @@ -4603,7 +4593,7 @@ static void matrixTransp2Mul_fx( Word16 *q_out ) { Word32 not_zero = 0; #if defined( OPT_2269_IVAS_DIRAC_DEC_BINAURAL_FUNCTIONS ) && !defined( IVAS_ENH64_CADENCE_CHANGES ) #if 0 // defined( OPT_2269_IVAS_DIRAC_DEC_BINAURAL_FUNCTIONS ) && !defined( IVAS_ENH64_CADENCE_CHANGES ) outRe_fx[0][0] = Madd_32_32( Madd_32_32( Madd_32_32( Mpy_32_32( Are_fx[0][0], Bre_fx[0][0] ), Are_fx[0][1], Bre_fx[0][1] ), Aim_fx[0][0], Bim_fx[0][0] ), Loading