- Apr 23, 2012
-
-
Jean-Marc Valin authored
-
- Apr 20, 2012
-
-
Jean-Marc Valin authored
-
- Feb 17, 2012
-
-
Jean-Marc Valin authored
- Draft updates - Updated code to produce and check test vectors - Making sure that the test vectors pass at all rates as well as for mono and stereo
-
- Jan 31, 2012
-
-
-
Jean-Marc Valin authored
Also using the same int->float conversion functions for SILK as for CELT and changed encoder implementation default to constrained VBR just to be safe when VBR gets more aggressive.
-
Also adds the encoder part of commit ee8adbe7 as well as a few minor cleanups.
-
- Jan 24, 2012
-
-
Jean-Marc Valin authored
This is not strictly necessary because the only streams that cause these already sound horrible, but it helps the testing process.
-
Jean-Marc Valin authored
-
Jean-Marc Valin authored
- Safer gain clamping for PLC - Makes opus_decoder_get_nb_samples() report an error on invalid ToC - Giving a free license to the text ofthe draft (not just the code)
-
- Dec 14, 2011
-
-
Also clamps the gain to avoid forcing a float decoder to emulate the state rescaling.
-
- Dec 13, 2011
-
-
-
decoder: - fixed incorrect scaling of filter states for the smallest quantization step sizes - NLSF2A now limits the prediction gain of LPC filters encoder: - increased damping of LTP coefficients in LTP analysis - increased white noise fraction in noise shaping LPC analysis - introduced maximum total prediction gain. Used by Burg's method to exit early if prediction gain is exceeded. This improves packet loss robustness and numerical robustness in Burg's method - Prefiltered signal is now in int32 Q10 domain, from int16 Q0 - Increased max number of iterations in CBR gain control loop from 5 to 6 - Removed useless code from LTP scaling control - Optimization: smarter LPC loop unrolling - Switched default win32 compile mode to be floating-point resampler: - made resampler have constant delay of 0.75 ms; removed delay compensation from silk code. - removed obsolete table entries (~850 Bytes) - increased downsampling filter order from 16 to 18/24/36 (depending on frequency ratio) - reoptimized filter coefficients
-
- Dec 02, 2011
-
-
C reserves identifiers of the from _[A-Z]+ and we have a number of those in the code. This patch renames the various function arguments, MACROS and preprocessor symbols to avoid the reserved form. It also removes the CHANNELS() macro altogether. This was a minor optimization for TI DSP to force a mono-only build, as were the associated local 'const' versions. Since stereo support is manditory, it wasn't worth keeping. Thanks to John Ridges for raising the issue, and Jean-Marc Valin and Greg Maxwell for reviewing the changes.
-
- 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).
-