opus.git
7 years agoMoving the dash header inline to appease the apple gcc.
Gregory Maxwell [Fri, 28 Oct 2011 16:10:14 +0000 (12:10 -0400)]
Moving the dash header inline to appease the apple gcc.

7 years agoPreparing for test vectors
Jean-Marc Valin [Fri, 28 Oct 2011 16:09:00 +0000 (12:09 -0400)]
Preparing for test vectors

7 years agoFixes a bug in ec_enc_done when no range coded data was coded and adds test cases...
Gregory Maxwell [Fri, 28 Oct 2011 15:06:37 +0000 (11:06 -0400)]
Fixes a bug in ec_enc_done when no range coded data was coded and adds test cases to test_unit_entropy.

7 years agoopus_demo now returns 1 on mismatch
Jean-Marc Valin [Fri, 28 Oct 2011 15:02:40 +0000 (11:02 -0400)]
opus_demo now returns 1 on mismatch

7 years agoExtend test_unit_entropy to test some patch_initial_bits corner cases.
Gregory Maxwell [Fri, 28 Oct 2011 13:59:43 +0000 (09:59 -0400)]
Extend test_unit_entropy to test some patch_initial_bits corner cases.

7 years agoFix for ec_enc_patch_initial_bits().
Timothy B. Terriberry [Fri, 28 Oct 2011 13:25:38 +0000 (06:25 -0700)]
Fix for ec_enc_patch_initial_bits().

The test to make sure that _nbits had been encoded was checking for
 8-_nbits instead of _nbits.
This only affected cases when less than 8 bits had ever been
 encoded by the time the initial bits were patched.

7 years agoGives the Opus code direct access to (non-opaque) OpusRepacketizer
Jean-Marc Valin [Fri, 28 Oct 2011 02:25:33 +0000 (22:25 -0400)]
Gives the Opus code direct access to (non-opaque) OpusRepacketizer

This avoids potential alignment issues with allocating a char
array on the stack.

7 years agoChecking error codes internally and return OPUS_INTERNAL_ERROR on failure
Jean-Marc Valin [Fri, 28 Oct 2011 00:33:48 +0000 (20:33 -0400)]
Checking error codes internally and return OPUS_INTERNAL_ERROR on failure

7 years agoImprove test_opus_encode's coverage of some high rate cases.
Gregory Maxwell [Thu, 27 Oct 2011 22:07:40 +0000 (18:07 -0400)]
Improve test_opus_encode's coverage of some high rate cases.

7 years agoMake CBR code a bit less aggressive about low rate
Jean-Marc Valin [Thu, 27 Oct 2011 20:46:34 +0000 (16:46 -0400)]
Make CBR code a bit less aggressive about low rate

7 years agoFixes a hybrid bug when operating with a max bit-rate
Jean-Marc Valin [Thu, 27 Oct 2011 20:45:45 +0000 (16:45 -0400)]
Fixes a hybrid bug when operating with a max bit-rate

7 years agodraft: CELT encoder description for tf_analysis() and spreading_decision()
Jean-Marc Valin [Thu, 27 Oct 2011 19:34:21 +0000 (15:34 -0400)]
draft: CELT encoder description for tf_analysis() and spreading_decision()

7 years agoAllow wrap-around in silk_LPC_analysis_filter()
Jean-Marc Valin [Thu, 27 Oct 2011 17:51:21 +0000 (13:51 -0400)]
Allow wrap-around in silk_LPC_analysis_filter()

7 years agoMakes OPUS_SET_VOICE_RATIO private
Jean-Marc Valin [Thu, 27 Oct 2011 17:43:43 +0000 (13:43 -0400)]
Makes OPUS_SET_VOICE_RATIO private

Let's put it back in if/when we have a clearer view of voice/music detection

7 years agoMaking sure DTX for voice still works at high bit-rate
Jean-Marc Valin [Thu, 27 Oct 2011 17:39:12 +0000 (13:39 -0400)]
Making sure DTX for voice still works at high bit-rate

7 years agoAdd a test for MAX_BANDWIDTH to test_opus_api.
Gregory Maxwell [Thu, 27 Oct 2011 12:24:52 +0000 (08:24 -0400)]
Add a test for MAX_BANDWIDTH to test_opus_api.

7 years agoTest cleanups and renaming.
Gregory Maxwell [Thu, 27 Oct 2011 03:55:33 +0000 (23:55 -0400)]
Test cleanups and renaming.

Build tests in the tests/ directory instead of top, cleanup, rename,
and eliminate recursive make for the celt/ unit tests.

7 years agoConvert tabs to spaces in the opus and celt code.
Ralph Giles [Thu, 27 Oct 2011 03:24:49 +0000 (20:24 -0700)]
Convert tabs to spaces in the opus and celt code.

