opus.git
7 years agoImplements glitchless switching between SILK bandwidths
Jean-Marc Valin [Sat, 22 Oct 2011 03:21:34 +0000 (23:21 -0400)]
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.

7 years agoDon't use -fstack-protector-all when its not supported, add an autoconf test.
Gregory Maxwell [Fri, 21 Oct 2011 18:21:53 +0000 (14:21 -0400)]
Don't use -fstack-protector-all when its not supported, add an autoconf test.

7 years agoFix stack corruption with high rate SILK encoding added by the recent CBR changes...
Gregory Maxwell [Fri, 21 Oct 2011 17:00:21 +0000 (13:00 -0400)]
Fix stack corruption with high rate SILK encoding added by the recent CBR changes and enable -fstack-protector-all on gcc autotools builds.

7 years agoSilences some warnings in fixed-point
Jean-Marc Valin [Fri, 21 Oct 2011 15:17:18 +0000 (11:17 -0400)]
Silences some warnings in fixed-point

7 years agoSame as 44a030deedf11 but for fixed-point
Jean-Marc Valin [Fri, 21 Oct 2011 15:10:43 +0000 (11:10 -0400)]
Same as 44a030deedf11 but for fixed-point

7 years agoLimits how fast the CBR gain multiplier can increase
Jean-Marc Valin [Fri, 21 Oct 2011 15:05:50 +0000 (11:05 -0400)]
Limits how fast the CBR gain multiplier can increase

This fixes an overflow that was caused by having a huge gain

7 years agoMake the encoder output a "PLC packet" when SILK can't reach the target
Jean-Marc Valin [Fri, 21 Oct 2011 01:10:25 +0000 (21:10 -0400)]
Make the encoder output a "PLC packet" when SILK can't reach the target

7 years agoOverrides the SILK delayed bandwidth changes when CBR might bust
Jean-Marc Valin [Thu, 20 Oct 2011 18:30:30 +0000 (14:30 -0400)]
Overrides the SILK delayed bandwidth changes when CBR might bust

7 years agoImplements hard CBR for SILK
Jean-Marc Valin [Thu, 20 Oct 2011 04:39:41 +0000 (00:39 -0400)]
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.

7 years agodraft: Describing SILK delay compensation
Jean-Marc Valin [Wed, 19 Oct 2011 17:56:34 +0000 (13:56 -0400)]
draft: Describing SILK delay compensation

7 years agodraft: mode switching details (reset and redundancy cross-fade)
Jean-Marc Valin [Wed, 19 Oct 2011 16:38:53 +0000 (12:38 -0400)]
draft: mode switching details (reset and redundancy cross-fade)

7 years agoOnly free state once in kiss-fft failed init path
Jean-Marc Valin [Wed, 19 Oct 2011 11:41:27 +0000 (07:41 -0400)]
Only free state once in kiss-fft failed init path

7 years agoSimplfies the condition for resetting the CELT state
Jean-Marc Valin [Wed, 19 Oct 2011 05:56:38 +0000 (01:56 -0400)]
Simplfies the condition for resetting the CELT state

7 years agoCorrect encoder/decoder state mismatch and spurious state resetting in the encoder...
Gregory Maxwell [Wed, 19 Oct 2011 04:20:46 +0000 (00:20 -0400)]
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.

7 years agoMisc corrections to the draft
Jean-Marc Valin [Tue, 18 Oct 2011 18:42:24 +0000 (14:42 -0400)]
Misc corrections to the draft

7 years agoRemove redundant mid-only flag when side VAD flag is set.
Timothy B. Terriberry [Mon, 17 Oct 2011 21:20:55 +0000 (14:20 -0700)]
Remove redundant mid-only flag when side VAD flag is set.

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.

7 years agoDraft text for encoder mode selection
Jean-Marc Valin [Mon, 17 Oct 2011 21:55:59 +0000 (17:55 -0400)]
Draft text for encoder mode selection

7 years agoFix fixed-point build bustage from 53cc1a03.
Timothy B. Terriberry [Mon, 17 Oct 2011 20:16:23 +0000 (13:16 -0700)]
Fix fixed-point build bustage from 53cc1a03.

7 years agoFix side-channel index for VAD/LBRR flags.
Timothy B. Terriberry [Fri, 14 Oct 2011 23:14:36 +0000 (16:14 -0700)]
Fix side-channel index for VAD/LBRR flags.

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.

