Index: third_party/opus/src/silk/PLC.c |
diff --git a/third_party/opus/src/silk/PLC.c b/third_party/opus/src/silk/PLC.c |
index fb6ea887b7ee254b1b858a6a52bc5845e0d5738d..a3e55ea765ef4f4b071901555d33d03c0633eae2 100644 |
--- a/third_party/opus/src/silk/PLC.c |
+++ b/third_party/opus/src/silk/PLC.c |
@@ -275,7 +275,7 @@ static OPUS_INLINE void silk_PLC_conceal( |
/* Reduce random noise for unvoiced frames with high LPC gain */ |
opus_int32 invGain_Q30, down_scale_Q30; |
- invGain_Q30 = silk_LPC_inverse_pred_gain( psPLC->prevLPC_Q12, psDec->LPC_order ); |
+ invGain_Q30 = silk_LPC_inverse_pred_gain( psPLC->prevLPC_Q12, psDec->LPC_order, arch ); |
down_scale_Q30 = silk_min_32( silk_RSHIFT( (opus_int32)1 << 30, LOG2_INV_LPC_GAIN_HIGH_THRES ), invGain_Q30 ); |
down_scale_Q30 = silk_max_32( silk_RSHIFT( (opus_int32)1 << 30, LOG2_INV_LPC_GAIN_LOW_THRES ), down_scale_Q30 ); |
@@ -328,8 +328,10 @@ static OPUS_INLINE void silk_PLC_conceal( |
for( j = 0; j < LTP_ORDER; j++ ) { |
B_Q14[ j ] = silk_RSHIFT( silk_SMULBB( harm_Gain_Q15, B_Q14[ j ] ), 15 ); |
} |
- /* Gradually reduce excitation gain */ |
- rand_scale_Q14 = silk_RSHIFT( silk_SMULBB( rand_scale_Q14, rand_Gain_Q15 ), 15 ); |
+ if ( psDec->indices.signalType != TYPE_NO_VOICE_ACTIVITY ) { |
+ /* Gradually reduce excitation gain */ |
+ rand_scale_Q14 = silk_RSHIFT( silk_SMULBB( rand_scale_Q14, rand_Gain_Q15 ), 15 ); |
+ } |
/* Slowly increase pitch lag */ |
psPLC->pitchL_Q8 = silk_SMLAWB( psPLC->pitchL_Q8, psPLC->pitchL_Q8, PITCH_DRIFT_FAC_Q16 ); |