Commit graph

39 commits

Author SHA1 Message Date
Jan Buethe
7d328f5bfa
Merge LACE/NoLACE under OSCE framework 2023-12-20 03:42:44 -05:00
Jean-Marc Valin
5c24975c3a
Rename NEURAL_PLC to ENABLE_DEEP_PLC
Signed-off-by: Jean-Marc Valin <jmvalin@amazon.com>
2023-10-15 02:54:55 -04:00
Jean-Marc Valin
d1c5b32add
Fix warning from casting between 1D and 2D arrays 2023-10-07 18:52:22 -04:00
Jean-Marc Valin
e57dfb824c
Move LPCNet PLC state to top-level decoder
So it can be used outside of the SILK PLC
2023-06-16 13:02:22 -04:00
Francis Quiers
c6f9857771
Update and re-enable SILK SSE4.1 optimisations 2022-03-07 16:24:42 -08:00
Linfeng Zhang
9bb2820d74
cosmetics,silk: correct input/output arg comments
Change-Id: I607a8b75b0711a485384d6f854cf6e2ec18b38b7

Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
2017-05-23 13:45:51 -04:00
Linfeng Zhang
cfdaf365b9
Optimize silk_NSQ_del_dec() for ARM NEON
The optimization is bit exact with C function.

This optimization speeds up SILK encoder on NEON as following.

Fixed-point:
Complexity 0-5:  0%
Complexity 6-7:  6%
Complexity 8-9: 10%
Complexity  10:  8%

Got similar results on floating-point.

Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
2017-01-30 16:00:03 -05:00
Koen Vos
0a698d6522 merge back in the LTP gain safety limiter 2016-07-19 16:11:41 -04:00
Koen Vos
f06774c640 more conservative scaling of LTP corrs; remove assert that checks for negative residual energy; discard CB entries leading to such negative energies 2016-07-19 16:11:09 -04:00
Koen Vos
07691f15d4 Clean up: alignment of comments 2016-07-17 15:05:55 -04:00
Koen Vos
90f8c5ef4d Clean up: replace tabs by spaces 2016-07-17 15:05:55 -04:00
Koen Vos
6e40eb5d75 removed prefilter
The NSQ SSE optimizations are disabled for now because they need to be updated
2016-07-17 15:05:55 -04:00
Koen Vos
8c9d41867e simplified computation of LTP coefs 2016-07-17 15:05:55 -04:00
Koen Vos
8daa4d3739 take advantage of more efficient NLSF quantization by reducing number of survivors in search
JMV: edited to be a little more conservative
2016-07-17 15:05:54 -04:00
Koen Vos
aa7e174891 NLSF VQ now uses absolute error, and prediction 2016-07-17 15:05:54 -04:00
Koen Vos
2955f68b14 NLSF decoding now uses tables for NLSF weights 2016-07-17 15:05:54 -04:00
Rhishikesh Agashe
c9c2035355 Fixes compile problems for MIPS
Brings MIPS in sync with the ARM/SSE optimizations that added "arch" parameters.

Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
2015-10-07 13:55:12 -04:00
Timothy B. Terriberry
554b349cdb There are no tabs in source code.
There is also no trailing whitespace.
2014-10-03 21:49:57 -07:00
xiangmingzhu
c95c9a048f Cisco optimization for x86 & fixed point
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>
2014-10-03 21:16:00 -04:00
Jean-Marc Valin
dce69d2b9b Store decoded SILK pulses as 16-bit vector
This saves 640 bytes on the peak stack usage.
2014-01-06 21:59:48 -05:00
Jean-Marc Valin
854e9bd499 Using the maximum frequency response of pitch taps instead of maxabs 2013-11-20 13:39:23 -05:00
Koen Vos
c63fb978be Constrains accumulated pitch gain to avoid potential instability.
Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
2013-11-20 08:32:32 -05:00
Ralph Giles
f2446c25c6 Remove trailing whitespace from the license headers. 2013-09-16 14:40:04 -07:00
Timothy B. Terriberry
80ad38370c Convert quotes in license headers to ASCII.
Since the last patch originally had them mangled (presumably by
 mailer, http server, or something else), let's just get rid of
 them.
2013-05-19 19:16:11 -07:00
Jean-Marc Valin
3af4aa7849 Uses opus_int32 for fs_API_Hz parameter in silk_decoder_set_fs 2012-04-24 17:19:39 -04:00
Jean-Marc Valin
ae00e60d35 License update using the IETF Trust flavour of the BSD on the Silk code 2012-04-20 16:31:04 -04:00
Koen Vos
54518c879a Last part of the LPC work stabilization work discussed at the last meeting
Also adds the encoder part of commit ee8adbe701 as well as a few
minor cleanups.
2012-01-31 01:51:22 -05:00
Koen Vos
bbfc9c9ee5 Improves the accuracy such that it matches a float decoder much better 2011-12-13 14:50:12 -05:00
Koen Vos
bf75c8ec4d SILK fixes following last codec WG meeting
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
2011-12-13 14:47:31 -05:00
Koen Vos
acc7a6c78b Reformatting changes with an update to the MSVC project files 2011-10-28 19:44:26 -04:00
Koen Vos
43a0de4af1 Optimization of the CBR loop
Also some comment/warning fixes
2011-10-24 09:10:58 -04:00
Jean-Marc Valin
3b2aee062d Implements glitchless switching between SILK bandwidths
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.
2011-10-21 23:21:34 -04:00
Timothy B. Terriberry
53cc1a033a Fix the side frame conditional coding rules.
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).
2011-10-17 16:03:41 -04:00
Jean-Marc Valin
b24e574627 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
2011-10-11 21:09:14 -04:00
Jean-Marc Valin
b5972388d7 Proper SILK delay compensation for resampling
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).
2011-10-07 11:46:01 -04:00
Koen Vos
8887566918 SILK update
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
2011-10-06 13:38:26 -04:00
Gregory Maxwell
59647fdb65 Misc. silk/ cleanups: static inline things which are only used in one file. 2011-09-28 16:28:18 -04:00
Gregory Maxwell
7152a9aa9a Fix some GCC warings in the silk/ directory. 2011-09-27 21:33:14 -04:00
Jean-Marc Valin
1c2f5633d1 Removed all the silk_ prefixes in source file names (not symbols) 2011-09-16 01:16:53 -07:00
Renamed from silk/silk_main.h (Browse further)