7 years agoFix the side frame conditional coding rules.
Timothy B. Terriberry [Fri, 14 Oct 2011 20:38:24 +0000 (13:38 -0700)]
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).

7 years agoThis should fix switching from SILK/hybrid to 60ms CELT
Jean-Marc Valin [Mon, 17 Oct 2011 18:20:43 +0000 (14:20 -0400)]
This should fix switching from SILK/hybrid to 60ms CELT

7 years agoCorrect rare mismatch between the encoder and decoder introduced by e9b53212.
Gregory Maxwell [Sun, 16 Oct 2011 08:02:02 +0000 (04:02 -0400)]
Correct rare mismatch between the encoder and decoder introduced by e9b53212.

Only one of the two required checks in the encoder were updated. Thanks to
Tim for tracking down the actual cause of the mismatch.

7 years agoAddressing some comments about the draft and cleaning up COPYING
Jean-Marc Valin [Fri, 14 Oct 2011 20:11:09 +0000 (16:11 -0400)]
Addressing some comments about the draft and cleaning up COPYING

7 years agoFixes CELT->Hybrid glitches
Jean-Marc Valin [Fri, 14 Oct 2011 17:48:17 +0000 (13:48 -0400)]
Fixes CELT->Hybrid glitches

These were caused by not prefilling the hybrid CELT state

7 years agoMore draft updates.
Timothy B. Terriberry [Fri, 14 Oct 2011 00:06:53 +0000 (17:06 -0700)]
More draft updates.

A number of fixes and additions, including
* Ensure all usage of the word "mode" refer only to the choice of
   SILK/hybrid/CELT, not audio bandwidth, frame size, channel count,
   or anything else.
  There's still a bunch of usage of "mode" in CELT to refer to
   things in the CELTMode struct (e.g., band layout, etc.).
* Document the LSF reordering for silk_NLSF2A_find_poly().
* Document the DC response check during LSF stabilization.
* Fix the excitation scaling to give decoded SILK output in the
   range -1.0...1.0.
* Rewrite the mode-switching section.
  Ironically the title of the section still implies "mode" means
   than just SILK/hybrid/CELT, but I couldn't come up with a
   better one.
* Minor clean-ups to the acknowledgements.

7 years agoImproved test for fishy redundancy length
Jean-Marc Valin [Fri, 14 Oct 2011 00:12:05 +0000 (20:12 -0400)]
Improved test for fishy redundancy length

7 years agoTim says it's safe
Jean-Marc Valin [Thu, 13 Oct 2011 20:24:11 +0000 (16:24 -0400)]
Tim says it's safe

7 years agoJM puts on a brown paper bag
Jean-Marc Valin [Thu, 13 Oct 2011 20:18:24 +0000 (16:18 -0400)]
JM puts on a brown paper bag

7 years agoDoing a best for "unprotected" switches to 2.5 ms frames
Jean-Marc Valin [Thu, 13 Oct 2011 16:39:15 +0000 (12:39 -0400)]
Doing a best for "unprotected" switches to 2.5 ms frames

7 years agoFixes a corner case that was causing silk_A2NLSF() to fail
Koen Vos [Thu, 13 Oct 2011 01:30:58 +0000 (21:30 -0400)]
Fixes a corner case that was causing silk_A2NLSF() to fail

Input that caused the problem was:
a_Q16[] = [129763 -49346 -42032 5488 28014 -1549 -2384 -8568
3154 -5104 -1605 6291 11861 -1843 -17715 7361]

7 years agoFixes a case where PLC was called on the side when no side was ever coded
Jean-Marc Valin [Wed, 12 Oct 2011 19:09:13 +0000 (15:09 -0400)]
Fixes a case where PLC was called on the side when no side was ever coded

7 years agoImproves accuracy of NLSF2A by reordering the polynomial roots
Timothy B. Terriberry [Wed, 12 Oct 2011 18:24:19 +0000 (14:24 -0400)]
Improves accuracy of NLSF2A by reordering the polynomial roots

7 years agoFixes a numerical accuracy issue in the pitch search
Jean-Marc Valin [Wed, 12 Oct 2011 16:58:52 +0000 (12:58 -0400)]
Fixes a numerical accuracy issue in the pitch search

