- Aug 10, 2015
-
-
The bug was caused by an improper feedback of the per-frame bitrate, causing the bitrate to jump up and down from frame to frame, within a packet. The patch avoids this, and also gives a slight improvement in general for multi-frame packets, even without FEC. Signed-off-by:
Jean-Marc Valin <jmvalin@jmvalin.ca>
-
- Feb 06, 2014
-
-
The code was wrong, but did not have any impact on user-visible behaviour because all it did was change an internal-only error code. Signed-off-by:
Jean-Marc Valin <jmvalin@jmvalin.ca>
-
- Nov 18, 2013
-
-
Optimizing celt_pitch_xcorr()/xcorr_kernel() which also speeds up FIRs, IIRs and auto-correlations Signed-off-by:
Jean-Marc Valin <jmvalin@jmvalin.ca>
-
- Nov 15, 2013
-
-
Jean-Marc Valin authored
Works by turning off pitch and energy prediction in CELT, while setting first_frame_after_reset in SILK to disable pitch and LSF interpolation and reduce LPC gain.
-
- Sep 16, 2013
-
-
Ralph Giles authored
-
- May 20, 2013
-
-
Timothy B. Terriberry authored
Since the last patch originally had them mangled (presumably by mailer, http server, or something else), let's just get rid of them.
-
- May 08, 2013
-
-
Timothy B. Terriberry authored
This makes all remaining large stack allocations use the vararray macros. This continues the work of 6f2d9f50 to allow compiling with NONTHREADSAFE_PSEUDOSTACK to move the memory for large buffers off the stack for devices where it is very limited. It also does this for some additional large buffers used by the PLC in the decoder.
-
- Oct 11, 2012
-
-
- Sep 12, 2012
-
-
This allows the compiler to perform more optimization on them as it knows how the functions are being called. Signed-off-by:
Diego Elio Pettenò <flameeyes@flameeyes.eu>
-
- Apr 20, 2012
-
-
Jean-Marc Valin authored
-
- Mar 08, 2012
-
-
Jean-Marc Valin authored
-
- 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
-
- Oct 28, 2011
-
-
- 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 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 12, 2011
-
-
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 10, 2011
-
-
- 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
-
Jean-Marc Valin authored
SILK now reports an "effective width" that takes into account side prediction.
-
- Oct 07, 2011
-
-
Jean-Marc Valin authored
1) averaging the output of the left and right resampling states when switching to mono 2) averaging the the delay buffers from left and right when switching
-
Jean-Marc Valin authored
Adds SILK delay compensation that depends on encode and decode sampling rate, as well as SILK internal coding rate. This ensures that the SILK part of Opus is always in sync with the CELT part no matter what the sampling rates are. It also increases the resampling delay to 1.15 ms (was previously 0.48 ms).
-
- Oct 06, 2011
-
-
Simplifies mono/stereo switching in SILK Fixes a quantization mismatch between encoder and decoder Constrains the pitch lags in the same way in the encoder and decoder
-
- Oct 05, 2011
-
-
Jean-Marc Valin authored
-
- Oct 03, 2011
-
-
Jean-Marc Valin authored
Gets rid of some more glitches caused by the decoder resampler
-
Jean-Marc Valin authored
Delaying stereo->mono switching decisions so that SILK can do a smooth downmix. Also, wrote proper float/fixed code for the hybrid variable stereo collapse, including a smooth downmix for stereo<->mono switching
-
- Sep 28, 2011
-
-
Jean-Marc Valin authored
-
Jean-Marc Valin authored
There's still a range coder mismatch on the first frame when using FEC.
-
Gregory Maxwell authored
-
- Sep 27, 2011
-
-
Jean-Marc Valin authored
For these transitions, we now start the left and right resamplers from the same state.
-
- Sep 16, 2011
-
-
Jean-Marc Valin authored
-
Jean-Marc Valin authored
-
- Sep 07, 2011
-
-
Jean-Marc Valin authored
-
Gregory Maxwell authored
The API permits the caller to freely copy the codec state on their own, but this can't work if there are any any position dependant pointers in the codec state.
-