Age | Commit message (Collapse) | Author |
|
The bits we don't use won't be wasted, so it's less important to
get exactly the optimal number of bits below the cap.
|
|
The gain*2 when overshooting was too aggressive and the undershoot
case wasn't aggressive enough. This now seems to work reasonably well.
|
|
Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
|
|
|
|
Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
|
|
|
|
|
|
|
|
|
|
The NSQ SSE optimizations are disabled for now because they need to be updated
|
|
|
|
|
|
1. Only for fixed point on x86 platform (32bit and 64bit, uses SIMD
intrinsics up to SSE4.2)
2. Use "configure --enable-fixed-point --enable-intrinsics" to enable
optimization, default is disabled.
3. Official test cases are verified and passed.
Signed-off-by: Timothy B. Terriberry <tterribe@xiph.org>
|
|
Optimizing celt_pitch_xcorr()/xcorr_kernel() which also speeds up
FIRs, IIRs and auto-correlations
Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
|
|
|
|
Newer versions of MSVC are unhappy with the strategy of the build
environment redefining "inline" (even though they don't support the
actual keyword). Instead we define OPUS_INLINE to the right thing
in opus_defines.h.
This is the same approach we use for restrict.
|
|
|
|
Since the last patch originally had them mangled (presumably by
mailer, http server, or something else), let's just get rid of
them.
|
|
|
|
|
|
Also fixes a minor typo.
|
|
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
|
|
These fix corner cases discovered during the latest fuzzing tests.
|
|
|
|
|
|
|
|
|
|
Also some comment/warning fixes
|
|
changes and enable -fstack-protector-all on gcc autotools builds.
|
|
This fixes an overflow that was caused by having a huge gain
|
|
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.
|
|
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.
|
|
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).
|
|
|
|
There's still a range coder mismatch on the first frame when using FEC.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Uses a 5ms redundant CELT frame embedded into the SILK or hybrid
packet to handle the switching. It's still possible to use the
PLC-based method when no redundant packet is included.
|
|
|
|
|
|
|
|
|
|
|
|
|