The energy "sliding window" was using double accumulation with
float multiplications. This forces the multiplications to be
double as well.

7 years agoFixes a panned stereo regression
Jean-Marc Valin [Wed, 12 Oct 2011 01:46:55 +0000 (21:46 -0400)]
Fixes a panned stereo regression

The previous commit introduced some cross-talk for the case of SILK
with one channel muted.

7 years agoMisc bug fixes
Jean-Marc Valin [Wed, 12 Oct 2011 01:09:14 +0000 (21:09 -0400)]
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

7 years agoGets rid of a "safe" signed overflow in silk_noise_shape_quantizer_del_dec()
Jean-Marc Valin [Tue, 11 Oct 2011 22:00:23 +0000 (18:00 -0400)]
Gets rid of a "safe" signed overflow in silk_noise_shape_quantizer_del_dec()

7 years agoGets rid of a "safe" signed overflow in silk_DIV32_varQ()
Jean-Marc Valin [Tue, 11 Oct 2011 20:47:00 +0000 (16:47 -0400)]
Gets rid of a "safe" signed overflow in silk_DIV32_varQ()

7 years agoUsing a noise-based PLC for the CELT layer in hybrid mode
Jean-Marc Valin [Tue, 11 Oct 2011 19:03:38 +0000 (15:03 -0400)]
Using a noise-based PLC for the CELT layer in hybrid mode

7 years agoFixes a corruption when decoding FEC frames
Jean-Marc Valin [Tue, 11 Oct 2011 01:29:20 +0000 (21:29 -0400)]
Fixes a corruption when decoding FEC frames

7 years agoMove a number of files and functions which are only used by fixed point builds from...
Gregory Maxwell [Mon, 10 Oct 2011 17:59:30 +0000 (13:59 -0400)]
Move a number of files and functions which are only used by fixed point builds from silk/ to silk/fixed/.

I attempted to not break the msvc projects, but I can't test them.

7 years agoMisc SILK fixes:
Koen Vos [Tue, 11 Oct 2011 00:46:32 +0000 (20:46 -0400)]
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)

7 years agoCheap early detection of unstable filters
Jean-Marc Valin [Mon, 10 Oct 2011 05:57:22 +0000 (01:57 -0400)]
Cheap early detection of unstable filters

We check the DC gain before doing the full RC calculations

7 years agoMake repacketizer API use opus_int32 for lengths and add some additional error handling.
Gregory Maxwell [Mon, 10 Oct 2011 05:02:14 +0000 (01:02 -0400)]
Make repacketizer API use opus_int32 for lengths and add some additional error handling.

7 years agoMinor fixes
Koen Vos [Mon, 10 Oct 2011 00:34:41 +0000 (20:34 -0400)]
Minor fixes

- fixes the test_opus "skip" for stereo
- fixes 6 visual studio compile warnings
- adds several header files to visual studio's include folder

7 years agoMake opus_repacketizer_create handle malloc failure gracefully.
Gregory Maxwell [Sun, 9 Oct 2011 22:08:06 +0000 (18:08 -0400)]
Make opus_repacketizer_create handle malloc failure gracefully.

7 years agoCleaner way to take into account the prediction for stereo width
Koen Vos [Mon, 10 Oct 2011 00:27:13 +0000 (20:27 -0400)]
Cleaner way to take into account the prediction for stereo width

7 years agoTwo minor SILK fixes
Koen Vos [Sun, 9 Oct 2011 16:53:59 +0000 (12:53 -0400)]
Two minor SILK fixes

- 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

7 years agoAvoids unnecessary collapse of the HF stereo image in hybrid mode.
Jean-Marc Valin [Sun, 9 Oct 2011 05:05:25 +0000 (01:05 -0400)]
Avoids unnecessary collapse of the HF stereo image in hybrid mode.

SILK now reports an "effective width" that takes into account side prediction.

7 years agoFixes a stereo SILK->CELT switching bug
Jean-Marc Valin [Sun, 9 Oct 2011 04:29:26 +0000 (00:29 -0400)]
Fixes a stereo SILK->CELT switching bug

Making sure not to abruptly "de-collapse" the stereo for such transitions

7 years agoIncrease the floor on nb_compr_bytes when we enable redundancy.
Jean-Marc Valin [Sun, 9 Oct 2011 02:45:19 +0000 (22:45 -0400)]
Increase the floor on nb_compr_bytes when we enable redundancy.

