Commit graph

43 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
8d43b185b2
Support OPUS_SET_COMPLEXITY() on decoder side
Controls whether deep PLC is enabled
2023-10-18 17:44:00 -04:00
Jean-Marc Valin
9ed3c7c982
Rename ENABLE_NEURAL_FED to ENABLE_DRED
Signed-off-by: Jean-Marc Valin <jmvalin@amazon.com>
2023-10-15 02:55:01 -04: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
bde43ed7cf
misc fixes 2023-06-22 13:55:04 -04:00
Jean-Marc Valin
bfa01f1a1c
Update build for LPCNet merge 2023-06-21 17:33:53 -04:00
Jean-Marc Valin
5b547e0d2e
Pull DRED encoding up to Opus layer 2023-06-16 13:02:24 -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
Jean-Marc Valin
ef4f459ec3
Cleanup (no change in behaviour) 2023-06-16 13:02:21 -04:00
Jean-Marc Valin
aedab6a538
Avoid warnings when not compiling with DRED 2023-06-16 13:01:36 -04:00
Jean-Marc Valin
71d5edcffb
Directly include LPCNet state in SILK structs
Makes shallow copy of decoder possible again
2023-06-16 13:01:35 -04:00
Jean-Marc Valin
68eea61cb0
Fix DRED segfault
Properly re-initialize DRED (only) when needed
2023-06-16 13:01:25 -04:00
Jean-Marc Valin
2d98cedd0e
Should handle mixes of PLC and DRED 2023-06-16 13:01:25 -04:00
Jean-Marc Valin
54ea26241c
DRED: First version that (kinda) works
Probably still has many bugs
2023-06-16 13:01:24 -04:00
Jean-Marc Valin
c4cb071f75
DRED: Decode variable number of frames 2023-06-16 13:01:22 -04:00
Jean-Marc Valin
8623012b30
DRED integration work in progress 2023-06-16 13:01:21 -04:00
Jan Buethe
0ba6458ba1
added --enable-neural-fec option to configure 2023-06-16 13:01:18 -04:00
Jan Buethe
2df55d3583
added dred encoder to silk encoder 2023-06-16 13:01:14 -04:00
Jean-Marc Valin
d0f6df5949
WIP: Using LPCNet for PLC 2023-06-16 13:01:06 -04:00
Jean-Marc Valin
cd78f3976e
Fixes a SILK bandwidth switching regression
The bug was triggered because f982b84d started using prefill for
SILK bandwidth changes, which reinitialized the encoder state and
prevented the variable lowpass from working properly. To fix the problem,
we preserve the sampling rate and variable low-pass when prefilling.
2018-05-24 02:29:11 -04:00
Linfeng Zhang
95d4c9f960
Optimize silk_LPC_inverse_pred_gain() for ARM NEON
The optimization is bit exact with C function.

Change-Id: Ib3bdc26a5a4ebe02e7f24be85104e8e9a2a9a738

Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
2017-02-14 23:57:15 -05: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
52cfffe579 slight clean up 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
2955f68b14 NLSF decoding now uses tables for NLSF weights 2016-07-17 15:05:54 -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
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
Timothy B. Terriberry
39386e0b85 Adds Neon assembly for correlation/convolution
Optimizing celt_pitch_xcorr()/xcorr_kernel() which also speeds up
FIRs, IIRs and auto-correlations

Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
2013-11-18 13:41:17 -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
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
a51ebd6831 Accuracy improvements to help float implementations
Also clamps the gain to avoid forcing a float decoder to emulate the
state rescaling.
2011-12-14 11:41:18 -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
0dbd0ca3e6 Fixes two SILK PLC issues
- 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
2011-10-28 21:05:22 -04:00
Koen Vos
acc7a6c78b Reformatting changes with an update to the MSVC project files 2011-10-28 19:44:26 -04:00
Jean-Marc Valin
294bfec27b Implements hard CBR for SILK
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.
2011-10-20 00:39: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
Koen Vos
3195f6cdb9 Misc SILK fixes:
- 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)
2011-10-10 20:46:32 -04:00
Koen Vos
a9b864b80a Cleaner way to take into account the prediction for stereo width 2011-10-09 20:27:13 -04:00
Jean-Marc Valin
1f65994ef4 Avoids unnecessary collapse of the HF stereo image in hybrid mode.
SILK now reports an "effective width" that takes into account side prediction.
2011-10-09 01:05:25 -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
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_structs.h (Browse further)