Loading lib_com/prot_fx.h +5 −5 Original line number Diff line number Diff line Loading @@ -60,10 +60,10 @@ #define TCX_IMDCT_HEADROOM 1 #define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 // nonbe // | #define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 // nonbe // | > 3.1 WOPS #define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 // nonbe // | #define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig // BE // .9 WMOPS -- all pipes green //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 // nonbe // | //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 // nonbe // | > 3.1 WOPS, pipe testing https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50562 //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 // nonbe // | //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig // BE // .9 WMOPS -- all pipes green // ^^^^^^^^ // Numbers ALL: 84,189 // Numbers beOnly: 87,344 Loading @@ -71,7 +71,7 @@ //----------------------------------------------------------------------- #define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx_0 // .8 WMOPS BE, all pipes green! //#define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx_0 // .8 WMOPS BE, all pipes green! // OPT_STEREO_32KBPS_V1 switch is inactive - why? (3.2 WMOPS) Loading lib_com/tools_fx.c +37 −0 Original line number Diff line number Diff line Loading @@ -760,6 +760,7 @@ void Copy_Scale_sig_16_32_DEPREC( } } #define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat void Copy_Scale_sig_16_32_no_sat( const Word16 x[], /* i : signal to scale input Qx */ Word32 y[], /* o : scaled signal output Qx */ Loading Loading @@ -794,6 +795,41 @@ void Copy_Scale_sig_16_32_no_sat( } return; } #ifdef FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat //#define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat_TEST L_tmp = L_shl_o( 1, exp0 - 1, &Overflow ); IF( L_tmp >= 0x7FFF ) { FOR( i = 0; i < lg; i++ ) { // y[i] = L_mult0(x[i], L_tmp); y[i] = W_extract_l( W_mult_32_16( L_tmp, x[i] ) ); move32(); /* saturation can occur here */ #ifdef FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat_TEST Word32 tmp32 = W_extract_l( W_mult_32_16( L_tmp, x[i] ) ); if ( tmp32 != y[i] ) assert( 0 ); #endif } return; } //ELSE { Word16 tmp = extract_l( L_tmp ); FOR( i = 0; i < lg; i++ ) { y[i] = L_mult(x[i], L_tmp); move32(); /* saturation can occur here */ #ifdef FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat_TEST Word32 tmp32 = W_extract_l( W_mult_32_16( L_tmp, x[i] ) ); if ( tmp32 != y[i] ) assert( 0 ); #endif } } #else L_tmp = L_shl_o( 1, exp0 - 1, &Overflow ); FOR( i = 0; i < lg; i++ ) { Loading @@ -801,6 +837,7 @@ void Copy_Scale_sig_16_32_no_sat( y[i] = W_extract_l( W_mult_32_16( L_tmp, x[i] ) ); move32(); /* saturation can occur here */ } #endif } void Copy_Scale_sig_32_16( Loading Loading
lib_com/prot_fx.h +5 −5 Original line number Diff line number Diff line Loading @@ -60,10 +60,10 @@ #define TCX_IMDCT_HEADROOM 1 #define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 // nonbe // | #define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 // nonbe // | > 3.1 WOPS #define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 // nonbe // | #define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig // BE // .9 WMOPS -- all pipes green //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE1 // nonbe // | //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE2 // nonbe // | > 3.1 WOPS, pipe testing https://forge.3gpp.org/rep/sa4/audio/ivas-basop/-/pipelines/50562 //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_STAGE3 // nonbe // | //#define FIX_1439_SPEEDUP_elliptic_bpf_48k_generic_upsampledsig // BE // .9 WMOPS -- all pipes green // ^^^^^^^^ // Numbers ALL: 84,189 // Numbers beOnly: 87,344 Loading @@ -71,7 +71,7 @@ //----------------------------------------------------------------------- #define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx_0 // .8 WMOPS BE, all pipes green! //#define FIX_1439_SPEEDUP_ivas_swb_tbe_dec_fx_0 // .8 WMOPS BE, all pipes green! // OPT_STEREO_32KBPS_V1 switch is inactive - why? (3.2 WMOPS) Loading
lib_com/tools_fx.c +37 −0 Original line number Diff line number Diff line Loading @@ -760,6 +760,7 @@ void Copy_Scale_sig_16_32_DEPREC( } } #define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat void Copy_Scale_sig_16_32_no_sat( const Word16 x[], /* i : signal to scale input Qx */ Word32 y[], /* o : scaled signal output Qx */ Loading Loading @@ -794,6 +795,41 @@ void Copy_Scale_sig_16_32_no_sat( } return; } #ifdef FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat //#define FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat_TEST L_tmp = L_shl_o( 1, exp0 - 1, &Overflow ); IF( L_tmp >= 0x7FFF ) { FOR( i = 0; i < lg; i++ ) { // y[i] = L_mult0(x[i], L_tmp); y[i] = W_extract_l( W_mult_32_16( L_tmp, x[i] ) ); move32(); /* saturation can occur here */ #ifdef FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat_TEST Word32 tmp32 = W_extract_l( W_mult_32_16( L_tmp, x[i] ) ); if ( tmp32 != y[i] ) assert( 0 ); #endif } return; } //ELSE { Word16 tmp = extract_l( L_tmp ); FOR( i = 0; i < lg; i++ ) { y[i] = L_mult(x[i], L_tmp); move32(); /* saturation can occur here */ #ifdef FIX_1439_SPEEDUP_Copy_Scale_sig_16_32_no_sat_TEST Word32 tmp32 = W_extract_l( W_mult_32_16( L_tmp, x[i] ) ); if ( tmp32 != y[i] ) assert( 0 ); #endif } } #else L_tmp = L_shl_o( 1, exp0 - 1, &Overflow ); FOR( i = 0; i < lg; i++ ) { Loading @@ -801,6 +837,7 @@ void Copy_Scale_sig_16_32_no_sat( y[i] = W_extract_l( W_mult_32_16( L_tmp, x[i] ) ); move32(); /* saturation can occur here */ } #endif } void Copy_Scale_sig_32_16( Loading