7 years agoFixes a redundancy mismatch bug
Jean-Marc Valin [Sun, 9 Oct 2011 02:12:31 +0000 (22:12 -0400)]
Fixes a redundancy mismatch bug

When SILK decided not to use the desired bandwidth, the redundancy
could be encoded at the desired bandwidth rather than at the actual
bandwidth used.

7 years agoFixes a rare integer overflow in the SILK "50% of max rate" rule
Jean-Marc Valin [Sat, 8 Oct 2011 19:08:38 +0000 (15:08 -0400)]
Fixes a rare integer overflow in the SILK "50% of max rate" rule

7 years agoRedundancy fixes
Jean-Marc Valin [Sat, 8 Oct 2011 14:22:10 +0000 (10:22 -0400)]
Redundancy fixes

No longer encoding the redundancy flag for SILK since we can infer
redundancy from the length of the frame. Also, we skip encoding the
flag for hybrid mode when we know the decoder will not read it.

7 years agoNot delaying stereo->mono transitions to/from CELT
Jean-Marc Valin [Sat, 8 Oct 2011 02:50:49 +0000 (22:50 -0400)]
Not delaying stereo->mono transitions to/from CELT

Also not fuzzing the mode when it's forced

7 years agoFixes a problem with the SILK toMono when we're encoding 40/60 ms frames
Jean-Marc Valin [Sat, 8 Oct 2011 02:29:38 +0000 (22:29 -0400)]
Fixes a problem with the SILK toMono when we're encoding 40/60 ms frames

7 years agoPrevents a SILK stereo encoding-side desync
Jean-Marc Valin [Fri, 7 Oct 2011 22:08:41 +0000 (18:08 -0400)]
Prevents a SILK stereo encoding-side desync

We now make sure that side is given >0 bits when it isn't disabled.

7 years agoFixes two encoder bugs causing glitches in stereo->mono switches
Jean-Marc Valin [Fri, 7 Oct 2011 18:59:53 +0000 (14:59 -0400)]
Fixes two encoder bugs causing glitches in stereo->mono switches

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

7 years agoProper SILK delay compensation for resampling
Jean-Marc Valin [Fri, 7 Oct 2011 12:38:27 +0000 (08:38 -0400)]
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).

7 years agoMore draft updates and additions.
Timothy B. Terriberry [Thu, 6 Oct 2011 18:34:34 +0000 (11:34 -0700)]
More draft updates and additions.

This patch
 * expands sections on LPC and LTP synthesis into something that can
    actually be implemented
 * fixes an error in the excitation reconstruction
 * reverts an erroneous simplification of the subframe gain
    decoding, and
 * updates the LPC gain limiting description to reflect the new,
    more accurate approach for computing the reflection
    coefficients.
It also includes a number of general clean-ups, such as
 * correcting the description of the sample rates various pieces
    run at (e.g., we can decode directly to rates other than 48 kHz)
 * the usage of "sampling rate" vs. "sample rate"
 * capitalization consistency in TOC titles, and
 * better selection of which sections appear in the TOC.

7 years agoSILK update
Koen Vos [Thu, 6 Oct 2011 17:38:26 +0000 (13:38 -0400)]
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

7 years agoSILK stereo fix
Koen Vos [Wed, 5 Oct 2011 17:49:54 +0000 (13:49 -0400)]
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

7 years agoFix C89 incompatible mixed declarations and code introduced by 220a7d4b.
Gregory Maxwell [Wed, 5 Oct 2011 05:59:28 +0000 (01:59 -0400)]
Fix C89 incompatible mixed declarations and code introduced by 220a7d4b.

7 years agoMove useInterpolatedNLSFs assert from encode_indices.c to silk/process_NLSFs.c.
Gregory Maxwell [Tue, 4 Oct 2011 22:26:33 +0000 (18:26 -0400)]
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.

7 years agoDisabling LBRR for whever there's a change in bandwidth/channels/framesize
Jean-Marc Valin [Wed, 5 Oct 2011 00:20:13 +0000 (20:20 -0400)]
Disabling LBRR for whever there's a change in bandwidth/channels/framesize

