Loading lib_com/options.h +0 −1 Original line number Diff line number Diff line Loading @@ -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 */ Loading lib_rend/ivas_dirac_dec_binaural_functions_fx.c +0 −52 Original line number Diff line number Diff line Loading @@ -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++ ) { Loading @@ -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; Loading Loading @@ -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++ ) { Loading @@ -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; } Loading Loading @@ -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++ ) Loading @@ -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; } Loading @@ -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++ ) Loading @@ -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; } Loading Loading
lib_com/options.h +0 −1 Original line number Diff line number Diff line Loading @@ -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 */ Loading
lib_rend/ivas_dirac_dec_binaural_functions_fx.c +0 −52 Original line number Diff line number Diff line Loading @@ -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++ ) { Loading @@ -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; Loading Loading @@ -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++ ) { Loading @@ -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; } Loading Loading @@ -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++ ) Loading @@ -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; } Loading @@ -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++ ) Loading @@ -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; } Loading