Loading lib_com/ivas_cov_smooth_fx.c +0 −60 Original line number Diff line number Diff line Loading @@ -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 <math.h> #endif /*-----------------------------------------------------------------------------------------* * Function ivas_calculate_update_factor_fx() Loading Loading @@ -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 ) ) Loading Loading @@ -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 ) ) { Loading @@ -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 } } } Loading Loading @@ -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 ); Loading @@ -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++ ) { Loading @@ -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 } } } Loading @@ -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 ); Loading @@ -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 } } } Loading Loading
lib_com/ivas_cov_smooth_fx.c +0 −60 Original line number Diff line number Diff line Loading @@ -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 <math.h> #endif /*-----------------------------------------------------------------------------------------* * Function ivas_calculate_update_factor_fx() Loading Loading @@ -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 ) ) Loading Loading @@ -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 ) ) { Loading @@ -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 } } } Loading Loading @@ -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 ); Loading @@ -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++ ) { Loading @@ -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 } } } Loading @@ -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 ); Loading @@ -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 } } } Loading