7 years agoAdd some CUSTOM_MODES ifdefs in celt.c around code only used by
Gregory Maxwell [Tue, 4 Oct 2011 07:31:45 +0000 (03:31 -0400)]
Add some CUSTOM_MODES ifdefs in celt.c around code only used by
custom modes.

7 years agoMore assert updates, make the initialization in silk_warped_autocorrelation_FLP more...
Gregory Maxwell [Tue, 4 Oct 2011 05:20:39 +0000 (01:20 -0400)]
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.

7 years agoRenaming the CELT plc.c file to celt_lpc.c to avoid MSVC conflicts with Skype's PLC.c
Jean-Marc Valin [Tue, 4 Oct 2011 17:26:53 +0000 (13:26 -0400)]
Renaming the CELT plc.c file to celt_lpc.c to avoid MSVC conflicts with Skype's PLC.c

7 years agoFixes glithes when switching between SILK-only and hybrid
Jean-Marc Valin [Tue, 4 Oct 2011 15:59:32 +0000 (11:59 -0400)]
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.

7 years agoPrevents the SILK PLC from being called with an invalid frame size or sampling rate
Jean-Marc Valin [Tue, 4 Oct 2011 05:10:32 +0000 (01:10 -0400)]
Prevents the SILK PLC from being called with an invalid frame size or sampling rate

7 years agoAdd the noreturn attribute on the assert functions to aid static analysis, improve...
Gregory Maxwell [Tue, 4 Oct 2011 01:07:39 +0000 (21:07 -0400)]
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.

7 years agoCorrect C99 undefined behavior in silk/NSQ.c, parallel change to 1ee139bc.
Gregory Maxwell [Mon, 3 Oct 2011 18:04:32 +0000 (14:04 -0400)]
Correct C99 undefined behavior in silk/NSQ.c, parallel change to 1ee139bc.

7 years agoDelaying SILK stereo->mono transitions by two frames
Jean-Marc Valin [Mon, 3 Oct 2011 17:52:18 +0000 (13:52 -0400)]
Delaying SILK stereo->mono transitions by two frames

Gets rid of some more glitches caused by the decoder resampler

7 years agoRemove warning added by 4cc9a459.
Gregory Maxwell [Mon, 3 Oct 2011 17:29:06 +0000 (13:29 -0400)]
Remove warning added by 4cc9a459.

7 years agoEliminate redundant redundancy code.
Gregory Maxwell [Mon, 3 Oct 2011 17:07:17 +0000 (13:07 -0400)]
Eliminate redundant redundancy code.
The redundancy_bytes<0 test always fails because of the ec_tell(&dec)+29 test above.

7 years agoMerge remote-tracking branch 'greg/master'
Jean-Marc Valin [Mon, 3 Oct 2011 04:51:32 +0000 (00:51 -0400)]
Merge remote-tracking branch 'greg/master'

Conflicts:
src/opus_encoder.c

7 years agoFixes stereo->mono switching bugs (encoder)
Jean-Marc Valin [Mon, 3 Oct 2011 04:39:29 +0000 (00:39 -0400)]
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

7 years agoMake it possible to undo the effect of the private OPUS_SET_FORCE_MODE encoder ctl.
Gregory Maxwell [Mon, 3 Oct 2011 00:04:28 +0000 (20:04 -0400)]
Make it possible to undo the effect of the private OPUS_SET_FORCE_MODE encoder ctl.

7 years agoImprove opus_decode() error code consistency.
Gregory Maxwell [Sun, 2 Oct 2011 18:27:51 +0000 (14:27 -0400)]
Improve opus_decode() error code consistency.

7 years agoFix bug in OPUS_SET_BANDWIDTH_REQUEST.
Gregory Maxwell [Sun, 2 Oct 2011 07:19:15 +0000 (03:19 -0400)]
Fix bug in OPUS_SET_BANDWIDTH_REQUEST.

7 years agoFix bug in the OPUS_GET_APPLICATION_REQUEST ctl and also add a bunch of set ctl range...
Gregory Maxwell [Sun, 2 Oct 2011 00:30:16 +0000 (20:30 -0400)]
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.

7 years agoAssertion update for commit b23a6ca5
Jean-Marc Valin [Fri, 30 Sep 2011 23:50:36 +0000 (19:50 -0400)]
Assertion update for commit b23a6ca5

