- Nov 29, 2011
-
-
Jean-Marc Valin authored
These fix corner cases discovered during the latest fuzzing tests.
-
- Oct 31, 2011
-
-
Jean-Marc Valin authored
-
- Oct 30, 2011
-
-
- Oct 29, 2011
-
-
Jean-Marc Valin authored
-
Jean-Marc Valin authored
-
-
-
Jean-Marc Valin authored
-
-
- Calling the decoder for FEC when there's no LBRR should no longer crash - There should no longer be an issue with the PLC on frame size switching
-
- Oct 28, 2011
-
-
- Oct 27, 2011
-
-
Jean-Marc Valin authored
-
- Oct 26, 2011
-
-
- Oct 25, 2011
-
-
-
Jean-Marc Valin authored
When FEC is enabled in the decoder but not included in the bit-stream we could end up applying the PLC on a non-existant side.
-
- Oct 24, 2011
-
-
Also some comment/warning fixes
-
- Oct 22, 2011
-
-
Jean-Marc Valin authored
Only encoder changes were necessary because this uses the same "redundant frames" mechanism as SILK<->CELT switching. This also fixes a regression introduced in 78291b27 that was causing the encoder to go back and forth between bandwidths when SILK wasn't ready to change.
-
- Oct 21, 2011
-
-
Gregory Maxwell authored
Fix stack corruption with high rate SILK encoding added by the recent CBR changes and enable -fstack-protector-all on gcc autotools builds.
-
Jean-Marc Valin authored
-
Jean-Marc Valin authored
-
Jean-Marc Valin authored
This fixes an overflow that was caused by having a huge gain
-
- Oct 20, 2011
-
-
Jean-Marc Valin authored
This is achieved by running the encoding process in a loop and padding when we don't reach the exact rate. It also implements VBR-with-cap, which means we no longer need to artificially decrease the SILK bandwidth when it's close to the cap.
-
- Oct 19, 2011
-
-
Gregory Maxwell authored
Correct encoder/decoder state mismatch and spurious state resetting in the encoder when side is reset. Patch from Tim which corrects a glitch during mode switching tests.
-
- Oct 18, 2011
-
-
If there is activity in a regular, side SILK frame, then it must be coded, so we don't need to send a mid-only flag.
-
- Oct 17, 2011
-
-
-
Neither the encoder nor decoder were incrementing the side-channel index for a mid-only frame. Unfortunately, they used that index to index the VAD flags and LBRR flags. This made the VAD flags for the side channel particularly useless, as you couldn't tell which frame a flag belonged to without decoding most of the packet. It also desynched the LBRR information, as look at the wrong LBRR flags to decide when it had to code a mid-only flag. If some frames were skipped in the side channel, then the last few VAD flags and LBRR flags would be garbage, but still get encoded. This patch fixes this by continuing to increment nFramesDecoded or nFramesEncoded, even when skipping a frame in the side channel. This makes the side-channel VAD and LBRR flags correspond to the correct time periods for frames greater than 20 ms. It also fixes a bug where if DTX was not used on the packet where the side channel got turned off, it would never get used again until the encoder attempted to encode something in the side channel again.
-
b24e5746 introduced changes to LastGainIndex which broke conditional coding for side frames after a mid-only frame (i.e., in a 60 ms frame where the side is coded, not coded, then coded again). These rules were a mess in general, however, because the side channel state kept a different nFramesDecoded count from the mid channel state, and had no way to tell if the prior side frame was coded. This patch attempts to rationalize them by moving the conditional coding decision up to the top level, where all this information is available. The first coded side frame after an uncoded side frame now always uses independent coding. If such a frame is also not the first side frame in an Opus frame, then it doesn't include an LTP scaling parameter (because the LTP state is well-defined).
-
- Oct 13, 2011
-
-
Input that caused the problem was: a_Q16[] = [129763 -49346 -42032 5488 28014 -1549 -2384 -8568 3154 -5104 -1605 6291 11861 -1843 -17715 7361]
-
- Oct 12, 2011
-
-
Jean-Marc Valin authored
-
-
Jean-Marc Valin authored
The energy "sliding window" was using double accumulation with float multiplications. This forces the multiplications to be double as well.
-
Jean-Marc Valin authored
The previous commit introduced some cross-talk for the case of SILK with one channel muted.
-
Jean-Marc Valin authored
- 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
-
- Oct 11, 2011
-
-
Jean-Marc Valin authored
-
Jean-Marc Valin authored
-
Gregory Maxwell authored
Move a number of files and functions which are only used by fixed point builds from silk/ to silk/fixed/. I attempted to not break the msvc projects, but I can't test them.
-
- compile warning in opus_decoder.c - decoder state reduced by ~3 kB (by merging buffers, as Tim suggested) - some minor decoder optimizations (only the PLC is non-bit exact, so should be ok)
-
- Oct 10, 2011
-
-
Jean-Marc Valin authored
We check the DC gain before doing the full RC calculations
-
-
- Oct 09, 2011
-
-
- increases the max pitch lag by 1 (the thing Tim pointed out). this brings the decoder in sync with the old one - avoids that the first stereo frame is collapsed to mono
-