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
Koen Vos
480ba70348
SILK stereo fix
...
Fixes a mono-stereo switching glitch and fixes a side prediction
bug where coding side would result in worse panned-mono behaviour
2011-10-05 13:49:54 -04:00
Gregory Maxwell
e98f1f5003
Fix C89 incompatible mixed declarations and code introduced by 220a7d4b
.
2011-10-05 01:59:28 -04:00
Gregory Maxwell
4997921118
Move useInterpolatedNLSFs assert from encode_indices.c to silk/process_NLSFs.c.
...
There were assert failures for test cases with mode switching and LBRR enabled.
(some similar problems remain)
Tim identified that the assert was falsely firing while encoding LBRR frames but
the flag doesn't matter while encoding the bitstream it only actually matters in
silk/process_NLSFs.c.
2011-10-04 20:20:51 -04:00
Jean-Marc Valin
32d5c2d6d4
Disabling LBRR for whever there's a change in bandwidth/channels/framesize
2011-10-04 20:20:13 -04:00
Gregory Maxwell
fd17eabc28
Add some CUSTOM_MODES ifdefs in celt.c around code only used by
...
custom modes.
2011-10-04 13:33:53 -04:00
Gregory Maxwell
b9f443d521
More assert updates, make the initialization in silk_warped_autocorrelation_FLP more explicit to make tools happy, and allow resetting to auto with OPUS_SET_FORCE_CHANNELS.
2011-10-04 13:33:53 -04:00
Jean-Marc Valin
2779df7ff6
Renaming the CELT plc.c file to celt_lpc.c to avoid MSVC conflicts with Skype's PLC.c
2011-10-04 13:31:54 -04:00
Jean-Marc Valin
bc2eebdf46
Fixes glithes when switching between SILK-only and hybrid
...
We now reset the CELT state when swithing to hybrid and we "drain"
the CELT MDCT overlap when switching away from hybrid.
2011-10-04 11:59:32 -04:00
Jean-Marc Valin
0c5085ad2f
Prevents the SILK PLC from being called with an invalid frame size or sampling rate
2011-10-04 01:10:32 -04:00
Gregory Maxwell
5d5875a93a
Add the noreturn attribute on the assert functions to aid static analysis, improve test_repacketizer error handling, and silence 19 clang static analysis errors with additional assertions.
2011-10-03 21:38:21 -04:00
Gregory Maxwell
4a7c9859cb
Correct C99 undefined behavior in silk/NSQ.c, parallel change to 1ee139bc
.
2011-10-03 14:08:28 -04:00
Jean-Marc Valin
1e0805d74f
Delaying SILK stereo->mono transitions by two frames
...
Gets rid of some more glitches caused by the decoder resampler
2011-10-03 13:52:18 -04:00
Gregory Maxwell
8a7543c49e
Remove warning added by 4cc9a459
.
2011-10-03 13:33:04 -04:00
Gregory Maxwell
4cc9a459e8
Eliminate redundant redundancy code.
...
The redundancy_bytes<0 test always fails because of the ec_tell(&dec)+29 test above.
2011-10-03 13:12:54 -04:00
Jean-Marc Valin
9c93763121
Merge remote-tracking branch 'greg/master'
...
Conflicts:
src/opus_encoder.c
2011-10-03 00:51:32 -04:00
Jean-Marc Valin
de3e16c858
Fixes stereo->mono switching bugs (encoder)
...
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
2011-10-03 00:39:29 -04:00
Gregory Maxwell
ed921b01bc
Make it possible to undo the effect of the private OPUS_SET_FORCE_MODE encoder ctl.
2011-10-02 20:04:28 -04:00
Gregory Maxwell
32af90ae65
Improve opus_decode() error code consistency.
2011-10-02 14:27:51 -04:00
Gregory Maxwell
8714189c64
Fix bug in OPUS_SET_BANDWIDTH_REQUEST.
2011-10-02 03:21:50 -04:00
Gregory Maxwell
220a7d4ba8
Fix bug in the OPUS_GET_APPLICATION_REQUEST ctl and also add a bunch of set ctl range checking and improve encoder/decoder error code consistency.
2011-10-01 20:35:19 -04:00
Jean-Marc Valin
55788c8c85
Assertion update for commit b23a6ca5
2011-09-30 19:50:36 -04:00
Gregory Maxwell
342d654c26
As of commit 44203907
all celt bands N>1 are even, including custom modes. In light of this, remove some pointless tests.
2011-09-30 19:00:51 -04:00
J-M Valin (rewritten by T.B. Terriberry)
b23a6ca5cf
Fixes problems with unstable filter detection
...
LPC_inverse_pred_gain_QA() was failing to detect unstable filters
because of insufficient numerical precision. Precision was increased
to Q24 for LPC coefs and the reciprocal now uses all the precision
available (variable shift right from the start).
2011-09-30 18:12:13 -04:00
Jean-Marc Valin
efe16c5d47
don't allow the user to override the bandwidth so that it's above what Fs allows
2011-09-29 22:02:37 -04:00
Gregory Maxwell
b180a3feac
Make silk_assert calls work with the autotools --enable-assertions.
2011-09-29 17:43:44 -04:00
Gregory Maxwell
e3f6ad0b0c
Remove an unreachable block in silk/float/pitch_analysis_core_FLP.c
...
(Fs_kHz is always 8/12/16 in Opus and also enforced by the assert on line 112)
2011-09-29 16:57:56 -04:00
Gregory Maxwell
8d6467c7ed
More silk/ resampler cleanup.
2011-09-29 16:20:38 -04:00
Jean-Marc Valin
ad29b2c26a
test_opus had skip uninitialized for decode-only
2011-09-29 12:42:55 -04:00
Gregory Maxwell
fc8b605c17
Eliminate signed overflow in constant, minor makefile.draft updates.
2011-09-28 17:14:42 -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
afc8d53b1b
Cleans up some leaking opus_custom symbols in celt/
2011-09-28 16:28:18 -04:00
Jean-Marc Valin
c7ab61b3c6
Fixes a bug introduced while fixing the original 60-ms stereo bug
2011-09-28 16:24:01 -04:00
Jean-Marc Valin
e4de8a9c76
Fixes a bug that was falsely triggering DTX for 60 ms stereo
...
There's still a range coder mismatch on the first frame when using FEC.
2011-09-28 14:23:01 -04:00
Gregory Maxwell
744e59ef01
More resampler cleanups.
2011-09-28 12:40:06 -04:00
Gregory Maxwell
96739ad35e
Eliminate function pointers from the resampler.
2011-09-28 02:26:45 -04:00
Gregory Maxwell
5d48dbd311
Help JM's eclipse understand that silk_NLSF_del_dec_quant returns.
2011-09-27 23:49:08 -04:00
Gregory Maxwell
9925366a2b
Silence the remaining silk/ GCC warnings.
2011-09-27 23:30:18 -04:00
Gregory Maxwell
7152a9aa9a
Fix some GCC warings in the silk/ directory.
2011-09-27 21:33:14 -04:00
Timothy B. Terriberry
748c960cf7
Add support for coding signs with 0 pulses.
...
The SILK bitstream allowed coding 0 pulses in a shell block, but a
non-zero number of LSb's, meaning some excitation coefficients
could be non-zero, but would not have a corresponding sign.
To fix this without breaking already-encoded bitstreams, this patch
adds a set of sign PDFs for the 0 pulses case.
This is occasionally more efficient than the normal encoding if
there are a large number of coefficients with positive signs,
since these cost more than 1 bit when using the > 0 pulse PDFs.
It only saves 0.33 bits per second (on average: it does better at
high rates), but that's probably enough to justify the two
redundant ways of coding things (and it's too late now to remove
the second one entirely, anyway).
This patch does not include the encoder modifications required to
check if this coding method is more efficient and switch to it.
2011-09-27 20:28:31 -04:00
Jean-Marc Valin
9826ed99c3
Fixes a glitch on SILK frame size switching
...
We no longer reset the decoder predictors when switching only the
frame size and not the sampling rate. The encoder already doesn't reset.
2011-09-27 17:12:23 -04:00
Jean-Marc Valin
9f90e57a9b
Fixes a glitch in SILK mono->stereo switching
...
For these transitions, we now start the left and right resamplers
from the same state.
2011-09-27 14:10:23 -04:00
Jean-Marc Valin
6312d9a39b
Commenting on the implementation-defined behaviour we rely on
2011-09-27 00:01:08 -04:00
Timothy B. Terriberry
828e33f304
Draft clean-ups and additions.
2011-09-26 23:58:23 -04:00
Benjamin M. Schwartz
a404d4e9d5
Update text regarding PLC and add a new section on clock drift.
...
The PLC section has been moved from under CELT to the top
level and expanded to cover both SILK and CELT. The clock drift
text provides some advice and explanation of the new GET_PITCH API.
2011-09-26 23:58:23 -04:00
Jean-Marc Valin
0da4f238e0
Avoiding more left shifts of negative values
2011-09-25 00:11:46 -04:00
Jean-Marc Valin
803ec8c6b4
Avoiding left shifts of negative values
2011-09-23 23:48:40 -04:00
Jean-Marc Valin
40b954dcf3
minor draft fixes
2011-09-23 23:29:40 -04:00
Jean-Marc Valin
d62f378170
CELT decoder figure, some more acknowledgements
2011-09-23 23:05:21 -04:00
Jean-Marc Valin
1ee139bca0
Making the left shift macros use unsigned to avoid undefined behaviour
...
Result should be bit-identical on most machines/compilers, minus the undefined
behaviour
2011-09-23 13:08:04 -04:00