7 years agoAs of commit 44203907 all celt bands N>1 are even, including custom modes. In light...
Gregory Maxwell [Fri, 30 Sep 2011 21:57:27 +0000 (17:57 -0400)]
As of commit 44203907 all celt bands N>1 are even, including custom modes. In light of this, remove some pointless tests.

7 years agoFixes problems with unstable filter detection
J-M Valin (rewritten by T.B. Terriberry) [Fri, 30 Sep 2011 22:12:13 +0000 (18:12 -0400)]
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).

7 years agodon't allow the user to override the bandwidth so that it's above what Fs allows
Jean-Marc Valin [Fri, 30 Sep 2011 02:02:37 +0000 (22:02 -0400)]
don't allow the user to override the bandwidth so that it's above what Fs allows

7 years agoMake silk_assert calls work with the autotools --enable-assertions.
Gregory Maxwell [Thu, 29 Sep 2011 21:43:44 +0000 (17:43 -0400)]
Make silk_assert calls work with the autotools --enable-assertions.

7 years agoRemove an unreachable block in silk/float/pitch_analysis_core_FLP.c
Gregory Maxwell [Thu, 29 Sep 2011 20:57:56 +0000 (16:57 -0400)]
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)

7 years agoMore silk/ resampler cleanup.
Gregory Maxwell [Thu, 29 Sep 2011 20:20:38 +0000 (16:20 -0400)]
More silk/ resampler cleanup.

7 years agotest_opus had skip uninitialized for decode-only
Jean-Marc Valin [Thu, 29 Sep 2011 16:42:55 +0000 (12:42 -0400)]
test_opus had skip uninitialized for decode-only

7 years agoEliminate signed overflow in constant, minor makefile.draft updates.
Gregory Maxwell [Wed, 28 Sep 2011 21:09:23 +0000 (17:09 -0400)]
Eliminate signed overflow in constant, minor makefile.draft updates.

7 years agoMisc. silk/ cleanups: static inline things which are only used in one file.
Gregory Maxwell [Wed, 28 Sep 2011 19:44:53 +0000 (15:44 -0400)]
Misc. silk/ cleanups: static inline things which are only used in one file.

7 years agoCleans up some leaking opus_custom symbols in celt/
Gregory Maxwell [Wed, 28 Sep 2011 19:13:26 +0000 (15:13 -0400)]
Cleans up some leaking opus_custom symbols in celt/

7 years agoFixes a bug introduced while fixing the original 60-ms stereo bug
Jean-Marc Valin [Wed, 28 Sep 2011 20:24:01 +0000 (16:24 -0400)]
Fixes a bug introduced while fixing the original 60-ms stereo bug

7 years agoFixes a bug that was falsely triggering DTX for 60 ms stereo
Jean-Marc Valin [Wed, 28 Sep 2011 18:23:01 +0000 (14:23 -0400)]
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.

7 years agoMore resampler cleanups.
Gregory Maxwell [Wed, 28 Sep 2011 16:40:06 +0000 (12:40 -0400)]
More resampler cleanups.

7 years agoEliminate function pointers from the resampler.
Gregory Maxwell [Wed, 28 Sep 2011 06:26:45 +0000 (02:26 -0400)]
Eliminate function pointers from the resampler.

7 years agoHelp JM's eclipse understand that silk_NLSF_del_dec_quant returns.
Gregory Maxwell [Wed, 28 Sep 2011 03:49:08 +0000 (23:49 -0400)]
Help JM's eclipse understand that silk_NLSF_del_dec_quant returns.

7 years agoSilence the remaining silk/ GCC warnings.
Gregory Maxwell [Wed, 28 Sep 2011 03:30:18 +0000 (23:30 -0400)]
Silence the remaining silk/ GCC warnings.

7 years agoFix some GCC warings in the silk/ directory.
Gregory Maxwell [Wed, 28 Sep 2011 01:33:14 +0000 (21:33 -0400)]
Fix some GCC warings in the silk/ directory.

7 years agoAdd support for coding signs with 0 pulses.
Timothy B. Terriberry [Sat, 17 Sep 2011 19:44:19 +0000 (12:44 -0700)]
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.

7 years agoFixes a glitch on SILK frame size switching
Jean-Marc Valin [Tue, 27 Sep 2011 21:12:23 +0000 (17:12 -0400)]
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.