Also reformat some, but by no means all, of the opus
code for line length and three-character indents.

7 years agoMoves the main headers from src/ to include/
Jean-Marc Valin [Thu, 27 Oct 2011 01:36:57 +0000 (21:36 -0400)]
Moves the main headers from src/ to include/

7 years agoRemoves tests/.dirstamp
Jean-Marc Valin [Thu, 27 Oct 2011 01:01:54 +0000 (21:01 -0400)]
Removes tests/.dirstamp

7 years agoRename test_repacketizer to repacketizer_demo.
Gregory Maxwell [Thu, 27 Oct 2011 00:05:56 +0000 (20:05 -0400)]
Rename test_repacketizer to repacketizer_demo.

7 years agoRenames test_opus to opus_demo and adds the test_opus_api, test_opus_encode, test_opu...
Gregory Maxwell [Wed, 26 Oct 2011 23:56:00 +0000 (19:56 -0400)]
Renames test_opus to opus_demo and adds the test_opus_api, test_opus_encode, test_opus_decode test programs.

7 years agodraft: Update to normative/non-normative switching
Jean-Marc Valin [Wed, 26 Oct 2011 19:47:53 +0000 (15:47 -0400)]
draft: Update to normative/non-normative switching

Making SILK bandwidth changes non-normative when there's no redundancy

7 years agodraft: Moves the high-pass to the Opus encoder to reflect the source code
Jean-Marc Valin [Wed, 26 Oct 2011 15:55:07 +0000 (11:55 -0400)]
draft: Moves the high-pass to the Opus encoder to reflect the source code

7 years agoFixes another minor bug introduced in 43a0de4af15
Koen Vos [Wed, 26 Oct 2011 12:03:31 +0000 (08:03 -0400)]
Fixes another minor bug introduced in 43a0de4af15

7 years agoAdds draft section on "Control Parameters"
Jean-Marc Valin [Wed, 26 Oct 2011 05:23:36 +0000 (01:23 -0400)]
Adds draft section on "Control Parameters"

7 years agoAdjusts the bandwidth thresholds depending on complexity and CBR
Jean-Marc Valin [Tue, 25 Oct 2011 17:46:35 +0000 (13:46 -0400)]
Adjusts the bandwidth thresholds depending on complexity and CBR

7 years agoOops, forgot the #defines for OPUS_{SET|GET}_MAX_BANDWIDTH()
Jean-Marc Valin [Tue, 25 Oct 2011 16:10:45 +0000 (12:10 -0400)]
Oops, forgot the #defines for OPUS_{SET|GET}_MAX_BANDWIDTH()

7 years agoFixes a minor bug introduced in 43a0de4af15
Koen Vos [Tue, 25 Oct 2011 05:19:29 +0000 (01:19 -0400)]
Fixes a minor bug introduced in 43a0de4af15

7 years agoImplements OPUS_SET_MAX_BANDWIDTH()
Jean-Marc Valin [Tue, 25 Oct 2011 02:41:18 +0000 (22:41 -0400)]
Implements OPUS_SET_MAX_BANDWIDTH()

7 years agoDisable CELT when FEC is on and we're losing too many packets
Jean-Marc Valin [Tue, 25 Oct 2011 00:26:29 +0000 (20:26 -0400)]
Disable CELT when FEC is on and we're losing too many packets

7 years agoFixes a bug on FEC+stereo
Jean-Marc Valin [Tue, 25 Oct 2011 00:07:00 +0000 (20:07 -0400)]
Fixes a bug on FEC+stereo

When FEC is enabled in the decoder but not included in the bit-stream
we could end up applying the PLC on a non-existant side.

7 years agoMore draft edits and additions.
Timothy B. Terriberry [Mon, 24 Oct 2011 19:24:30 +0000 (12:24 -0700)]
More draft edits and additions.

Some clean-up from JM's prior edits, as well as
* Additional clarificatino of TOC sequence restrictions (e.g., if
   you need to decode a length, there must be enough bytes in the
   packet for it, etc.).
* Added a summary of TOC sequence restrictions.
* Added a stereo unmixing section.
* Reworked Delay Compensation section into a general Resampling
   section.
* Further cleanups of switching/transitions, including new diagrams
   for all of the normative and recommended non-normative
   transitions.

7 years agoSome SILK CBR tuning
Jean-Marc Valin [Mon, 24 Oct 2011 15:53:01 +0000 (11:53 -0400)]
Some SILK CBR tuning

7 years agoOptimization of the CBR loop
Koen Vos [Mon, 24 Oct 2011 13:10:58 +0000 (09:10 -0400)]
Optimization of the CBR loop

Also some comment/warning fixes

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.