Loading lib_dec/fd_cng_dec_fx.c +14 −34 Original line number Diff line number Diff line Loading @@ -2468,15 +2468,15 @@ void perform_noise_estimation_dec_ivas_fx( SWITCH( hFdCngDec->hFdCngCom->fftlen ) { case 640: rescale_fac = 83886; // 4/(640 * 640) in Q33 rescale_fac = 671089; // 4/(640 * 640) in Q36 move32(); BREAK; case 512: rescale_fac = 131072; // 4/(512 * 512) in Q33 rescale_fac = 1048576; // 4/(512 * 512) in Q36 move32(); BREAK; case 320: rescale_fac = 335544; // 4/(320 * 320) in Q33 rescale_fac = 2684354; // 4/(320 * 320) in Q36 move32(); BREAK; default: Loading Loading @@ -2507,23 +2507,12 @@ void perform_noise_estimation_dec_ivas_fx( tmp_s = W_norm( W_tmp ); tmp_q = sub( add( i_mult( sub( 31, fftBuffer_exp ), 2 ), tmp_s ), 32 ); IF( tmp_q < 0 ) { W_tmp = W_shr( W_tmp, negate( tmp_q ) ); } *ptr_per = W_extract_h( W_shl( W_tmp, tmp_s ) ); IF( LT_16( tmp_q, min_q ) ) { reIter = ptr_per; Word16 diff; IF( tmp_q <= 0 ) { diff = min_q; move16(); } ELSE { diff = sub( min_q, tmp_q ); } WHILE( reIter > periodog ) { Loading @@ -2531,34 +2520,25 @@ void perform_noise_estimation_dec_ivas_fx( *reIter = L_shr( *reIter, diff ); move32(); } IF( tmp_q >= 0 ) { min_q = tmp_q; move16(); } ELSE IF( tmp_q < 0 ) ELSE { min_q = 0; } move16(); Word16 diff; diff = sub( tmp_q, min_q ); ( *ptr_per ) = L_shr( ( *ptr_per ), diff ); } ( *ptr_per ) = W_extract_l( W_shr( W_tmp, sub( shl( sub( 31, fftBuffer_exp ), 1 ), min_q ) ) ); // Qmin_q move32(); /* Rescale to get energy/sample: it should be 2*(1/N)*(2/N), parseval relation with 1/N,*2 for nrg computed till Nyquist only, 2/N as windowed samples correspond to half a frame*/ ( *ptr_per ) = Mpy_32_32_r( ( *ptr_per ), rescale_fac ); // Q = min_q+2 ( *ptr_per ) = Mpy_32_32_r( ( *ptr_per ), rescale_fac ); // Q = min_q+36-31=min_q+5 move32(); IF( tmp_q < 0 ) { ( *ptr_per ) = L_shl( ( *ptr_per ), negate( tmp_q ) ); move32(); } ptr_r += 2; ptr_i += 2; } hFdCngDec->hFdCngCom->periodog_exp = sub( 31 - 2, min_q ); hFdCngDec->hFdCngCom->periodog_exp = sub( 31 - 5, min_q ); hFdCngDec->hFdCngCom->fftBuffer_exp = fftBuffer_exp; move16(); move16(); Loading Loading
lib_dec/fd_cng_dec_fx.c +14 −34 Original line number Diff line number Diff line Loading @@ -2468,15 +2468,15 @@ void perform_noise_estimation_dec_ivas_fx( SWITCH( hFdCngDec->hFdCngCom->fftlen ) { case 640: rescale_fac = 83886; // 4/(640 * 640) in Q33 rescale_fac = 671089; // 4/(640 * 640) in Q36 move32(); BREAK; case 512: rescale_fac = 131072; // 4/(512 * 512) in Q33 rescale_fac = 1048576; // 4/(512 * 512) in Q36 move32(); BREAK; case 320: rescale_fac = 335544; // 4/(320 * 320) in Q33 rescale_fac = 2684354; // 4/(320 * 320) in Q36 move32(); BREAK; default: Loading Loading @@ -2507,23 +2507,12 @@ void perform_noise_estimation_dec_ivas_fx( tmp_s = W_norm( W_tmp ); tmp_q = sub( add( i_mult( sub( 31, fftBuffer_exp ), 2 ), tmp_s ), 32 ); IF( tmp_q < 0 ) { W_tmp = W_shr( W_tmp, negate( tmp_q ) ); } *ptr_per = W_extract_h( W_shl( W_tmp, tmp_s ) ); IF( LT_16( tmp_q, min_q ) ) { reIter = ptr_per; Word16 diff; IF( tmp_q <= 0 ) { diff = min_q; move16(); } ELSE { diff = sub( min_q, tmp_q ); } WHILE( reIter > periodog ) { Loading @@ -2531,34 +2520,25 @@ void perform_noise_estimation_dec_ivas_fx( *reIter = L_shr( *reIter, diff ); move32(); } IF( tmp_q >= 0 ) { min_q = tmp_q; move16(); } ELSE IF( tmp_q < 0 ) ELSE { min_q = 0; } move16(); Word16 diff; diff = sub( tmp_q, min_q ); ( *ptr_per ) = L_shr( ( *ptr_per ), diff ); } ( *ptr_per ) = W_extract_l( W_shr( W_tmp, sub( shl( sub( 31, fftBuffer_exp ), 1 ), min_q ) ) ); // Qmin_q move32(); /* Rescale to get energy/sample: it should be 2*(1/N)*(2/N), parseval relation with 1/N,*2 for nrg computed till Nyquist only, 2/N as windowed samples correspond to half a frame*/ ( *ptr_per ) = Mpy_32_32_r( ( *ptr_per ), rescale_fac ); // Q = min_q+2 ( *ptr_per ) = Mpy_32_32_r( ( *ptr_per ), rescale_fac ); // Q = min_q+36-31=min_q+5 move32(); IF( tmp_q < 0 ) { ( *ptr_per ) = L_shl( ( *ptr_per ), negate( tmp_q ) ); move32(); } ptr_r += 2; ptr_i += 2; } hFdCngDec->hFdCngCom->periodog_exp = sub( 31 - 2, min_q ); hFdCngDec->hFdCngCom->periodog_exp = sub( 31 - 5, min_q ); hFdCngDec->hFdCngCom->fftBuffer_exp = fftBuffer_exp; move16(); move16(); Loading