diff --git a/lib_com/options.h b/lib_com/options.h index 95272a536476586c757eb0e7473cd5c4aecbc98e..1835439dcad18c50da23b9615c5cdd19be98f8aa 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -96,6 +96,7 @@ #define HARMONIZE_2598_tcx_arith_decode_envelope /* FhG: harmonize tcx_arith_decode_envelope between EVS and IVAS versions */ #define HARMONIZE_2598_tcx_arith_encode_envelope /* FhG: harmonize tcx_arith_encode_envelope between EVS and IVAS versions */ #define FIX_ISSUE_2594_FALSE_COMMENT /* FhG: basop issue 2594: fixing false comments about Q value*/ +#define FIX_ISSUE_2616_BOUNDARY_CONDITION /* FhG: basopo issue 2616: Inconsistent boundary conditions in function stereo_dft_dequantize_res_gains*/ /* #################### End BE switches ################################## */ diff --git a/lib_dec/ivas_stereo_dft_dec_fx.c b/lib_dec/ivas_stereo_dft_dec_fx.c index 59307c38db943614163d7db8d1c1c05002259c26..cd6c74e13f96bb024cd428aa3a5c9178dad8f6f5 100644 --- a/lib_dec/ivas_stereo_dft_dec_fx.c +++ b/lib_dec/ivas_stereo_dft_dec_fx.c @@ -445,7 +445,11 @@ static void stereo_dft_dequantize_res_gains_fx( move16(); ind2[i] = check_bounds_s_fx( ind2[i], 0, 7 ); /* Q0 */ move16(); +#ifndef FIX_ISSUE_2616_BOUNDARY_CONDITION IF( LE_16( ind1[i], 15 ) ) +#else + IF( LT_16( ind1[i], 15 ) ) +#endif // !FIX_ISSUE_2616_BOUNDARY_CONDITION { tmp = sub( 15, ind1[i] ); } @@ -456,7 +460,11 @@ static void stereo_dft_dequantize_res_gains_fx( // index = add( shl( LE_16( ind1[i], 15 ) ? sub( 15, ind1[i] ) : sub( ind1[i], 15 ), 3 ), ind2[i] ); index = add( shl( tmp, 3 ), ind2[i] ); // gout[i] = LE_16( ind1[i], 15 ) ? L_negate( dft_res_gains_q_fx[index][0] ) : dft_res_gains_q_fx[index][0]; +#ifndef FIX_ISSUE_2616_BOUNDARY_CONDITION IF( LE_16( ind1[i], 15 ) ) +#else + IF( LT_16( ind1[i], 15 ) ) +#endif // !FIX_ISSUE_2616_BOUNDARY_CONDITION { gout[i] = L_negate( dft_res_gains_q_fx[index][0] ); /* Q31 */ move16();