From a6ea0a059f1d0a5989279f34aaaeb78416092985 Mon Sep 17 00:00:00 2001 From: Arthur Date: Fri, 28 Feb 2025 18:45:21 +0100 Subject: [PATCH 1/7] rewritten all cov_smooth loops with better precision - with optional debug output --- lib_com/ivas_cov_smooth_fx.c | 139 ++++++++++++++++++++++++++--------- 1 file changed, 106 insertions(+), 33 deletions(-) mode change 100644 => 100755 lib_com/ivas_cov_smooth_fx.c diff --git a/lib_com/ivas_cov_smooth_fx.c b/lib_com/ivas_cov_smooth_fx.c old mode 100644 new mode 100755 index 3a93ed1f5..e0f759f5f --- a/lib_com/ivas_cov_smooth_fx.c +++ b/lib_com/ivas_cov_smooth_fx.c @@ -42,6 +42,13 @@ *-----------------------------------------------------------------------------------------*/ #define BAND_SMOOTH_REST_START_IDX ( 2 ) +#define ONEeN20_Q97 0x5E728433 // 1e-20 in Q97 1.584.563.251 + +//#define DEBUG_ivas_compute_smooth_cov_fx +#ifdef DEBUG_ivas_compute_smooth_cov_fx +#include +#endif + /*-----------------------------------------------------------------------------------------* * Function ivas_calculate_update_factor_fx() @@ -87,8 +94,14 @@ static void ivas_calculate_smoothning_factor_fx( move16(); tmp = BASOP_Util_Divide3232_Scale( update_factor, L_shl( L_deposit_l( min_pool_size ), Q22 ), &exp_diff ); // Q(31 - exp_diff) - *Smoothing_factor = L_shl_sat( L_deposit_l( tmp ), add( Q16, exp_diff ) ); // Q31 + *Smoothing_factor = L_shl_sat( L_deposit_h( tmp ), exp_diff ); // Q31 move32(); +#ifdef DEBUG_ivas_compute_smooth_cov_fx + printf( "Smoothing_factor %g update_factor %g min_pool_size %d j=%d\n", + (double) *Smoothing_factor * pow (2.0, -31), + (double) update_factor + pow (2.0, -22.0), min_pool_size, j ); +#endif + IF( NE_32( smooth_mode, COV_SMOOTH_MC ) ) { @@ -264,19 +277,17 @@ void ivas_spar_covar_smooth_enc_close_fx( return; } - /*-----------------------------------------------------------------------------------------* * Function ivas_compute_smooth_cov_fx() * * Compute smooth covariance real/imag. *-----------------------------------------------------------------------------------------*/ - static void ivas_compute_smooth_cov_fx( ivas_cov_smooth_state_t *hCovState, ivas_filterbank_t *pFb, Word32 *pCov_buf[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH], // i/o: Q(q_cov[i][j]) Word32 *pPrior_cov_buf[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH], // i: hCovState->q_cov_real_per_band[i][j][k] - const Word32 fac, + const Word32 fac, // i: ONEeN20_Q97 (1e-20 in Q97) const Word16 start_band, const Word16 end_band, const Word16 num_ch, @@ -285,10 +296,15 @@ static void ivas_compute_smooth_cov_fx( { Word16 i, j, k; Word16 prev_idx = hCovState->prior_bank_idx; - Word32 factor = 0, L_tmp, L_tmp1; + Word32 factor = 0, L_tmp0, L_tmp1; + + const Word16 q_fac = 97; + const Word16 fac_e = sub(Q31, q_fac); + + Word16 cov_buf_e; + Word16 sm_b; Word16 non_sm_b_idx; - Word16 q_tmp[IVAS_MAX_NUM_BANDS]; sm_b = BAND_SMOOTH_REST_START_IDX; move16(); @@ -296,7 +312,9 @@ static void ivas_compute_smooth_cov_fx( move32(); assert( end_band <= pFb->filterbank_num_bands ); - +#ifdef DEBUG_ivas_compute_smooth_cov_fx + printf( "\n" ); +#endif test(); IF( EQ_16( prev_idx, -1 ) || EQ_16( transient_det[1], 1 ) ) { @@ -309,11 +327,28 @@ static void ivas_compute_smooth_cov_fx( } FOR( i = 0; i < num_ch; i++ ) { +#ifdef DEBUG_ivas_compute_smooth_cov_fx + Word16 cov_buf_e = sub( Q31, q_cov[i][i] ); +#endif FOR( k = start_band; k < end_band; k++ ) { - L_tmp = Mpy_32_32( hCovState->pSmoothing_factor_fx[k], fac ); // (Q31, Q31) -> Q31 - pCov_buf[i][i][k] = L_add( pCov_buf[i][i][k], L_shl( L_tmp, sub( hCovState->q_cov_real_per_band[i][i][k], Q31 ) ) ); // hCovState->q_cov_real_per_band[i][j][k] + /* ref: pCov_buf[i][i][k] += ( hCovState->pSmoothing_factor[k] * fac ); */ +#ifdef DEBUG_ivas_compute_smooth_cov_fx + Word32 L_buf = pCov_buf[i][i][k]; /* debug !! */ +#endif + pCov_buf[i][i][k] = BASOP_Util_Add_Mant32Exp( pCov_buf[i][i][k], cov_buf_e, Mpy_32_32( hCovState->pSmoothing_factor_fx[k], fac ), fac_e, &cov_buf_e ); move32(); + hCovState->q_cov_real_per_band[i][i][k] = sub( Q31, cov_buf_e ); + move16(); +#ifdef DEBUG_ivas_compute_smooth_cov_fx + printf( "A: pCov_buf[%d][%d][%d] %g (0x%08X 0x%04X) fac %g sm-factor %g buf %g\n", i, i, k, + (double) pCov_buf[i][i][k] * pow( 2.0, (double) -hCovState->q_cov_real_per_band[i][i][k] ), + pCov_buf[i][i][k], + hCovState->q_cov_real_per_band[i][i][k] & 0xFFFF, + (double) fac * pow( 2.0, (double) -q_fac ), + (double) hCovState->pSmoothing_factor_fx[k] *pow (2.0, -31.0), + (double) L_buf * pow(2.0, (double) -q_cov[i][i])); +#endif } } } @@ -326,38 +361,63 @@ static void ivas_compute_smooth_cov_fx( { IF( EQ_16( i, j ) ) { - factor = fac; // Q31 + factor = fac; // Q97 move32(); } ELSE { - factor = 0; + factor = 0; // Q97 move32(); } - set16_fx( q_tmp, q_cov[i][j], sub( end_band, start_band ) ); FOR( k = start_band; k < non_sm_b_idx; k++ ) { - L_tmp = Mpy_32_32( hCovState->pSmoothing_factor_fx[k], pCov_buf[i][j][k] ); // (Q31, q_cov[i][j]) -> q_cov[i][j] - L_tmp1 = Mpy_32_32( L_sub( ONE_IN_Q31, hCovState->pSmoothing_factor_fx[k] ), pPrior_cov_buf[i][j][k] ); // (Q31, hCovState->q_cov_real_per_band[i][j][k]) -> hCovState->q_cov_real_per_band[i][j][k] - pCov_buf[i][j][k] = BASOP_Util_Add_Mant32Exp( L_tmp, sub( Q31, q_cov[i][j] ), L_tmp1, sub( Q31, hCovState->q_prior_cov_real_per_band[i][j][k] ), &q_tmp[k] ); // Q(31 - q_tmp[k]) + /* ref: pCov_buf[i][j][k] = pPrior_cov_buf[i][j][k] + ( hCovState->pSmoothing_factor[k] * ( pCov_buf[i][j][k] - pPrior_cov_buf[i][j][k] + factor ) ); */ + /* mod: pCov_buf[i][j][k] = pCov_buf[i][j][k] * hCovState->pSmoothing_factor[k] + + pPrior_cov_buf[i][j][k] * (1.0 - hCovState->pSmoothing_factor[k]) + + factor * hCovState->pSmoothing_factor[k] ); */ +#ifdef DEBUG_ivas_compute_smooth_cov_fx + Word32 L_buf = pCov_buf[i][j][k]; +#endif + L_tmp0 = Mpy_32_32( hCovState->pSmoothing_factor_fx[k], pCov_buf[i][j][k] ); // q_tmp0: q_cov[i][j] // (Q31, q_cov[i][j]) -> q_cov[i][j] + L_tmp1 = Mpy_32_32( L_sub( ONE_IN_Q31, hCovState->pSmoothing_factor_fx[k] ), pPrior_cov_buf[i][j][k] ); // q_tmp1: hCovState->q_prior_cov_real_per_band[i][j][k] + L_tmp0 = BASOP_Util_Add_Mant32Exp( L_tmp0, sub( Q31, q_cov[i][j] ), L_tmp1, sub( Q31, hCovState->q_prior_cov_real_per_band[i][j][k] ), &cov_buf_e ); + pCov_buf[i][j][k] = BASOP_Util_Add_Mant32Exp( L_tmp0, cov_buf_e, Mpy_32_32( hCovState->pSmoothing_factor_fx[k], factor ), fac_e, &cov_buf_e ); move32(); - q_tmp[k] = sub( Q31, q_tmp[k] ); // Q of pConv_buf[i][j][k] is now q_tmp[k] + hCovState->q_cov_real_per_band[i][j][k] = sub( Q31, cov_buf_e ); // Q of pCov_buf[i][j][k] move16(); - L_tmp = L_shl( Mpy_32_32( hCovState->pSmoothing_factor_fx[k], factor ), sub( q_tmp[k], Q31 ) ); // ((Q31, Q31) -> Q31) -> q_tmp[k] - pCov_buf[i][j][k] = L_add( pCov_buf[i][j][k], L_tmp ); // q_tmp[k] - move32(); + +#ifdef DEBUG_ivas_compute_smooth_cov_fx + printf( "B1: pCov_buf[%d][%d][%d] %g fac %g sm-factor %g prior %g buf %g (q=%d)\n", i, j, k, + (double) pCov_buf[i][j][k] * pow( 2.0, (double) -hCovState->q_cov_real_per_band[i][j][k] ), + (double) factor * pow( 2.0, (double) -q_fac ), + (double) hCovState->pSmoothing_factor_fx[k] * pow( 2.0, -Q31 ), + (double) pPrior_cov_buf[i][j][k] * pow( 2.0, (double) -hCovState->q_prior_cov_real_per_band[i][j][k] ), + (double) L_buf * pow( 2.0, (double) -q_cov[i][j] ), q_cov[i][j] ); +#endif + } - Copy( q_tmp, hCovState->q_cov_real_per_band[i][j], sub( end_band, start_band ) ); // Q of pCov_buf[i][j][k] is hCovState->q_cov_real_per_band[i][j][j] } } FOR( i = 0; i < num_ch; i++ ) { FOR( k = non_sm_b_idx; k < end_band; k++ ) { - L_tmp = Mpy_32_32( hCovState->pSmoothing_factor_fx[k], fac ); // (Q31, Q31) -> Q31 - pCov_buf[i][i][k] = L_add( pCov_buf[i][i][k], L_shl( L_tmp, sub( hCovState->q_cov_real_per_band[i][i][k], Q31 ) ) ); // hCovState->q_cov_real_per_band[i][j][j] + /* ref: pCov_buf[i][i][k] += ( hCovState->pSmoothing_factor[k] * fac ); */ +#ifdef DEBUG_ivas_compute_smooth_cov_fx + Word32 L_buf = pCov_buf[i][i][k]; +#endif + pCov_buf[i][i][k] = BASOP_Util_Add_Mant32Exp( pCov_buf[i][i][k], sub( Q31, q_cov[i][i] ), Mpy_32_32( hCovState->pSmoothing_factor_fx[k], fac ), fac_e , &cov_buf_e); move32(); + hCovState->q_cov_real_per_band[i][i][k] = sub( Q31, cov_buf_e ); // Q of pCov_buf[i][i][k] + move16(); +#ifdef DEBUG_ivas_compute_smooth_cov_fx + printf( "B2: pCov_buf[%d][%d][%d] %g fac %g sm-factor %g buf %g (q=%d)\n", i, i, k, + (double) pCov_buf[i][i][k] * pow( 2.0, (double) -hCovState->q_cov_real_per_band[i][i][k] ), + (double) fac * pow( 2.0, (double) -q_fac ), + (double) hCovState->pSmoothing_factor_fx[k] * pow( 2.0, -Q31 ), + (double) L_buf * pow( 2.0, (double) -q_cov[i][i] ), q_cov[i][i]); +#endif } } } @@ -369,28 +429,41 @@ static void ivas_compute_smooth_cov_fx( { IF( EQ_16( i, j ) ) { - factor = fac; // Q31 + factor = fac; // Q97 move32(); } ELSE { - factor = 0; + factor = 0; // Q97 move32(); } FOR( k = start_band; k < end_band; k++ ) { - L_tmp = Mpy_32_32( hCovState->pSmoothing_factor_fx[k], pCov_buf[i][j][k] ); // (Q31, q_cov[i][j]) -> q_cov[i][j] - L_tmp1 = Mpy_32_32( L_sub( ONE_IN_Q31, hCovState->pSmoothing_factor_fx[k] ), pPrior_cov_buf[i][j][k] ); // (Q31, hCovState->q_cov_real_per_band[i][j][k]) -> hCovState->q_cov_real_per_band[i][j][k] - pCov_buf[i][j][k] = BASOP_Util_Add_Mant32Exp( L_tmp, sub( Q31, q_cov[i][j] ), L_tmp1, sub( Q31, hCovState->q_prior_cov_real_per_band[i][j][k] ), &q_tmp[k] ); // Q(31 - q_tmp[k]) + /* ref: pCov_buf[i][j][k] = pPrior_cov_buf[i][j][k] + ( hCovState->pSmoothing_factor[k] * ( pCov_buf[i][j][k] - pPrior_cov_buf[i][j][k] + factor ) ); */ + /* mod: pCov_buf[i][j][k] = pCov_buf[i][j][k] * hCovState->pSmoothing_factor[k] + + pPrior_cov_buf[i][j][k] * (1.0 - hCovState->pSmoothing_factor[k]) + + factor * hCovState->pSmoothing_factor[k] ); */ +#ifdef DEBUG_ivas_compute_smooth_cov_fx + Word32 L_buf = pCov_buf[i][j][k]; /* debug !! */ +#endif + L_tmp0 = Mpy_32_32( hCovState->pSmoothing_factor_fx[k], pCov_buf[i][j][k] ); // q_tmp0: q_cov[i][j] // (Q31, q_cov[i][j]) -> q_cov[i][j] + L_tmp1 = Mpy_32_32( L_sub( ONE_IN_Q31, hCovState->pSmoothing_factor_fx[k] ), pPrior_cov_buf[i][j][k] ); // q_tmp1: hCovState->q_prior_cov_real_per_band[i][j][k] + L_tmp0 = BASOP_Util_Add_Mant32Exp( L_tmp0, sub( Q31, q_cov[i][j] ), L_tmp1, sub( Q31, hCovState->q_prior_cov_real_per_band[i][j][k] ), &cov_buf_e ); + pCov_buf[i][j][k] = BASOP_Util_Add_Mant32Exp( L_tmp0, cov_buf_e, Mpy_32_32( hCovState->pSmoothing_factor_fx[k], factor ), fac_e, &cov_buf_e ); move32(); - q_tmp[k] = sub( Q31, q_tmp[k] ); // Q of pConv_buf[i][j][k] is now q_tmp[k] + hCovState->q_cov_real_per_band[i][j][k] = sub( Q31, cov_buf_e ); // Q of pCov_buf[i][j][k] move16(); - L_tmp = L_shl( Mpy_32_32( hCovState->pSmoothing_factor_fx[k], factor ), sub( q_tmp[k], Q31 ) ); // ((Q31, Q31) -> Q31) -> q_tmp[k] - pCov_buf[i][j][k] = L_add( pCov_buf[i][j][k], L_tmp ); // q_tmp[k] - move32(); +#ifdef DEBUG_ivas_compute_smooth_cov_fx + printf( "C: pCov_buf[%d][%d][%d] %g factor %g sm-factor %g prior %g buf %g (q=%d)\n", i, j, k, + (double) pCov_buf[i][j][k] * pow(2.0, (double) -hCovState->q_cov_real_per_band[i][j][k]), + (double) factor * pow(2.0, (double) -q_fac), + (double) hCovState->pSmoothing_factor_fx[k] * pow(2.0, -Q31), + (double) pPrior_cov_buf[i][j][k] * pow(2.0, (double) -hCovState->q_prior_cov_real_per_band[i][j][k] ), + (double) L_buf * pow( 2.0, (double) -q_cov[i][j] ), q_cov[i][j] ); +#endif + } - Copy( q_tmp, hCovState->q_cov_real_per_band[i][j], sub( end_band, start_band ) ); // Q of pCov_buf[i][j][k] is hCovState->q_cov_real_per_band[i][j][j] } } } @@ -418,7 +491,7 @@ void ivas_cov_smooth_process_fx( Word16 i, j, k; Word16 num_bands = sub( end_band, start_band ); - ivas_compute_smooth_cov_fx( hCovState, pFb, cov_real, hCovState->pPrior_cov_real_fx, 0, start_band, end_band, num_ch, transient_det, q_cov ); + ivas_compute_smooth_cov_fx( hCovState, pFb, cov_real, hCovState->pPrior_cov_real_fx, ONEeN20_Q97, start_band, end_band, num_ch, transient_det, q_cov ); FOR( i = 0; i < num_ch; i++ ) { -- GitLab From 8629f3b47ec26c6ce64ea82e440ccc421a462291 Mon Sep 17 00:00:00 2001 From: Arthur Date: Mon, 10 Mar 2025 18:06:58 +0100 Subject: [PATCH 2/7] fixed issue with wrong q for prior variables - debug prints inactive --- lib_com/ivas_cov_smooth_fx.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/lib_com/ivas_cov_smooth_fx.c b/lib_com/ivas_cov_smooth_fx.c index e0f759f5f..513f84ea0 100755 --- a/lib_com/ivas_cov_smooth_fx.c +++ b/lib_com/ivas_cov_smooth_fx.c @@ -97,9 +97,9 @@ static void ivas_calculate_smoothning_factor_fx( *Smoothing_factor = L_shl_sat( L_deposit_h( tmp ), exp_diff ); // Q31 move32(); #ifdef DEBUG_ivas_compute_smooth_cov_fx - printf( "Smoothing_factor %g update_factor %g min_pool_size %d j=%d\n", + printf( "Smoothing_factor %e update_factor %e min_pool_size %d j=%d\n", (double) *Smoothing_factor * pow (2.0, -31), - (double) update_factor + pow (2.0, -22.0), min_pool_size, j ); + (double) update_factor * pow (2.0, -22.0), min_pool_size, j ); #endif @@ -341,7 +341,7 @@ static void ivas_compute_smooth_cov_fx( hCovState->q_cov_real_per_band[i][i][k] = sub( Q31, cov_buf_e ); move16(); #ifdef DEBUG_ivas_compute_smooth_cov_fx - printf( "A: pCov_buf[%d][%d][%d] %g (0x%08X 0x%04X) fac %g sm-factor %g buf %g\n", i, i, k, + printf( "A: pCov_buf[%d][%d][%d] %e (0x%08X 0x%04X) fac %e sm-factor %e buf %e\n", i, i, k, (double) pCov_buf[i][i][k] * pow( 2.0, (double) -hCovState->q_cov_real_per_band[i][i][k] ), pCov_buf[i][i][k], hCovState->q_cov_real_per_band[i][i][k] & 0xFFFF, @@ -388,7 +388,7 @@ static void ivas_compute_smooth_cov_fx( move16(); #ifdef DEBUG_ivas_compute_smooth_cov_fx - printf( "B1: pCov_buf[%d][%d][%d] %g fac %g sm-factor %g prior %g buf %g (q=%d)\n", i, j, k, + printf( "B1: pCov_buf[%d][%d][%d] %e fac %e sm-factor %e prior %e buf %e (q=%d)\n", i, j, k, (double) pCov_buf[i][j][k] * pow( 2.0, (double) -hCovState->q_cov_real_per_band[i][j][k] ), (double) factor * pow( 2.0, (double) -q_fac ), (double) hCovState->pSmoothing_factor_fx[k] * pow( 2.0, -Q31 ), @@ -397,6 +397,11 @@ static void ivas_compute_smooth_cov_fx( #endif } + FOR( ; k < end_band; k++ ) + { + hCovState->q_cov_real_per_band[i][j][k] = q_cov[i][j]; + move16(); + } } } FOR( i = 0; i < num_ch; i++ ) @@ -412,7 +417,7 @@ static void ivas_compute_smooth_cov_fx( hCovState->q_cov_real_per_band[i][i][k] = sub( Q31, cov_buf_e ); // Q of pCov_buf[i][i][k] move16(); #ifdef DEBUG_ivas_compute_smooth_cov_fx - printf( "B2: pCov_buf[%d][%d][%d] %g fac %g sm-factor %g buf %g (q=%d)\n", i, i, k, + printf( "B2: pCov_buf[%d][%d][%d] %e fac %e sm-factor %e buf %e (q=%d)\n", i, i, k, (double) pCov_buf[i][i][k] * pow( 2.0, (double) -hCovState->q_cov_real_per_band[i][i][k] ), (double) fac * pow( 2.0, (double) -q_fac ), (double) hCovState->pSmoothing_factor_fx[k] * pow( 2.0, -Q31 ), @@ -455,7 +460,7 @@ static void ivas_compute_smooth_cov_fx( hCovState->q_cov_real_per_band[i][j][k] = sub( Q31, cov_buf_e ); // Q of pCov_buf[i][j][k] move16(); #ifdef DEBUG_ivas_compute_smooth_cov_fx - printf( "C: pCov_buf[%d][%d][%d] %g factor %g sm-factor %g prior %g buf %g (q=%d)\n", i, j, k, + printf( "C: pCov_buf[%d][%d][%d] %e factor %e sm-factor %e prior %e buf %e (q=%d)\n", i, j, k, (double) pCov_buf[i][j][k] * pow(2.0, (double) -hCovState->q_cov_real_per_band[i][j][k]), (double) factor * pow(2.0, (double) -q_fac), (double) hCovState->pSmoothing_factor_fx[k] * pow(2.0, -Q31), -- GitLab From ea5245e56e431269bb54c131dfcb6430683de21e Mon Sep 17 00:00:00 2001 From: Arthur Date: Mon, 10 Mar 2025 18:32:18 +0100 Subject: [PATCH 3/7] fixed clang-format-issue --- lib_com/ivas_cov_smooth_fx.c | 76 ++++++++++++++++++------------------ 1 file changed, 37 insertions(+), 39 deletions(-) mode change 100755 => 100644 lib_com/ivas_cov_smooth_fx.c diff --git a/lib_com/ivas_cov_smooth_fx.c b/lib_com/ivas_cov_smooth_fx.c old mode 100755 new mode 100644 index 513f84ea0..150dc3bfc --- a/lib_com/ivas_cov_smooth_fx.c +++ b/lib_com/ivas_cov_smooth_fx.c @@ -42,7 +42,7 @@ *-----------------------------------------------------------------------------------------*/ #define BAND_SMOOTH_REST_START_IDX ( 2 ) -#define ONEeN20_Q97 0x5E728433 // 1e-20 in Q97 1.584.563.251 +#define ONEeN20_Q97 0x5E728433 // 1e-20 in Q97 1.584.563.251 //#define DEBUG_ivas_compute_smooth_cov_fx #ifdef DEBUG_ivas_compute_smooth_cov_fx @@ -94,12 +94,12 @@ static void ivas_calculate_smoothning_factor_fx( move16(); tmp = BASOP_Util_Divide3232_Scale( update_factor, L_shl( L_deposit_l( min_pool_size ), Q22 ), &exp_diff ); // Q(31 - exp_diff) - *Smoothing_factor = L_shl_sat( L_deposit_h( tmp ), exp_diff ); // Q31 + *Smoothing_factor = L_shl_sat( L_deposit_h( tmp ), exp_diff ); // Q31 move32(); #ifdef DEBUG_ivas_compute_smooth_cov_fx - printf( "Smoothing_factor %e update_factor %e min_pool_size %d j=%d\n", - (double) *Smoothing_factor * pow (2.0, -31), - (double) update_factor * pow (2.0, -22.0), min_pool_size, j ); + printf( "Smoothing_factor %e update_factor %e min_pool_size %d j=%d\n", + (double) *Smoothing_factor * pow( 2.0, -31 ), + (double) update_factor * pow( 2.0, -22.0 ), min_pool_size, j ); #endif @@ -299,7 +299,7 @@ static void ivas_compute_smooth_cov_fx( Word32 factor = 0, L_tmp0, L_tmp1; const Word16 q_fac = 97; - const Word16 fac_e = sub(Q31, q_fac); + const Word16 fac_e = sub( Q31, q_fac ); Word16 cov_buf_e; @@ -334,20 +334,20 @@ static void ivas_compute_smooth_cov_fx( { /* ref: pCov_buf[i][i][k] += ( hCovState->pSmoothing_factor[k] * fac ); */ #ifdef DEBUG_ivas_compute_smooth_cov_fx - Word32 L_buf = pCov_buf[i][i][k]; /* debug !! */ + Word32 L_buf = pCov_buf[i][i][k]; /* debug !! */ #endif pCov_buf[i][i][k] = BASOP_Util_Add_Mant32Exp( pCov_buf[i][i][k], cov_buf_e, Mpy_32_32( hCovState->pSmoothing_factor_fx[k], fac ), fac_e, &cov_buf_e ); move32(); hCovState->q_cov_real_per_band[i][i][k] = sub( Q31, cov_buf_e ); move16(); #ifdef DEBUG_ivas_compute_smooth_cov_fx - printf( "A: pCov_buf[%d][%d][%d] %e (0x%08X 0x%04X) fac %e sm-factor %e buf %e\n", i, i, k, - (double) pCov_buf[i][i][k] * pow( 2.0, (double) -hCovState->q_cov_real_per_band[i][i][k] ), - pCov_buf[i][i][k], - hCovState->q_cov_real_per_band[i][i][k] & 0xFFFF, - (double) fac * pow( 2.0, (double) -q_fac ), - (double) hCovState->pSmoothing_factor_fx[k] *pow (2.0, -31.0), - (double) L_buf * pow(2.0, (double) -q_cov[i][i])); + printf( "A: pCov_buf[%d][%d][%d] %e (0x%08X 0x%04X) fac %e sm-factor %e buf %e\n", i, i, k, + (double) pCov_buf[i][i][k] * pow( 2.0, (double) -hCovState->q_cov_real_per_band[i][i][k] ), + pCov_buf[i][i][k], + hCovState->q_cov_real_per_band[i][i][k] & 0xFFFF, + (double) fac * pow( 2.0, (double) -q_fac ), + (double) hCovState->pSmoothing_factor_fx[k] * pow( 2.0, -31.0 ), + (double) L_buf * pow( 2.0, (double) -q_cov[i][i] ) ); #endif } } @@ -366,14 +366,14 @@ static void ivas_compute_smooth_cov_fx( } ELSE { - factor = 0; // Q97 + factor = 0; // Q97 move32(); } FOR( k = start_band; k < non_sm_b_idx; k++ ) { /* ref: pCov_buf[i][j][k] = pPrior_cov_buf[i][j][k] + ( hCovState->pSmoothing_factor[k] * ( pCov_buf[i][j][k] - pPrior_cov_buf[i][j][k] + factor ) ); */ - /* mod: pCov_buf[i][j][k] = pCov_buf[i][j][k] * hCovState->pSmoothing_factor[k] + + /* mod: pCov_buf[i][j][k] = pCov_buf[i][j][k] * hCovState->pSmoothing_factor[k] + pPrior_cov_buf[i][j][k] * (1.0 - hCovState->pSmoothing_factor[k]) + factor * hCovState->pSmoothing_factor[k] ); */ #ifdef DEBUG_ivas_compute_smooth_cov_fx @@ -388,14 +388,13 @@ static void ivas_compute_smooth_cov_fx( move16(); #ifdef DEBUG_ivas_compute_smooth_cov_fx - printf( "B1: pCov_buf[%d][%d][%d] %e fac %e sm-factor %e prior %e buf %e (q=%d)\n", i, j, k, - (double) pCov_buf[i][j][k] * pow( 2.0, (double) -hCovState->q_cov_real_per_band[i][j][k] ), - (double) factor * pow( 2.0, (double) -q_fac ), - (double) hCovState->pSmoothing_factor_fx[k] * pow( 2.0, -Q31 ), - (double) pPrior_cov_buf[i][j][k] * pow( 2.0, (double) -hCovState->q_prior_cov_real_per_band[i][j][k] ), - (double) L_buf * pow( 2.0, (double) -q_cov[i][j] ), q_cov[i][j] ); + printf( "B1: pCov_buf[%d][%d][%d] %e fac %e sm-factor %e prior %e buf %e (q=%d)\n", i, j, k, + (double) pCov_buf[i][j][k] * pow( 2.0, (double) -hCovState->q_cov_real_per_band[i][j][k] ), + (double) factor * pow( 2.0, (double) -q_fac ), + (double) hCovState->pSmoothing_factor_fx[k] * pow( 2.0, -Q31 ), + (double) pPrior_cov_buf[i][j][k] * pow( 2.0, (double) -hCovState->q_prior_cov_real_per_band[i][j][k] ), + (double) L_buf * pow( 2.0, (double) -q_cov[i][j] ), q_cov[i][j] ); #endif - } FOR( ; k < end_band; k++ ) { @@ -412,16 +411,16 @@ static void ivas_compute_smooth_cov_fx( #ifdef DEBUG_ivas_compute_smooth_cov_fx Word32 L_buf = pCov_buf[i][i][k]; #endif - pCov_buf[i][i][k] = BASOP_Util_Add_Mant32Exp( pCov_buf[i][i][k], sub( Q31, q_cov[i][i] ), Mpy_32_32( hCovState->pSmoothing_factor_fx[k], fac ), fac_e , &cov_buf_e); + pCov_buf[i][i][k] = BASOP_Util_Add_Mant32Exp( pCov_buf[i][i][k], sub( Q31, q_cov[i][i] ), Mpy_32_32( hCovState->pSmoothing_factor_fx[k], fac ), fac_e, &cov_buf_e ); move32(); hCovState->q_cov_real_per_band[i][i][k] = sub( Q31, cov_buf_e ); // Q of pCov_buf[i][i][k] move16(); #ifdef DEBUG_ivas_compute_smooth_cov_fx - printf( "B2: pCov_buf[%d][%d][%d] %e fac %e sm-factor %e buf %e (q=%d)\n", i, i, k, - (double) pCov_buf[i][i][k] * pow( 2.0, (double) -hCovState->q_cov_real_per_band[i][i][k] ), - (double) fac * pow( 2.0, (double) -q_fac ), - (double) hCovState->pSmoothing_factor_fx[k] * pow( 2.0, -Q31 ), - (double) L_buf * pow( 2.0, (double) -q_cov[i][i] ), q_cov[i][i]); + printf( "B2: pCov_buf[%d][%d][%d] %e fac %e sm-factor %e buf %e (q=%d)\n", i, i, k, + (double) pCov_buf[i][i][k] * pow( 2.0, (double) -hCovState->q_cov_real_per_band[i][i][k] ), + (double) fac * pow( 2.0, (double) -q_fac ), + (double) hCovState->pSmoothing_factor_fx[k] * pow( 2.0, -Q31 ), + (double) L_buf * pow( 2.0, (double) -q_cov[i][i] ), q_cov[i][i] ); #endif } } @@ -439,20 +438,20 @@ static void ivas_compute_smooth_cov_fx( } ELSE { - factor = 0; // Q97 + factor = 0; // Q97 move32(); } FOR( k = start_band; k < end_band; k++ ) { /* ref: pCov_buf[i][j][k] = pPrior_cov_buf[i][j][k] + ( hCovState->pSmoothing_factor[k] * ( pCov_buf[i][j][k] - pPrior_cov_buf[i][j][k] + factor ) ); */ - /* mod: pCov_buf[i][j][k] = pCov_buf[i][j][k] * hCovState->pSmoothing_factor[k] + + /* mod: pCov_buf[i][j][k] = pCov_buf[i][j][k] * hCovState->pSmoothing_factor[k] + pPrior_cov_buf[i][j][k] * (1.0 - hCovState->pSmoothing_factor[k]) + factor * hCovState->pSmoothing_factor[k] ); */ #ifdef DEBUG_ivas_compute_smooth_cov_fx Word32 L_buf = pCov_buf[i][j][k]; /* debug !! */ #endif - L_tmp0 = Mpy_32_32( hCovState->pSmoothing_factor_fx[k], pCov_buf[i][j][k] ); // q_tmp0: q_cov[i][j] // (Q31, q_cov[i][j]) -> q_cov[i][j] + L_tmp0 = Mpy_32_32( hCovState->pSmoothing_factor_fx[k], pCov_buf[i][j][k] ); // q_tmp0: q_cov[i][j] // (Q31, q_cov[i][j]) -> q_cov[i][j] L_tmp1 = Mpy_32_32( L_sub( ONE_IN_Q31, hCovState->pSmoothing_factor_fx[k] ), pPrior_cov_buf[i][j][k] ); // q_tmp1: hCovState->q_prior_cov_real_per_band[i][j][k] L_tmp0 = BASOP_Util_Add_Mant32Exp( L_tmp0, sub( Q31, q_cov[i][j] ), L_tmp1, sub( Q31, hCovState->q_prior_cov_real_per_band[i][j][k] ), &cov_buf_e ); pCov_buf[i][j][k] = BASOP_Util_Add_Mant32Exp( L_tmp0, cov_buf_e, Mpy_32_32( hCovState->pSmoothing_factor_fx[k], factor ), fac_e, &cov_buf_e ); @@ -460,14 +459,13 @@ static void ivas_compute_smooth_cov_fx( hCovState->q_cov_real_per_band[i][j][k] = sub( Q31, cov_buf_e ); // Q of pCov_buf[i][j][k] move16(); #ifdef DEBUG_ivas_compute_smooth_cov_fx - printf( "C: pCov_buf[%d][%d][%d] %e factor %e sm-factor %e prior %e buf %e (q=%d)\n", i, j, k, - (double) pCov_buf[i][j][k] * pow(2.0, (double) -hCovState->q_cov_real_per_band[i][j][k]), - (double) factor * pow(2.0, (double) -q_fac), - (double) hCovState->pSmoothing_factor_fx[k] * pow(2.0, -Q31), - (double) pPrior_cov_buf[i][j][k] * pow(2.0, (double) -hCovState->q_prior_cov_real_per_band[i][j][k] ), - (double) L_buf * pow( 2.0, (double) -q_cov[i][j] ), q_cov[i][j] ); + printf( "C: pCov_buf[%d][%d][%d] %e factor %e sm-factor %e prior %e buf %e (q=%d)\n", i, j, k, + (double) pCov_buf[i][j][k] * pow( 2.0, (double) -hCovState->q_cov_real_per_band[i][j][k] ), + (double) factor * pow( 2.0, (double) -q_fac ), + (double) hCovState->pSmoothing_factor_fx[k] * pow( 2.0, -Q31 ), + (double) pPrior_cov_buf[i][j][k] * pow( 2.0, (double) -hCovState->q_prior_cov_real_per_band[i][j][k] ), + (double) L_buf * pow( 2.0, (double) -q_cov[i][j] ), q_cov[i][j] ); #endif - } } } -- GitLab From 73859be2519bd242ff115fbcf4c385103d6c1e74 Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 25 Mar 2025 22:16:40 +0100 Subject: [PATCH 4/7] corrected use of exponents of cov_buf matrices --- lib_com/ivas_cov_smooth_fx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_com/ivas_cov_smooth_fx.c b/lib_com/ivas_cov_smooth_fx.c index 150dc3bfc..1b9cb5c99 100644 --- a/lib_com/ivas_cov_smooth_fx.c +++ b/lib_com/ivas_cov_smooth_fx.c @@ -328,7 +328,7 @@ static void ivas_compute_smooth_cov_fx( FOR( i = 0; i < num_ch; i++ ) { #ifdef DEBUG_ivas_compute_smooth_cov_fx - Word16 cov_buf_e = sub( Q31, q_cov[i][i] ); + cov_buf_e = sub( Q31, q_cov[i][i] ); #endif FOR( k = start_band; k < end_band; k++ ) { @@ -336,7 +336,7 @@ static void ivas_compute_smooth_cov_fx( #ifdef DEBUG_ivas_compute_smooth_cov_fx Word32 L_buf = pCov_buf[i][i][k]; /* debug !! */ #endif - pCov_buf[i][i][k] = BASOP_Util_Add_Mant32Exp( pCov_buf[i][i][k], cov_buf_e, Mpy_32_32( hCovState->pSmoothing_factor_fx[k], fac ), fac_e, &cov_buf_e ); + pCov_buf[i][i][k] = BASOP_Util_Add_Mant32Exp( pCov_buf[i][i][k], sub(Q31, q_cov[i][i]), Mpy_32_32( hCovState->pSmoothing_factor_fx[k], fac ), fac_e, &cov_buf_e ); move32(); hCovState->q_cov_real_per_band[i][i][k] = sub( Q31, cov_buf_e ); move16(); -- GitLab From 5be8b9cff93c419462f8d16cabf1824a8cd095e7 Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 25 Mar 2025 23:58:59 +0100 Subject: [PATCH 5/7] fix clang-format issue --- lib_com/ivas_cov_smooth_fx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_com/ivas_cov_smooth_fx.c b/lib_com/ivas_cov_smooth_fx.c index 1b9cb5c99..d7cabd0db 100644 --- a/lib_com/ivas_cov_smooth_fx.c +++ b/lib_com/ivas_cov_smooth_fx.c @@ -336,7 +336,7 @@ static void ivas_compute_smooth_cov_fx( #ifdef DEBUG_ivas_compute_smooth_cov_fx Word32 L_buf = pCov_buf[i][i][k]; /* debug !! */ #endif - pCov_buf[i][i][k] = BASOP_Util_Add_Mant32Exp( pCov_buf[i][i][k], sub(Q31, q_cov[i][i]), Mpy_32_32( hCovState->pSmoothing_factor_fx[k], fac ), fac_e, &cov_buf_e ); + pCov_buf[i][i][k] = BASOP_Util_Add_Mant32Exp( pCov_buf[i][i][k], sub( Q31, q_cov[i][i] ), Mpy_32_32( hCovState->pSmoothing_factor_fx[k], fac ), fac_e, &cov_buf_e ); move32(); hCovState->q_cov_real_per_band[i][i][k] = sub( Q31, cov_buf_e ); move16(); -- GitLab From 47ecefacad3c2aa92dfca1499986d11df69b0e55 Mon Sep 17 00:00:00 2001 From: Markus Multrus Date: Mon, 31 Mar 2025 20:52:36 +0200 Subject: [PATCH 6/7] remove debug code --- lib_com/ivas_cov_smooth_fx.c | 60 ------------------------------------ 1 file changed, 60 deletions(-) diff --git a/lib_com/ivas_cov_smooth_fx.c b/lib_com/ivas_cov_smooth_fx.c index d7cabd0db..a50f5d2d2 100644 --- a/lib_com/ivas_cov_smooth_fx.c +++ b/lib_com/ivas_cov_smooth_fx.c @@ -44,11 +44,6 @@ #define BAND_SMOOTH_REST_START_IDX ( 2 ) #define ONEeN20_Q97 0x5E728433 // 1e-20 in Q97 1.584.563.251 -//#define DEBUG_ivas_compute_smooth_cov_fx -#ifdef DEBUG_ivas_compute_smooth_cov_fx -#include -#endif - /*-----------------------------------------------------------------------------------------* * Function ivas_calculate_update_factor_fx() @@ -96,11 +91,6 @@ static void ivas_calculate_smoothning_factor_fx( tmp = BASOP_Util_Divide3232_Scale( update_factor, L_shl( L_deposit_l( min_pool_size ), Q22 ), &exp_diff ); // Q(31 - exp_diff) *Smoothing_factor = L_shl_sat( L_deposit_h( tmp ), exp_diff ); // Q31 move32(); -#ifdef DEBUG_ivas_compute_smooth_cov_fx - printf( "Smoothing_factor %e update_factor %e min_pool_size %d j=%d\n", - (double) *Smoothing_factor * pow( 2.0, -31 ), - (double) update_factor * pow( 2.0, -22.0 ), min_pool_size, j ); -#endif IF( NE_32( smooth_mode, COV_SMOOTH_MC ) ) @@ -312,9 +302,6 @@ static void ivas_compute_smooth_cov_fx( move32(); assert( end_band <= pFb->filterbank_num_bands ); -#ifdef DEBUG_ivas_compute_smooth_cov_fx - printf( "\n" ); -#endif test(); IF( EQ_16( prev_idx, -1 ) || EQ_16( transient_det[1], 1 ) ) { @@ -327,28 +314,13 @@ static void ivas_compute_smooth_cov_fx( } FOR( i = 0; i < num_ch; i++ ) { -#ifdef DEBUG_ivas_compute_smooth_cov_fx - cov_buf_e = sub( Q31, q_cov[i][i] ); -#endif FOR( k = start_band; k < end_band; k++ ) { /* ref: pCov_buf[i][i][k] += ( hCovState->pSmoothing_factor[k] * fac ); */ -#ifdef DEBUG_ivas_compute_smooth_cov_fx - Word32 L_buf = pCov_buf[i][i][k]; /* debug !! */ -#endif pCov_buf[i][i][k] = BASOP_Util_Add_Mant32Exp( pCov_buf[i][i][k], sub( Q31, q_cov[i][i] ), Mpy_32_32( hCovState->pSmoothing_factor_fx[k], fac ), fac_e, &cov_buf_e ); move32(); hCovState->q_cov_real_per_band[i][i][k] = sub( Q31, cov_buf_e ); move16(); -#ifdef DEBUG_ivas_compute_smooth_cov_fx - printf( "A: pCov_buf[%d][%d][%d] %e (0x%08X 0x%04X) fac %e sm-factor %e buf %e\n", i, i, k, - (double) pCov_buf[i][i][k] * pow( 2.0, (double) -hCovState->q_cov_real_per_band[i][i][k] ), - pCov_buf[i][i][k], - hCovState->q_cov_real_per_band[i][i][k] & 0xFFFF, - (double) fac * pow( 2.0, (double) -q_fac ), - (double) hCovState->pSmoothing_factor_fx[k] * pow( 2.0, -31.0 ), - (double) L_buf * pow( 2.0, (double) -q_cov[i][i] ) ); -#endif } } } @@ -376,9 +348,6 @@ static void ivas_compute_smooth_cov_fx( /* mod: pCov_buf[i][j][k] = pCov_buf[i][j][k] * hCovState->pSmoothing_factor[k] + pPrior_cov_buf[i][j][k] * (1.0 - hCovState->pSmoothing_factor[k]) + factor * hCovState->pSmoothing_factor[k] ); */ -#ifdef DEBUG_ivas_compute_smooth_cov_fx - Word32 L_buf = pCov_buf[i][j][k]; -#endif L_tmp0 = Mpy_32_32( hCovState->pSmoothing_factor_fx[k], pCov_buf[i][j][k] ); // q_tmp0: q_cov[i][j] // (Q31, q_cov[i][j]) -> q_cov[i][j] L_tmp1 = Mpy_32_32( L_sub( ONE_IN_Q31, hCovState->pSmoothing_factor_fx[k] ), pPrior_cov_buf[i][j][k] ); // q_tmp1: hCovState->q_prior_cov_real_per_band[i][j][k] L_tmp0 = BASOP_Util_Add_Mant32Exp( L_tmp0, sub( Q31, q_cov[i][j] ), L_tmp1, sub( Q31, hCovState->q_prior_cov_real_per_band[i][j][k] ), &cov_buf_e ); @@ -387,14 +356,6 @@ static void ivas_compute_smooth_cov_fx( hCovState->q_cov_real_per_band[i][j][k] = sub( Q31, cov_buf_e ); // Q of pCov_buf[i][j][k] move16(); -#ifdef DEBUG_ivas_compute_smooth_cov_fx - printf( "B1: pCov_buf[%d][%d][%d] %e fac %e sm-factor %e prior %e buf %e (q=%d)\n", i, j, k, - (double) pCov_buf[i][j][k] * pow( 2.0, (double) -hCovState->q_cov_real_per_band[i][j][k] ), - (double) factor * pow( 2.0, (double) -q_fac ), - (double) hCovState->pSmoothing_factor_fx[k] * pow( 2.0, -Q31 ), - (double) pPrior_cov_buf[i][j][k] * pow( 2.0, (double) -hCovState->q_prior_cov_real_per_band[i][j][k] ), - (double) L_buf * pow( 2.0, (double) -q_cov[i][j] ), q_cov[i][j] ); -#endif } FOR( ; k < end_band; k++ ) { @@ -408,20 +369,10 @@ static void ivas_compute_smooth_cov_fx( FOR( k = non_sm_b_idx; k < end_band; k++ ) { /* ref: pCov_buf[i][i][k] += ( hCovState->pSmoothing_factor[k] * fac ); */ -#ifdef DEBUG_ivas_compute_smooth_cov_fx - Word32 L_buf = pCov_buf[i][i][k]; -#endif pCov_buf[i][i][k] = BASOP_Util_Add_Mant32Exp( pCov_buf[i][i][k], sub( Q31, q_cov[i][i] ), Mpy_32_32( hCovState->pSmoothing_factor_fx[k], fac ), fac_e, &cov_buf_e ); move32(); hCovState->q_cov_real_per_band[i][i][k] = sub( Q31, cov_buf_e ); // Q of pCov_buf[i][i][k] move16(); -#ifdef DEBUG_ivas_compute_smooth_cov_fx - printf( "B2: pCov_buf[%d][%d][%d] %e fac %e sm-factor %e buf %e (q=%d)\n", i, i, k, - (double) pCov_buf[i][i][k] * pow( 2.0, (double) -hCovState->q_cov_real_per_band[i][i][k] ), - (double) fac * pow( 2.0, (double) -q_fac ), - (double) hCovState->pSmoothing_factor_fx[k] * pow( 2.0, -Q31 ), - (double) L_buf * pow( 2.0, (double) -q_cov[i][i] ), q_cov[i][i] ); -#endif } } } @@ -448,9 +399,6 @@ static void ivas_compute_smooth_cov_fx( /* mod: pCov_buf[i][j][k] = pCov_buf[i][j][k] * hCovState->pSmoothing_factor[k] + pPrior_cov_buf[i][j][k] * (1.0 - hCovState->pSmoothing_factor[k]) + factor * hCovState->pSmoothing_factor[k] ); */ -#ifdef DEBUG_ivas_compute_smooth_cov_fx - Word32 L_buf = pCov_buf[i][j][k]; /* debug !! */ -#endif L_tmp0 = Mpy_32_32( hCovState->pSmoothing_factor_fx[k], pCov_buf[i][j][k] ); // q_tmp0: q_cov[i][j] // (Q31, q_cov[i][j]) -> q_cov[i][j] L_tmp1 = Mpy_32_32( L_sub( ONE_IN_Q31, hCovState->pSmoothing_factor_fx[k] ), pPrior_cov_buf[i][j][k] ); // q_tmp1: hCovState->q_prior_cov_real_per_band[i][j][k] L_tmp0 = BASOP_Util_Add_Mant32Exp( L_tmp0, sub( Q31, q_cov[i][j] ), L_tmp1, sub( Q31, hCovState->q_prior_cov_real_per_band[i][j][k] ), &cov_buf_e ); @@ -458,14 +406,6 @@ static void ivas_compute_smooth_cov_fx( move32(); hCovState->q_cov_real_per_band[i][j][k] = sub( Q31, cov_buf_e ); // Q of pCov_buf[i][j][k] move16(); -#ifdef DEBUG_ivas_compute_smooth_cov_fx - printf( "C: pCov_buf[%d][%d][%d] %e factor %e sm-factor %e prior %e buf %e (q=%d)\n", i, j, k, - (double) pCov_buf[i][j][k] * pow( 2.0, (double) -hCovState->q_cov_real_per_band[i][j][k] ), - (double) factor * pow( 2.0, (double) -q_fac ), - (double) hCovState->pSmoothing_factor_fx[k] * pow( 2.0, -Q31 ), - (double) pPrior_cov_buf[i][j][k] * pow( 2.0, (double) -hCovState->q_prior_cov_real_per_band[i][j][k] ), - (double) L_buf * pow( 2.0, (double) -q_cov[i][j] ), q_cov[i][j] ); -#endif } } } -- GitLab From b9604e9df6c79950b6267cac69f14f066b79b740 Mon Sep 17 00:00:00 2001 From: Markus Multrus Date: Mon, 31 Mar 2025 21:04:12 +0200 Subject: [PATCH 7/7] formatting --- lib_com/ivas_cov_smooth_fx.c | 1 - 1 file changed, 1 deletion(-) diff --git a/lib_com/ivas_cov_smooth_fx.c b/lib_com/ivas_cov_smooth_fx.c index a50f5d2d2..9a8de3c1f 100644 --- a/lib_com/ivas_cov_smooth_fx.c +++ b/lib_com/ivas_cov_smooth_fx.c @@ -355,7 +355,6 @@ static void ivas_compute_smooth_cov_fx( move32(); hCovState->q_cov_real_per_band[i][j][k] = sub( Q31, cov_buf_e ); // Q of pCov_buf[i][j][k] move16(); - } FOR( ; k < end_band; k++ ) { -- GitLab