diff options
author | Gustaf Ullberg <gustaf.ullberg@gmail.com> | 2019-12-04 11:00:56 +0100 |
---|---|---|
committer | Felicia Lim <flim@google.com> | 2019-12-04 11:48:50 -0800 |
commit | 93b373e884915e802188cec844a7dda2fa184ebc (patch) | |
tree | aca7954569776e295355a2fede94ce10403cede5 /src | |
parent | 8493bf50892be0e902a354444747e6d14f2a6a10 (diff) | |
download | libopus-93b373e884915e802188cec844a7dda2fa184ebc.tar.gz |
OPUS_GET_IN_DTX handles Silk middle channel only
Signed-off-by: Felicia Lim <flim@google.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/opus_encoder.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/src/opus_encoder.c b/src/opus_encoder.c index e98ac5b8..844b08dd 100644 --- a/src/opus_encoder.c +++ b/src/opus_encoder.c @@ -2736,11 +2736,11 @@ int opus_encoder_ctl(OpusEncoder *st, int request, ...) } if (st->silk_mode.useDTX && (st->prev_mode == MODE_SILK_ONLY || st->prev_mode == MODE_HYBRID)) { /* DTX determined by Silk. */ - int n; - void *silk_enc = (char*)st+st->silk_enc_offset; - *value = 1; - for (n=0;n<st->silk_mode.nChannelsInternal;n++) { - *value = *value && ((silk_encoder*)silk_enc)->state_Fxx[n].sCmn.noSpeechCounter >= NB_SPEECH_FRAMES_BEFORE_DTX; + silk_encoder *silk_enc = (silk_encoder*)((char*)st+st->silk_enc_offset); + *value = silk_enc->state_Fxx[0].sCmn.noSpeechCounter >= NB_SPEECH_FRAMES_BEFORE_DTX; + /* Stereo: check second channel unless only the middle channel was encoded. */ + if(*value == 1 && st->silk_mode.nChannelsInternal == 2 && silk_enc->prev_decode_only_middle == 0) { + *value = silk_enc->state_Fxx[1].sCmn.noSpeechCounter >= NB_SPEECH_FRAMES_BEFORE_DTX; } } #ifndef DISABLE_FLOAT_API @@ -2754,7 +2754,6 @@ int opus_encoder_ctl(OpusEncoder *st, int request, ...) } } break; - case CELT_GET_MODE_REQUEST: { const CELTMode ** value = va_arg(ap, const CELTMode**); |