Silence some overflow checks
Co-authored-by: James Zern <jzern@google.com>
This commit is contained in:
parent
1ada7d4d6f
commit
cfeddc49f9
3 changed files with 21 additions and 21 deletions
12
silk/NSQ.c
12
silk/NSQ.c
|
@ -258,8 +258,8 @@ void silk_noise_shape_quantizer(
|
||||||
celt_assert( lag > 0 || signalType != TYPE_VOICED );
|
celt_assert( lag > 0 || signalType != TYPE_VOICED );
|
||||||
|
|
||||||
/* Combine prediction and noise shaping signals */
|
/* Combine prediction and noise shaping signals */
|
||||||
tmp1 = silk_SUB32( silk_LSHIFT32( LPC_pred_Q10, 2 ), n_AR_Q12 ); /* Q12 */
|
tmp1 = silk_SUB32_ovflw( silk_LSHIFT32( LPC_pred_Q10, 2 ), n_AR_Q12 ); /* Q12 */
|
||||||
tmp1 = silk_SUB32( tmp1, n_LF_Q12 ); /* Q12 */
|
tmp1 = silk_SUB32_ovflw( tmp1, n_LF_Q12 ); /* Q12 */
|
||||||
if( lag > 0 ) {
|
if( lag > 0 ) {
|
||||||
/* Symmetric, packed FIR coefficients */
|
/* Symmetric, packed FIR coefficients */
|
||||||
n_LTP_Q13 = silk_SMULWB( silk_ADD_SAT32( shp_lag_ptr[ 0 ], shp_lag_ptr[ -2 ] ), HarmShapeFIRPacked_Q14 );
|
n_LTP_Q13 = silk_SMULWB( silk_ADD_SAT32( shp_lag_ptr[ 0 ], shp_lag_ptr[ -2 ] ), HarmShapeFIRPacked_Q14 );
|
||||||
|
@ -268,7 +268,7 @@ void silk_noise_shape_quantizer(
|
||||||
shp_lag_ptr++;
|
shp_lag_ptr++;
|
||||||
|
|
||||||
tmp2 = silk_SUB32( LTP_pred_Q13, n_LTP_Q13 ); /* Q13 */
|
tmp2 = silk_SUB32( LTP_pred_Q13, n_LTP_Q13 ); /* Q13 */
|
||||||
tmp1 = silk_ADD_LSHIFT32( tmp2, tmp1, 1 ); /* Q13 */
|
tmp1 = silk_ADD32_ovflw( tmp2, silk_LSHIFT32( tmp1, 1 ) ); /* Q13 */
|
||||||
tmp1 = silk_RSHIFT_ROUND( tmp1, 3 ); /* Q10 */
|
tmp1 = silk_RSHIFT_ROUND( tmp1, 3 ); /* Q10 */
|
||||||
} else {
|
} else {
|
||||||
tmp1 = silk_RSHIFT_ROUND( tmp1, 2 ); /* Q10 */
|
tmp1 = silk_RSHIFT_ROUND( tmp1, 2 ); /* Q10 */
|
||||||
|
@ -340,7 +340,7 @@ void silk_noise_shape_quantizer(
|
||||||
|
|
||||||
/* Add predictions */
|
/* Add predictions */
|
||||||
LPC_exc_Q14 = silk_ADD_LSHIFT32( exc_Q14, LTP_pred_Q13, 1 );
|
LPC_exc_Q14 = silk_ADD_LSHIFT32( exc_Q14, LTP_pred_Q13, 1 );
|
||||||
xq_Q14 = silk_ADD_LSHIFT32( LPC_exc_Q14, LPC_pred_Q10, 4 );
|
xq_Q14 = silk_ADD32_ovflw( LPC_exc_Q14, silk_LSHIFT32( LPC_pred_Q10, 4 ) );
|
||||||
|
|
||||||
/* Scale XQ back to normal level before saving */
|
/* Scale XQ back to normal level before saving */
|
||||||
xq[ i ] = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND( silk_SMULWW( xq_Q14, Gain_Q10 ), 8 ) );
|
xq[ i ] = (opus_int16)silk_SAT16( silk_RSHIFT_ROUND( silk_SMULWW( xq_Q14, Gain_Q10 ), 8 ) );
|
||||||
|
@ -349,10 +349,10 @@ void silk_noise_shape_quantizer(
|
||||||
psLPC_Q14++;
|
psLPC_Q14++;
|
||||||
*psLPC_Q14 = xq_Q14;
|
*psLPC_Q14 = xq_Q14;
|
||||||
NSQ->sDiff_shp_Q14 = silk_SUB_LSHIFT32( xq_Q14, x_sc_Q10[ i ], 4 );
|
NSQ->sDiff_shp_Q14 = silk_SUB_LSHIFT32( xq_Q14, x_sc_Q10[ i ], 4 );
|
||||||
sLF_AR_shp_Q14 = silk_SUB_LSHIFT32( NSQ->sDiff_shp_Q14, n_AR_Q12, 2 );
|
sLF_AR_shp_Q14 = silk_SUB32_ovflw( NSQ->sDiff_shp_Q14, silk_LSHIFT32( n_AR_Q12, 2 ) );
|
||||||
NSQ->sLF_AR_shp_Q14 = sLF_AR_shp_Q14;
|
NSQ->sLF_AR_shp_Q14 = sLF_AR_shp_Q14;
|
||||||
|
|
||||||
NSQ->sLTP_shp_Q14[ NSQ->sLTP_shp_buf_idx ] = silk_SUB_LSHIFT32( sLF_AR_shp_Q14, n_LF_Q12, 2 );
|
NSQ->sLTP_shp_Q14[ NSQ->sLTP_shp_buf_idx ] = silk_SUB32_ovflw(sLF_AR_shp_Q14, silk_LSHIFT32(n_LF_Q12, 2));
|
||||||
sLTP_Q15[ NSQ->sLTP_buf_idx ] = silk_LSHIFT( LPC_exc_Q14, 1 );
|
sLTP_Q15[ NSQ->sLTP_buf_idx ] = silk_LSHIFT( LPC_exc_Q14, 1 );
|
||||||
NSQ->sLTP_shp_buf_idx++;
|
NSQ->sLTP_shp_buf_idx++;
|
||||||
NSQ->sLTP_buf_idx++;
|
NSQ->sLTP_buf_idx++;
|
||||||
|
|
|
@ -423,18 +423,18 @@ static OPUS_INLINE void silk_noise_shape_quantizer_del_dec(
|
||||||
/* Output of lowpass section */
|
/* Output of lowpass section */
|
||||||
tmp2 = silk_SMLAWB( psDD->Diff_Q14, psDD->sAR2_Q14[ 0 ], warping_Q16 );
|
tmp2 = silk_SMLAWB( psDD->Diff_Q14, psDD->sAR2_Q14[ 0 ], warping_Q16 );
|
||||||
/* Output of allpass section */
|
/* Output of allpass section */
|
||||||
tmp1 = silk_SMLAWB( psDD->sAR2_Q14[ 0 ], psDD->sAR2_Q14[ 1 ] - tmp2, warping_Q16 );
|
tmp1 = silk_SMLAWB( psDD->sAR2_Q14[ 0 ], silk_SUB32_ovflw(psDD->sAR2_Q14[ 1 ], tmp2), warping_Q16 );
|
||||||
psDD->sAR2_Q14[ 0 ] = tmp2;
|
psDD->sAR2_Q14[ 0 ] = tmp2;
|
||||||
n_AR_Q14 = silk_RSHIFT( shapingLPCOrder, 1 );
|
n_AR_Q14 = silk_RSHIFT( shapingLPCOrder, 1 );
|
||||||
n_AR_Q14 = silk_SMLAWB( n_AR_Q14, tmp2, AR_shp_Q13[ 0 ] );
|
n_AR_Q14 = silk_SMLAWB( n_AR_Q14, tmp2, AR_shp_Q13[ 0 ] );
|
||||||
/* Loop over allpass sections */
|
/* Loop over allpass sections */
|
||||||
for( j = 2; j < shapingLPCOrder; j += 2 ) {
|
for( j = 2; j < shapingLPCOrder; j += 2 ) {
|
||||||
/* Output of allpass section */
|
/* Output of allpass section */
|
||||||
tmp2 = silk_SMLAWB( psDD->sAR2_Q14[ j - 1 ], psDD->sAR2_Q14[ j + 0 ] - tmp1, warping_Q16 );
|
tmp2 = silk_SMLAWB( psDD->sAR2_Q14[ j - 1 ], silk_SUB32_ovflw(psDD->sAR2_Q14[ j + 0 ], tmp1), warping_Q16 );
|
||||||
psDD->sAR2_Q14[ j - 1 ] = tmp1;
|
psDD->sAR2_Q14[ j - 1 ] = tmp1;
|
||||||
n_AR_Q14 = silk_SMLAWB( n_AR_Q14, tmp1, AR_shp_Q13[ j - 1 ] );
|
n_AR_Q14 = silk_SMLAWB( n_AR_Q14, tmp1, AR_shp_Q13[ j - 1 ] );
|
||||||
/* Output of allpass section */
|
/* Output of allpass section */
|
||||||
tmp1 = silk_SMLAWB( psDD->sAR2_Q14[ j + 0 ], psDD->sAR2_Q14[ j + 1 ] - tmp2, warping_Q16 );
|
tmp1 = silk_SMLAWB( psDD->sAR2_Q14[ j + 0 ], silk_SUB32_ovflw(psDD->sAR2_Q14[ j + 1 ], tmp2), warping_Q16 );
|
||||||
psDD->sAR2_Q14[ j + 0 ] = tmp2;
|
psDD->sAR2_Q14[ j + 0 ] = tmp2;
|
||||||
n_AR_Q14 = silk_SMLAWB( n_AR_Q14, tmp2, AR_shp_Q13[ j ] );
|
n_AR_Q14 = silk_SMLAWB( n_AR_Q14, tmp2, AR_shp_Q13[ j ] );
|
||||||
}
|
}
|
||||||
|
@ -452,7 +452,7 @@ static OPUS_INLINE void silk_noise_shape_quantizer_del_dec(
|
||||||
/* Input minus prediction plus noise feedback */
|
/* Input minus prediction plus noise feedback */
|
||||||
/* r = x[ i ] - LTP_pred - LPC_pred + n_AR + n_Tilt + n_LF + n_LTP */
|
/* r = x[ i ] - LTP_pred - LPC_pred + n_AR + n_Tilt + n_LF + n_LTP */
|
||||||
tmp1 = silk_ADD_SAT32( n_AR_Q14, n_LF_Q14 ); /* Q14 */
|
tmp1 = silk_ADD_SAT32( n_AR_Q14, n_LF_Q14 ); /* Q14 */
|
||||||
tmp2 = silk_ADD32( n_LTP_Q14, LPC_pred_Q14 ); /* Q13 */
|
tmp2 = silk_ADD32_ovflw( n_LTP_Q14, LPC_pred_Q14 ); /* Q13 */
|
||||||
tmp1 = silk_SUB_SAT32( tmp2, tmp1 ); /* Q13 */
|
tmp1 = silk_SUB_SAT32( tmp2, tmp1 ); /* Q13 */
|
||||||
tmp1 = silk_RSHIFT_ROUND( tmp1, 4 ); /* Q10 */
|
tmp1 = silk_RSHIFT_ROUND( tmp1, 4 ); /* Q10 */
|
||||||
|
|
||||||
|
@ -530,11 +530,11 @@ static OPUS_INLINE void silk_noise_shape_quantizer_del_dec(
|
||||||
|
|
||||||
/* Add predictions */
|
/* Add predictions */
|
||||||
LPC_exc_Q14 = silk_ADD32( exc_Q14, LTP_pred_Q14 );
|
LPC_exc_Q14 = silk_ADD32( exc_Q14, LTP_pred_Q14 );
|
||||||
xq_Q14 = silk_ADD32( LPC_exc_Q14, LPC_pred_Q14 );
|
xq_Q14 = silk_ADD32_ovflw( LPC_exc_Q14, LPC_pred_Q14 );
|
||||||
|
|
||||||
/* Update states */
|
/* Update states */
|
||||||
psSS[ 0 ].Diff_Q14 = silk_SUB_LSHIFT32( xq_Q14, x_Q10[ i ], 4 );
|
psSS[ 0 ].Diff_Q14 = silk_SUB32_ovflw( xq_Q14, silk_LSHIFT32( x_Q10[ i ], 4 ) );
|
||||||
sLF_AR_shp_Q14 = silk_SUB32( psSS[ 0 ].Diff_Q14, n_AR_Q14 );
|
sLF_AR_shp_Q14 = silk_SUB32_ovflw( psSS[ 0 ].Diff_Q14, n_AR_Q14 );
|
||||||
psSS[ 0 ].sLTP_shp_Q14 = silk_SUB_SAT32( sLF_AR_shp_Q14, n_LF_Q14 );
|
psSS[ 0 ].sLTP_shp_Q14 = silk_SUB_SAT32( sLF_AR_shp_Q14, n_LF_Q14 );
|
||||||
psSS[ 0 ].LF_AR_Q14 = sLF_AR_shp_Q14;
|
psSS[ 0 ].LF_AR_Q14 = sLF_AR_shp_Q14;
|
||||||
psSS[ 0 ].LPC_exc_Q14 = LPC_exc_Q14;
|
psSS[ 0 ].LPC_exc_Q14 = LPC_exc_Q14;
|
||||||
|
@ -550,11 +550,11 @@ static OPUS_INLINE void silk_noise_shape_quantizer_del_dec(
|
||||||
|
|
||||||
/* Add predictions */
|
/* Add predictions */
|
||||||
LPC_exc_Q14 = silk_ADD32( exc_Q14, LTP_pred_Q14 );
|
LPC_exc_Q14 = silk_ADD32( exc_Q14, LTP_pred_Q14 );
|
||||||
xq_Q14 = silk_ADD32( LPC_exc_Q14, LPC_pred_Q14 );
|
xq_Q14 = silk_ADD32_ovflw( LPC_exc_Q14, LPC_pred_Q14 );
|
||||||
|
|
||||||
/* Update states */
|
/* Update states */
|
||||||
psSS[ 1 ].Diff_Q14 = silk_SUB_LSHIFT32( xq_Q14, x_Q10[ i ], 4 );
|
psSS[ 1 ].Diff_Q14 = silk_SUB32_ovflw( xq_Q14, silk_LSHIFT32( x_Q10[ i ], 4 ) );
|
||||||
sLF_AR_shp_Q14 = silk_SUB32( psSS[ 1 ].Diff_Q14, n_AR_Q14 );
|
sLF_AR_shp_Q14 = silk_SUB32_ovflw( psSS[ 1 ].Diff_Q14, n_AR_Q14 );
|
||||||
psSS[ 1 ].sLTP_shp_Q14 = silk_SUB_SAT32( sLF_AR_shp_Q14, n_LF_Q14 );
|
psSS[ 1 ].sLTP_shp_Q14 = silk_SUB_SAT32( sLF_AR_shp_Q14, n_LF_Q14 );
|
||||||
psSS[ 1 ].LF_AR_Q14 = sLF_AR_shp_Q14;
|
psSS[ 1 ].LF_AR_Q14 = sLF_AR_shp_Q14;
|
||||||
psSS[ 1 ].LPC_exc_Q14 = LPC_exc_Q14;
|
psSS[ 1 ].LPC_exc_Q14 = LPC_exc_Q14;
|
||||||
|
|
|
@ -561,18 +561,18 @@ static OPUS_INLINE void silk_noise_shape_quantizer_del_dec_sse4_1(
|
||||||
/* Output of lowpass section */
|
/* Output of lowpass section */
|
||||||
tmp2 = silk_SMLAWB( psDD->Diff_Q14, psDD->sAR2_Q14[ 0 ], warping_Q16 );
|
tmp2 = silk_SMLAWB( psDD->Diff_Q14, psDD->sAR2_Q14[ 0 ], warping_Q16 );
|
||||||
/* Output of allpass section */
|
/* Output of allpass section */
|
||||||
tmp1 = silk_SMLAWB( psDD->sAR2_Q14[ 0 ], psDD->sAR2_Q14[ 1 ] - tmp2, warping_Q16 );
|
tmp1 = silk_SMLAWB( psDD->sAR2_Q14[ 0 ], silk_SUB32_ovflw(psDD->sAR2_Q14[ 1 ], tmp2), warping_Q16 );
|
||||||
psDD->sAR2_Q14[ 0 ] = tmp2;
|
psDD->sAR2_Q14[ 0 ] = tmp2;
|
||||||
n_AR_Q14 = silk_RSHIFT( shapingLPCOrder, 1 );
|
n_AR_Q14 = silk_RSHIFT( shapingLPCOrder, 1 );
|
||||||
n_AR_Q14 = silk_SMLAWB( n_AR_Q14, tmp2, AR_shp_Q13[ 0 ] );
|
n_AR_Q14 = silk_SMLAWB( n_AR_Q14, tmp2, AR_shp_Q13[ 0 ] );
|
||||||
/* Loop over allpass sections */
|
/* Loop over allpass sections */
|
||||||
for( j = 2; j < shapingLPCOrder; j += 2 ) {
|
for( j = 2; j < shapingLPCOrder; j += 2 ) {
|
||||||
/* Output of allpass section */
|
/* Output of allpass section */
|
||||||
tmp2 = silk_SMLAWB( psDD->sAR2_Q14[ j - 1 ], psDD->sAR2_Q14[ j + 0 ] - tmp1, warping_Q16 );
|
tmp2 = silk_SMLAWB( psDD->sAR2_Q14[ j - 1 ], silk_SUB32_ovflw(psDD->sAR2_Q14[ j + 0 ], tmp1), warping_Q16 );
|
||||||
psDD->sAR2_Q14[ j - 1 ] = tmp1;
|
psDD->sAR2_Q14[ j - 1 ] = tmp1;
|
||||||
n_AR_Q14 = silk_SMLAWB( n_AR_Q14, tmp1, AR_shp_Q13[ j - 1 ] );
|
n_AR_Q14 = silk_SMLAWB( n_AR_Q14, tmp1, AR_shp_Q13[ j - 1 ] );
|
||||||
/* Output of allpass section */
|
/* Output of allpass section */
|
||||||
tmp1 = silk_SMLAWB( psDD->sAR2_Q14[ j + 0 ], psDD->sAR2_Q14[ j + 1 ] - tmp2, warping_Q16 );
|
tmp1 = silk_SMLAWB( psDD->sAR2_Q14[ j + 0 ], silk_SUB32_ovflw(psDD->sAR2_Q14[ j + 1 ], tmp2), warping_Q16 );
|
||||||
psDD->sAR2_Q14[ j + 0 ] = tmp2;
|
psDD->sAR2_Q14[ j + 0 ] = tmp2;
|
||||||
n_AR_Q14 = silk_SMLAWB( n_AR_Q14, tmp2, AR_shp_Q13[ j ] );
|
n_AR_Q14 = silk_SMLAWB( n_AR_Q14, tmp2, AR_shp_Q13[ j ] );
|
||||||
}
|
}
|
||||||
|
@ -671,7 +671,7 @@ static OPUS_INLINE void silk_noise_shape_quantizer_del_dec_sse4_1(
|
||||||
|
|
||||||
/* Update states */
|
/* Update states */
|
||||||
psSS[ 0 ].Diff_Q14 = silk_SUB_LSHIFT32( xq_Q14, x_Q10[ i ], 4 );
|
psSS[ 0 ].Diff_Q14 = silk_SUB_LSHIFT32( xq_Q14, x_Q10[ i ], 4 );
|
||||||
sLF_AR_shp_Q14 = silk_SUB32( psSS[ 0 ].Diff_Q14, n_AR_Q14 );
|
sLF_AR_shp_Q14 = silk_SUB32_ovflw( psSS[ 0 ].Diff_Q14, n_AR_Q14 );
|
||||||
psSS[ 0 ].sLTP_shp_Q14 = silk_SUB_SAT32( sLF_AR_shp_Q14, n_LF_Q14 );
|
psSS[ 0 ].sLTP_shp_Q14 = silk_SUB_SAT32( sLF_AR_shp_Q14, n_LF_Q14 );
|
||||||
psSS[ 0 ].LF_AR_Q14 = sLF_AR_shp_Q14;
|
psSS[ 0 ].LF_AR_Q14 = sLF_AR_shp_Q14;
|
||||||
psSS[ 0 ].LPC_exc_Q14 = LPC_exc_Q14;
|
psSS[ 0 ].LPC_exc_Q14 = LPC_exc_Q14;
|
||||||
|
@ -691,7 +691,7 @@ static OPUS_INLINE void silk_noise_shape_quantizer_del_dec_sse4_1(
|
||||||
|
|
||||||
/* Update states */
|
/* Update states */
|
||||||
psSS[ 1 ].Diff_Q14 = silk_SUB_LSHIFT32( xq_Q14, x_Q10[ i ], 4 );
|
psSS[ 1 ].Diff_Q14 = silk_SUB_LSHIFT32( xq_Q14, x_Q10[ i ], 4 );
|
||||||
sLF_AR_shp_Q14 = silk_SUB32( psSS[ 1 ].Diff_Q14, n_AR_Q14 );
|
sLF_AR_shp_Q14 = silk_SUB32_ovflw( psSS[ 1 ].Diff_Q14, n_AR_Q14 );
|
||||||
psSS[ 1 ].sLTP_shp_Q14 = silk_SUB_SAT32( sLF_AR_shp_Q14, n_LF_Q14 );
|
psSS[ 1 ].sLTP_shp_Q14 = silk_SUB_SAT32( sLF_AR_shp_Q14, n_LF_Q14 );
|
||||||
psSS[ 1 ].LF_AR_Q14 = sLF_AR_shp_Q14;
|
psSS[ 1 ].LF_AR_Q14 = sLF_AR_shp_Q14;
|
||||||
psSS[ 1 ].LPC_exc_Q14 = LPC_exc_Q14;
|
psSS[ 1 ].LPC_exc_Q14 = LPC_exc_Q14;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue