From 83c65d0bfdfea192c2af7ec66125fa0f772e0ed1 Mon Sep 17 00:00:00 2001 From: Sandesh Venkatesh Date: Mon, 22 Jul 2024 20:52:12 +0530 Subject: [PATCH] Fix for 3GPP issue 811 [x] Updated handling of guard bits in ivas_dirac_dec_decorr_process_fx --- lib_rend/ivas_dirac_decorr_dec.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib_rend/ivas_dirac_decorr_dec.c b/lib_rend/ivas_dirac_decorr_dec.c index d1f758fe8..99c17d529 100644 --- a/lib_rend/ivas_dirac_decorr_dec.c +++ b/lib_rend/ivas_dirac_decorr_dec.c @@ -1124,8 +1124,14 @@ void ivas_dirac_dec_decorr_process_fx( set32_fx( &h_freq_domain_decorr_ap_state->decorr_buffer_fx[imult1616( imult1616( imult1616( 2, sub( decorr_buffer_len, 1 ) ), max_band_decorr ), num_channels )], 0, imult1616( imult1616( 2, max_band_decorr ), num_channels ) ); Word16 decorr_buff_tot_len = imult1616( imult1616( shl( decorr_buffer_len, 1 ), max_band_decorr ), num_channels ); - - guarded_bits = s_max( find_guarded_bits_fx( 2 ), 3 ); + guarded_bits = 0; + FOR( Word16 i = 0; i < decorr_buff_tot_len; i++ ) + { + IF( h_freq_domain_decorr_ap_state->decorr_buffer_fx[i] != 0 ) + { + guarded_bits = s_max( find_guarded_bits_fx( 2 ), 3 ); + } + } q_shift = sub( getScaleFactor32( h_freq_domain_decorr_ap_state->decorr_buffer_fx, decorr_buff_tot_len ), guarded_bits ); Scale_sig32( h_freq_domain_decorr_ap_state->decorr_buffer_fx, decorr_buff_tot_len, q_shift ); q_decorr_buf = add( q_decorr_buf, q_shift ); -- GitLab