diff --git a/lib_dec/ivas_mdct_core_dec_fx.c b/lib_dec/ivas_mdct_core_dec_fx.c index 2baa31d22db37abfd1f956256654a4c820577083..27148f3804c484d34327a4ae6a3642abec950f10 100644 --- a/lib_dec/ivas_mdct_core_dec_fx.c +++ b/lib_dec/ivas_mdct_core_dec_fx.c @@ -1814,10 +1814,10 @@ void ivas_mdct_core_tns_ns_fx( length = L_spec[ch]; move16(); } - Scale_sig32( &x_fx[ch][k][0], length, -5 ); + Scale_sig32( &x_fx[ch][k][0], s_max( length, L_frameTCX[ch] ), -5 ); decoder_tcx_tns_fx( st, L_frame_global[ch], L_spec[ch], L_frame[ch], L_frameTCX[ch], x_fx[ch][k], fUseTns[ch][k], &tnsData[ch][k], bfi, k, 1, &length ); norm_x = getScaleFactor32( &x_fx[ch][k][0], length ); - Scale_sig32( &x_fx[ch][k][0], length, norm_x ); + Scale_sig32( &x_fx[ch][k][0], s_max( length, L_frameTCX[ch] ), norm_x ); q_x = add( q_x, norm_x ); #ifndef OPT_SBA_DEC_V2_NBE x_e[ch][k] = sub( 31, q_x ); @@ -1856,10 +1856,13 @@ void ivas_mdct_core_tns_ns_fx( v_multc_fixed( x_fx[ch][k] + st->hTcxCfg->psychParamsCurrent->nBins, sns_int_scf_fx[FDNS_NPTS - 1], x_fx[ch][k] + st->hTcxCfg->psychParamsCurrent->nBins, sub( L_spec[ch], st->hTcxCfg->psychParamsCurrent->nBins ) ); - q_2 = sub( add( q_x, q_sns_int_scf ), 31 ); - Scale_sig32( &x_fx[ch][k][0], st->hTcxCfg->psychParamsCurrent->nBins, sub( q_2, q_x ) ); - q_x = q_2; - move16(); + IF( NE_16( L_spec[ch], st->hTcxCfg->psychParamsCurrent->nBins ) ) + { + q_2 = sub( add( q_x, q_sns_int_scf ), 31 ); + Scale_sig32( &x_fx[ch][k][0], st->hTcxCfg->psychParamsCurrent->nBins, sub( q_2, q_x ) ); + q_x = q_2; + move16(); + } #ifndef OPT_SBA_DEC_V2_NBE x_e[ch][k] = sub( 31, q_x ); move16(); @@ -1878,7 +1881,7 @@ void ivas_mdct_core_tns_ns_fx( length = L_spec[ch]; move16(); } - Scale_sig32( &x_fx[ch][k][0], length, -5 ); + Scale_sig32( &x_fx[ch][k][0], s_max( length, L_frameTCX[ch] ), -5 ); decoder_tcx_tns_fx( st, L_frame_global[ch], L_spec[ch], L_frame[ch], L_frameTCX[ch], &x_fx[ch][k][0], fUseTns[ch][k], &tnsData[ch][k], bfi, k, 0, &length ); #ifndef OPT_SBA_DEC_V2_NBE norm_x = getScaleFactor32( &x_fx[ch][k][0], length ); @@ -1887,7 +1890,7 @@ void ivas_mdct_core_tns_ns_fx( x_e[ch][k] = sub( 31, q_x ); move16(); #else /* OPT_SBA_DEC_V2_NBE */ - Scale_sig32( &x_fx[ch][k][0], length, sub( sub( 31, q_x ), x_e ) ); + Scale_sig32( &x_fx[ch][k][0], s_max( length, L_frameTCX[ch] ), sub( sub( 31, q_x ), x_e ) ); #endif /* OPT_SBA_DEC_V2_NBE */ }