Loading lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -114,6 +114,7 @@ #define FIX_BASOP_2520_PARAMBIN_THRESHOLD_FIX /* Nokia: BASOP issue 2520: Fix wrong threshold in ParamBin */ #define FIX_BASOP_2510_UNNECESSARY_ASSERT /* Nokia: BASOP issue 2510: Fix by removing assert */ #define FIX_2515_TDREND_PORT_ERROR_SCALING /* Nokia: BASOP issue 2515: Fix port error by changing to correct scaling */ //#define FIX_BASOP_2517_CLICK_IN_OMASA_LTV /* FhG: BASOP #2517: preserve precision by removing one-bit headroom from Q_min and allowing saturation during buffer scaling */ /* ##################### End NON-BE switches ########################### */ Loading lib_enc/ivas_core_pre_proc_front_fx.c +13 −1 Original line number Diff line number Diff line Loading @@ -356,7 +356,11 @@ void pre_proc_front_ivas_fx( /* Take into account resampling memory for Q_min, and 1 bit headroom for resampling overshoot. */ IF( NE_32( input_Fs, INT_FS_12k8 ) ) { #ifdef FIX_BASOP_2517_CLICK_IN_OMASA_LTV Q_min = s_min( Q_min, add( st->mem_q, norm_arr( st->mem_decim_fx_q_inp, 2 * L_FILT_MAX ) ) ); #else Q_min = sub( s_min( Q_min, add( st->mem_q, norm_arr( st->mem_decim_fx_q_inp, 2 * L_FILT_MAX ) ) ), Q1 ); #endif } #endif /* Limit Q_min to avoid rescale larger than 15 against Q-1 */ Loading Loading @@ -479,7 +483,11 @@ void pre_proc_front_ivas_fx( *----------------------------------------------------------------*/ #ifdef NONBE_FIX_ISSUE_2206 #ifdef FIX_BASOP_2517_CLICK_IN_OMASA_LTV Scale_sig( st->mem_decim_fx_q_inp, 2 * L_FILT_MAX, sub( st->q_inp, st->mem_q ) ); /* st->q_inp */ #else scale_sig( st->mem_decim_fx_q_inp, 2 * L_FILT_MAX, sub( st->q_inp, st->mem_q ) ); /* st->q_inp */ #endif st->mem_q = st->q_inp; move16(); #else Loading @@ -491,7 +499,11 @@ void pre_proc_front_ivas_fx( { new_inp_out_size = modify_Fs_fx( signal_in_fx, input_frame, input_Fs, new_inp_12k8_fx, INT_FS_12k8, st->mem_decim_fx_q_inp, ( st->max_bwidth == NB ), &Q_new_inp, &mem_decim_size ); /* st->q_inp */ #ifdef NONBE_FIX_ISSUE_2206 #ifdef FIX_BASOP_2517_CLICK_IN_OMASA_LTV Scale_sig( new_inp_12k8_fx, new_inp_out_size, negate( Q_new_inp ) ); /* scaling back to st->q_inp*/ #else scale_sig( new_inp_12k8_fx, new_inp_out_size, negate( Q_new_inp ) ); /* scaling back to st->q_inp*/ #endif #else Scale_sig( new_inp_12k8_fx, new_inp_out_size, negate( Q_new_inp ) ); /* scaling back to st->q_inp*/ st->mem_q = st->q_inp; Loading @@ -505,7 +517,7 @@ void pre_proc_front_ivas_fx( #endif set16_fx( temp1F_icatdmResampBuf_fx, 0, L_FILT_MAX ); new_inp_out_size = modify_Fs_fx( temp1F_icatdmResampBuf_fx, NS2SA_FX2( input_Fs, DELAY_FIR_RESAMPL_NS ), input_Fs, new_inp_12k8_fx + L_FRAME, INT_FS_12k8, mem_decim_dummy_fx, 0, &Q_new_inp, &mem_decim_size ); /* st->q_inp */ #ifdef NONBE_FIX_ISSUE_2206 #if defined( NONBE_FIX_ISSUE_2206 ) && not defined( FIX_BASOP_2517_CLICK_IN_OMASA_LTV ) scale_sig( new_inp_12k8_fx + L_FRAME, new_inp_out_size, negate( Q_new_inp ) ); /* scaling back to st->q_inp*/ #else Scale_sig( new_inp_12k8_fx + L_FRAME, new_inp_out_size, negate( Q_new_inp ) ); /* scaling back to st->q_inp*/ Loading lib_enc/ivas_core_pre_proc_fx.c +7 −3 Original line number Diff line number Diff line Loading @@ -917,11 +917,11 @@ void ivas_compute_core_buffers_fx( } ELSE IF( EQ_32( input_Fs, 32000 ) || EQ_32( input_Fs, 48000 ) ) { #ifdef NONBE_FIX_ISSUE_2206 #if defined( NONBE_FIX_ISSUE_2206 ) && not defined( FIX_BASOP_2517_CLICK_IN_OMASA_LTV ) scale_sig( st->mem_decim16k_fx, 2 * L_FILT_MAX, sub( Q_old_inp_16k, st->q_mem_decim16k_fx ) ); /* Q_old_inp_16k */ #endif size_modified = modify_Fs_fx( signal_in_fx, input_frame, input_Fs, new_inp_16k_fx, sr_core, st->mem_decim16k_fx, 0, &Q_tmp, &mem_decim16k_size ); /* Q0 */ #ifdef NONBE_FIX_ISSUE_2206 #if defined( NONBE_FIX_ISSUE_2206 ) && not defined( FIX_BASOP_2517_CLICK_IN_OMASA_LTV ) scale_sig( new_inp_16k_fx, size_modified, negate( Q_tmp ) ); /* scaling back to Q_old_inp_16k */ #else Scale_sig( new_inp_16k_fx, size_modified, negate( Q_tmp ) ); /* scaling back to Q_old_inp_16k */ Loading @@ -931,7 +931,11 @@ void ivas_compute_core_buffers_fx( set16_fx( temp1F_icatdmResampBuf_fx, 0, L_FILT_MAX ); size_modified = modify_Fs_fx( temp1F_icatdmResampBuf_fx, NS2SA_FX2( input_Fs, DELAY_FIR_RESAMPL_NS ), input_Fs, new_inp_16k_fx + NS2SA_FX2( sr_core, FRAME_SIZE_NS ), sr_core, mem_decim16k_dummy_fx, 0, &Q_tmp, &mem_decim16k_size ); /* Q0 */ #ifdef NONBE_FIX_ISSUE_2206 #ifdef FIX_BASOP_2517_CLICK_IN_OMASA_LTV Scale_sig( new_inp_16k_fx + NS2SA_FX2( sr_core, FRAME_SIZE_NS ), size_modified, negate( Q_tmp ) ); /* scaling back to Q_old_inp_16k */ #else scale_sig( new_inp_16k_fx + NS2SA_FX2( sr_core, FRAME_SIZE_NS ), size_modified, negate( Q_tmp ) ); /* scaling back to Q_old_inp_16k */ #endif // Scale_sig( st->mem_decim16k_fx, 2 * L_FILT_MAX, sub( -1, Q_old_inp_16k ) ); /* Q(-1) */ Q_tmp = norm_arr( st->mem_decim16k_fx, mem_decim16k_size ); Loading Loading @@ -968,7 +972,7 @@ void ivas_compute_core_buffers_fx( } ELSE IF( EQ_32( input_Fs, 32000 ) || EQ_32( input_Fs, 48000 ) ) { #ifdef NONBE_FIX_ISSUE_2206 #if defined( NONBE_FIX_ISSUE_2206 ) && not defined( FIX_BASOP_2517_CLICK_IN_OMASA_LTV ) scale_sig( st->mem_decim16k_fx, 2 * L_FILT_MAX, sub( Q_old_inp_16k, st->q_mem_decim16k_fx ) ); /* Q_old_inp_16k */ #endif /* reconstruct past segment of input signal when switching from MDCT stereo */ Loading Loading
lib_com/options.h +1 −0 Original line number Diff line number Diff line Loading @@ -114,6 +114,7 @@ #define FIX_BASOP_2520_PARAMBIN_THRESHOLD_FIX /* Nokia: BASOP issue 2520: Fix wrong threshold in ParamBin */ #define FIX_BASOP_2510_UNNECESSARY_ASSERT /* Nokia: BASOP issue 2510: Fix by removing assert */ #define FIX_2515_TDREND_PORT_ERROR_SCALING /* Nokia: BASOP issue 2515: Fix port error by changing to correct scaling */ //#define FIX_BASOP_2517_CLICK_IN_OMASA_LTV /* FhG: BASOP #2517: preserve precision by removing one-bit headroom from Q_min and allowing saturation during buffer scaling */ /* ##################### End NON-BE switches ########################### */ Loading
lib_enc/ivas_core_pre_proc_front_fx.c +13 −1 Original line number Diff line number Diff line Loading @@ -356,7 +356,11 @@ void pre_proc_front_ivas_fx( /* Take into account resampling memory for Q_min, and 1 bit headroom for resampling overshoot. */ IF( NE_32( input_Fs, INT_FS_12k8 ) ) { #ifdef FIX_BASOP_2517_CLICK_IN_OMASA_LTV Q_min = s_min( Q_min, add( st->mem_q, norm_arr( st->mem_decim_fx_q_inp, 2 * L_FILT_MAX ) ) ); #else Q_min = sub( s_min( Q_min, add( st->mem_q, norm_arr( st->mem_decim_fx_q_inp, 2 * L_FILT_MAX ) ) ), Q1 ); #endif } #endif /* Limit Q_min to avoid rescale larger than 15 against Q-1 */ Loading Loading @@ -479,7 +483,11 @@ void pre_proc_front_ivas_fx( *----------------------------------------------------------------*/ #ifdef NONBE_FIX_ISSUE_2206 #ifdef FIX_BASOP_2517_CLICK_IN_OMASA_LTV Scale_sig( st->mem_decim_fx_q_inp, 2 * L_FILT_MAX, sub( st->q_inp, st->mem_q ) ); /* st->q_inp */ #else scale_sig( st->mem_decim_fx_q_inp, 2 * L_FILT_MAX, sub( st->q_inp, st->mem_q ) ); /* st->q_inp */ #endif st->mem_q = st->q_inp; move16(); #else Loading @@ -491,7 +499,11 @@ void pre_proc_front_ivas_fx( { new_inp_out_size = modify_Fs_fx( signal_in_fx, input_frame, input_Fs, new_inp_12k8_fx, INT_FS_12k8, st->mem_decim_fx_q_inp, ( st->max_bwidth == NB ), &Q_new_inp, &mem_decim_size ); /* st->q_inp */ #ifdef NONBE_FIX_ISSUE_2206 #ifdef FIX_BASOP_2517_CLICK_IN_OMASA_LTV Scale_sig( new_inp_12k8_fx, new_inp_out_size, negate( Q_new_inp ) ); /* scaling back to st->q_inp*/ #else scale_sig( new_inp_12k8_fx, new_inp_out_size, negate( Q_new_inp ) ); /* scaling back to st->q_inp*/ #endif #else Scale_sig( new_inp_12k8_fx, new_inp_out_size, negate( Q_new_inp ) ); /* scaling back to st->q_inp*/ st->mem_q = st->q_inp; Loading @@ -505,7 +517,7 @@ void pre_proc_front_ivas_fx( #endif set16_fx( temp1F_icatdmResampBuf_fx, 0, L_FILT_MAX ); new_inp_out_size = modify_Fs_fx( temp1F_icatdmResampBuf_fx, NS2SA_FX2( input_Fs, DELAY_FIR_RESAMPL_NS ), input_Fs, new_inp_12k8_fx + L_FRAME, INT_FS_12k8, mem_decim_dummy_fx, 0, &Q_new_inp, &mem_decim_size ); /* st->q_inp */ #ifdef NONBE_FIX_ISSUE_2206 #if defined( NONBE_FIX_ISSUE_2206 ) && not defined( FIX_BASOP_2517_CLICK_IN_OMASA_LTV ) scale_sig( new_inp_12k8_fx + L_FRAME, new_inp_out_size, negate( Q_new_inp ) ); /* scaling back to st->q_inp*/ #else Scale_sig( new_inp_12k8_fx + L_FRAME, new_inp_out_size, negate( Q_new_inp ) ); /* scaling back to st->q_inp*/ Loading
lib_enc/ivas_core_pre_proc_fx.c +7 −3 Original line number Diff line number Diff line Loading @@ -917,11 +917,11 @@ void ivas_compute_core_buffers_fx( } ELSE IF( EQ_32( input_Fs, 32000 ) || EQ_32( input_Fs, 48000 ) ) { #ifdef NONBE_FIX_ISSUE_2206 #if defined( NONBE_FIX_ISSUE_2206 ) && not defined( FIX_BASOP_2517_CLICK_IN_OMASA_LTV ) scale_sig( st->mem_decim16k_fx, 2 * L_FILT_MAX, sub( Q_old_inp_16k, st->q_mem_decim16k_fx ) ); /* Q_old_inp_16k */ #endif size_modified = modify_Fs_fx( signal_in_fx, input_frame, input_Fs, new_inp_16k_fx, sr_core, st->mem_decim16k_fx, 0, &Q_tmp, &mem_decim16k_size ); /* Q0 */ #ifdef NONBE_FIX_ISSUE_2206 #if defined( NONBE_FIX_ISSUE_2206 ) && not defined( FIX_BASOP_2517_CLICK_IN_OMASA_LTV ) scale_sig( new_inp_16k_fx, size_modified, negate( Q_tmp ) ); /* scaling back to Q_old_inp_16k */ #else Scale_sig( new_inp_16k_fx, size_modified, negate( Q_tmp ) ); /* scaling back to Q_old_inp_16k */ Loading @@ -931,7 +931,11 @@ void ivas_compute_core_buffers_fx( set16_fx( temp1F_icatdmResampBuf_fx, 0, L_FILT_MAX ); size_modified = modify_Fs_fx( temp1F_icatdmResampBuf_fx, NS2SA_FX2( input_Fs, DELAY_FIR_RESAMPL_NS ), input_Fs, new_inp_16k_fx + NS2SA_FX2( sr_core, FRAME_SIZE_NS ), sr_core, mem_decim16k_dummy_fx, 0, &Q_tmp, &mem_decim16k_size ); /* Q0 */ #ifdef NONBE_FIX_ISSUE_2206 #ifdef FIX_BASOP_2517_CLICK_IN_OMASA_LTV Scale_sig( new_inp_16k_fx + NS2SA_FX2( sr_core, FRAME_SIZE_NS ), size_modified, negate( Q_tmp ) ); /* scaling back to Q_old_inp_16k */ #else scale_sig( new_inp_16k_fx + NS2SA_FX2( sr_core, FRAME_SIZE_NS ), size_modified, negate( Q_tmp ) ); /* scaling back to Q_old_inp_16k */ #endif // Scale_sig( st->mem_decim16k_fx, 2 * L_FILT_MAX, sub( -1, Q_old_inp_16k ) ); /* Q(-1) */ Q_tmp = norm_arr( st->mem_decim16k_fx, mem_decim16k_size ); Loading Loading @@ -968,7 +972,7 @@ void ivas_compute_core_buffers_fx( } ELSE IF( EQ_32( input_Fs, 32000 ) || EQ_32( input_Fs, 48000 ) ) { #ifdef NONBE_FIX_ISSUE_2206 #if defined( NONBE_FIX_ISSUE_2206 ) && not defined( FIX_BASOP_2517_CLICK_IN_OMASA_LTV ) scale_sig( st->mem_decim16k_fx, 2 * L_FILT_MAX, sub( Q_old_inp_16k, st->q_mem_decim16k_fx ) ); /* Q_old_inp_16k */ #endif /* reconstruct past segment of input signal when switching from MDCT stereo */ Loading