Misc bug fixes
- There was a bug where the decoder resampler was not properly initialized when fs_kHz == API_fs_kHz. In that case the resampler would continue to upsample, and the output was corrupt. - The delay value in the decoder was taken from the state before it was potentially updated. This caused the decoder to apply the new dalay value one frame late - The encoder and decoder states are now updated more consistently, when the sampling rate changes (pesq liked these changes) - Properly resetting the side channel encoder and decoder for the first frame with side coding active again - Faster updating the "ratio" value in the LR_to_MS() code for large prediction values means that for certain extreme/artificial input signals the output looks better
This commit is contained in:
parent
a4885a5fd5
commit
b24e574627
15 changed files with 190 additions and 137 deletions
|
@ -802,9 +802,7 @@ int opus_decoder_ctl(OpusDecoder *st, int request, ...)
|
|||
if (st->prev_mode == MODE_CELT_ONLY)
|
||||
celt_decoder_ctl(celt_dec, OPUS_GET_PITCH(value));
|
||||
else
|
||||
*value = ((silk_decoder_state*)silk_dec)->indices.signalType == TYPE_VOICED
|
||||
? ((silk_decoder_state*)silk_dec)->lagPrev*48/((silk_decoder_state*)silk_dec)->fs_kHz
|
||||
: 0;
|
||||
*value = st->DecControl.prevPitchLag;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue