Skip to content
Commits on Source (6)
......@@ -93,6 +93,7 @@
#define FIX_1996_MASKING_NOISE /* Dlb: Heavy precision loss in ola buffers causing discontinuity*/
#define FIX1998_APA_EXEC_SCALING /* FhG: fix scaling of apa_exec_ivas_fx(); avoid continuously worse scaling with previous data */
#define FIX2007_BASSPSFILTER_OVERFLOW /* FhG: use saturing operator, to avoid overflow in bass_psfilter_fx() */
#define FIX_ISSUE_2004_LPC_SHB_SAT /* Dolby: Issue 2004: prevent saturation of the LPC SHB filter */
#define FIX_2009_HIGH_NOISE_FLOOR_FOR_FX_DEC /* FhG: Corrected the q_input in the input of generate_masking_noise_dirac_ivas_fx() */
/* #################### Start BASOP porting switches ############################ */
......
......@@ -3161,7 +3161,25 @@ void swb_tbe_enc_ivas_fx(
enerG = Enr_1_Az_fx( lpc_shb1, 2 * L_SUBFR ); /* Q3 */
/* if the LP gain is greater than a threshold, avoid saturation */
#ifdef FIX_ISSUE_2004_LPC_SHB_SAT
Word16 flag_sat = 0;
Word16 lpc_shb_fx0_req_shift = sub( norm_s( lpc_shb_fx[0] ), 2 );
IF( GT_16( lpc_shb_fx0_req_shift, 0 ) )
{
FOR( i = 1; i <= LPC_SHB_ORDER; i++ )
{
IF( LT_16( norm_s( lpc_shb_fx[i] ), lpc_shb_fx0_req_shift ) )
{
flag_sat = 1;
break;
}
}
}
IF( GT_16( enerG, 256 /* 32.0 in Q3 */ ) || flag_sat )
#else
IF( GT_16( enerG, 256 /*32 Q3*/ ) )
#endif
{
set16_fx( lpc_shb_fx, 0, LPC_SHB_ORDER + 1 );
E_LPC_lev_dur( R_h, R_l, lpc_shb_fx, LepsP, 2, NULL ); /* LPC in Q14 */
......