From 4284a6ea0451b979af50b8f54080f268811e36f5 Mon Sep 17 00:00:00 2001 From: Tommy Vaillancourt Date: Mon, 13 May 2024 11:12:52 -0400 Subject: [PATCH 1/2] replace hard coded Q 18 with constant Q_icBWE. This is a bit exact modification --- lib_dec/ivas_stereo_icbwe_dec.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lib_dec/ivas_stereo_icbwe_dec.c b/lib_dec/ivas_stereo_icbwe_dec.c index 150df7e1d..1b1ec2837 100644 --- a/lib_dec/ivas_stereo_icbwe_dec.c +++ b/lib_dec/ivas_stereo_icbwe_dec.c @@ -46,6 +46,7 @@ #include "ivas_rom_com.h" +#define Q_icBWE 18 /*-------------------------------------------------------------------* * ic_bwe_dec_reset() @@ -915,9 +916,9 @@ void stereo_icBWE_dec_fx( // common Q for addition L_nlExc16k = L_deposit_l( hStereoICBWE->nlExc16k_fx[k] ); // prev_q_bwe_exc - 16 L_mixExc16k = L_deposit_l( hStereoICBWE->mixExc16k_fx[k] ); // Q_exc - L_nlExc16k = L_shl( L_nlExc16k, 18 - ( st->prev_Q_bwe_exc - 16 ) ); // Q18 - L_mixExc16k = L_shl( L_mixExc16k, 18 - st->Q_exc ); // Q18 - excSHB_nonref_fx[k] = L_add( Mpy_32_16_1( L_nlExc16k, temp1_fx ), Mpy_32_16_1( L_mixExc16k, temp2_fx ) ); // Q18 + L_nlExc16k = L_shl( L_nlExc16k, Q_icBWE - ( st->prev_Q_bwe_exc - 16 ) ); // Q_icBWE + L_mixExc16k = L_shl( L_mixExc16k, Q_icBWE - st->Q_exc ); // Q_icBWE + excSHB_nonref_fx[k] = L_add( Mpy_32_16_1( L_nlExc16k, temp1_fx ), Mpy_32_16_1( L_mixExc16k, temp2_fx ) ); // Q_icBWE move32(); k++; } @@ -929,13 +930,13 @@ void stereo_icBWE_dec_fx( Q_syn_shb = FindScale( hStereoICBWE->mem_syn_shb_nonref_fx, LPC_SHB_ORDER, hStereoICBWE->prev_Q_syn_shb_nonref, Q_syn_shb ); Q_syn_shb = FindScale( hStereoICBWE->lpSHBRef_fx, LPC_SHB_ORDER + 1, 12, Q_syn_shb ); - Q_syn_shb = FindScale( excSHB_nonref_fx, L_FRAME16k, 18, Q_syn_shb ); + Q_syn_shb = FindScale( excSHB_nonref_fx, L_FRAME16k, Q_icBWE, Q_syn_shb ); Q_syn_shb = FindScale( hStereoICBWE->mem_lpc_shbsynth_nonref_fx, LPC_SHB_ORDER, hStereoICBWE->prev_Q_lpc_shbsynth_nonref, Q_syn_shb ); Q_syn_shb = sub( Q_syn_shb, 3 ); // gaurded bits Scale_sig32( hStereoICBWE->lpSHBRef_fx, LPC_SHB_ORDER + 1, sub( Q_syn_shb, 12 ) ); - Scale_sig32( excSHB_nonref_fx, L_FRAME16k, sub( Q_syn_shb, 18 ) ); + Scale_sig32( excSHB_nonref_fx, L_FRAME16k, sub( Q_syn_shb, Q_icBWE ) ); Scale_sig32( hStereoICBWE->mem_lpc_shbsynth_nonref_fx, LPC_SHB_ORDER, sub( Q_syn_shb, hStereoICBWE->prev_Q_lpc_shbsynth_nonref ) ); Scale_sig32( hStereoICBWE->mem_syn_shb_nonref_fx, L_SHB_LAHEAD, sub( Q_syn_shb, hStereoICBWE->prev_Q_syn_shb_nonref ) ); -- GitLab From f422f6cee3d54f3b2419d1a0627c7408dcbfd09b Mon Sep 17 00:00:00 2001 From: Tommy Vaillancourt Date: Mon, 13 May 2024 11:22:07 -0400 Subject: [PATCH 2/2] Change Q18 to Q16, solves the crash and the difference created otherwise is of +/- 3 on the synthesis --- lib_dec/ivas_stereo_icbwe_dec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_dec/ivas_stereo_icbwe_dec.c b/lib_dec/ivas_stereo_icbwe_dec.c index 1b1ec2837..997e6d9f4 100644 --- a/lib_dec/ivas_stereo_icbwe_dec.c +++ b/lib_dec/ivas_stereo_icbwe_dec.c @@ -46,7 +46,7 @@ #include "ivas_rom_com.h" -#define Q_icBWE 18 +#define Q_icBWE 16 /*-------------------------------------------------------------------* * ic_bwe_dec_reset() -- GitLab