diff --git a/silk/dec_API.c b/silk/dec_API.c index 018173efa09aa279184e46b1cfd0ca74c58e42db..9b7bd4a74bcdbaa3ab5c85fb3e84063306699eba 100644 --- a/silk/dec_API.c +++ b/silk/dec_API.c @@ -104,8 +104,8 @@ opus_int silk_Decode( ret += silk_init_decoder( &channel_state[ 1 ] ); } - for( n = 0; n < decControl->nChannelsInternal; n++ ) { - if( channel_state[ n ].nFramesDecoded == 0 ) { + if( channel_state[ 0 ].nFramesDecoded == 0 ) { + for( n = 0; n < decControl->nChannelsInternal; n++ ) { opus_int fs_kHz_dec; if( decControl->payloadSize_ms == 0 ) { /* Assuming packet loss, use 10 ms */ @@ -258,6 +258,7 @@ opus_int silk_Decode( } else { silk_memset( &samplesOut1_tmp[ n ][ 2 + delay ], 0, nSamplesOutDec * sizeof( opus_int16 ) ); } + channel_state[ n ].nFramesDecoded++; } if( decControl->nChannelsAPI == 2 && decControl->nChannelsInternal == 2 ) { diff --git a/silk/decode_frame.c b/silk/decode_frame.c index 54bb920bfc0c6d97f8dd7bd86305dc0dd4740b0b..83c92210cea3462fd8df8395fe769705b213f7a1 100644 --- a/silk/decode_frame.c +++ b/silk/decode_frame.c @@ -127,7 +127,6 @@ TOC(decode_core) /* Update some decoder state variables */ psDec->lagPrev = sDecCtrl.pitchL[ psDec->nb_subfr - 1 ]; - psDec->nFramesDecoded++; /* Set output frame length */ *pN = L; diff --git a/silk/enc_API.c b/silk/enc_API.c index 7177d4d58b4282e552bb8ba39a88614ca51d9127..3b4d1a9b61d50278f627b50601b3898b9fb136e0 100644 --- a/silk/enc_API.c +++ b/silk/enc_API.c @@ -222,6 +222,7 @@ opus_int silk_Encode( psEnc->state_Fxx[ n ].sCmn.LBRR_flags[ i ] = 0; } } + psEnc->state_Fxx[ n ].sCmn.inDTX = psEnc->state_Fxx[ n ].sCmn.useDTX; } silk_assert( encControl->nChannelsInternal == 1 || psEnc->state_Fxx[ 0 ].sCmn.fs_kHz == psEnc->state_Fxx[ 1 ].sCmn.fs_kHz ); @@ -435,10 +436,12 @@ opus_int silk_Encode( if( ( ret = silk_encode_frame_Fxx( &psEnc->state_Fxx[ n ], nBytesOut, psRangeEnc, condCoding ) ) != 0 ) { silk_assert( 0 ); } - psEnc->state_Fxx[ n ].sCmn.nFramesEncoded++; + } else { + psEnc->state_Fxx[ n ].sCmn.VAD_flags[ psEnc->state_Fxx[ n ].sCmn.nFramesEncoded ] = 0; } psEnc->state_Fxx[ n ].sCmn.controlled_since_last_payload = 0; psEnc->state_Fxx[ n ].sCmn.inputBufIx = 0; + psEnc->state_Fxx[ n ].sCmn.nFramesEncoded++; } psEnc->prev_decode_only_middle = psEnc->sStereo.mid_only_flags[ psEnc->state_Fxx[ 0 ].sCmn.nFramesEncoded - 1 ]; diff --git a/silk/fixed/encode_frame_FIX.c b/silk/fixed/encode_frame_FIX.c index c3da9bcfd136179f137f5f932c7587b19f3d96c4..8899c2678f32222a62397049c98919f385594b95 100644 --- a/silk/fixed/encode_frame_FIX.c +++ b/silk/fixed/encode_frame_FIX.c @@ -69,9 +69,6 @@ TOC(VAD) /**************************************************/ /* Convert speech activity into VAD and DTX flags */ /**************************************************/ - if( psEnc->sCmn.nFramesEncoded == 0 ) { - psEnc->sCmn.inDTX = psEnc->sCmn.useDTX; - } if( psEnc->sCmn.speech_activity_Q8 < SILK_FIX_CONST( SPEECH_ACTIVITY_DTX_THRES, 8 ) ) { psEnc->sCmn.indices.signalType = TYPE_NO_VOICE_ACTIVITY; psEnc->sCmn.noSpeechCounter++;