opus.git
10 years agoLaplace details
Jean-Marc Valin [Tue, 6 Jan 2009 22:58:58 +0000 (17:58 -0500)]
Laplace details

10 years agoMore text in the IETF draft
Jean-Marc Valin [Tue, 23 Dec 2008 22:19:29 +0000 (17:19 -0500)]
More text in the IETF draft

10 years agoSome details on the MDCT, fixed a bunch of warnings
Jean-Marc Valin [Tue, 23 Dec 2008 19:48:27 +0000 (14:48 -0500)]
Some details on the MDCT, fixed a bunch of warnings

10 years agoTest whether the compiler supports -fvisibility=hidden
Jean-Marc Valin [Tue, 23 Dec 2008 14:53:36 +0000 (09:53 -0500)]
Test whether the compiler supports -fvisibility=hidden

10 years agoUnit tests now #include the relevant source files to prevent symbol visibility
Jean-Marc Valin [Tue, 23 Dec 2008 14:31:39 +0000 (09:31 -0500)]
Unit tests now #include the relevant source files to prevent symbol visibility
problems when building shared libraries only.

10 years agoMiscellaneous compiler warning cleanups.
Gregory Maxwell [Mon, 22 Dec 2008 23:15:42 +0000 (18:15 -0500)]
Miscellaneous compiler warning cleanups.

10 years agoIETF draft for CELT itself
Jean-Marc Valin [Mon, 22 Dec 2008 21:37:45 +0000 (16:37 -0500)]
IETF draft for CELT itself

10 years agoFix ectest to not check a case which isn't guaranteed to work, and which we don't...
Timothy B. Terriberry [Sun, 21 Dec 2008 03:12:18 +0000 (22:12 -0500)]
Fix ectest to not check a case which isn't guaranteed to work, and which we don't use.

When I removed the special case for EC_ILOG(0) in commit
 06390d082dcdfa8addb3dde337543bc0f0ebae44, it broke ec_dec_uint() with _ft=1
 (which should encode the value 0 using 0 bits).
This feature was tested by ectest.c, but not actually used by libcelt.
An assert has been added to ec_dec_uint() to ensure that we don't try to use
 this feature by accident.
ec_enc_uint() was actually correct, but support for this feature has been
 removed and the assert put in its place.

10 years agoBump version to 0.5.1
Jean-Marc Valin [Thu, 18 Dec 2008 01:00:35 +0000 (20:00 -0500)]
Bump version to 0.5.1

10 years agoEnsure that log2_frac() is _really_ an upper bound.
Timothy B. Terriberry [Sun, 14 Dec 2008 19:40:34 +0000 (14:40 -0500)]
Ensure that log2_frac() is _really_ an upper bound.

This version has actually been tested for all 32-bit inputs.

10 years agoFix log2_frac() to return an upper bound, not a lower bound.
Timothy B. Terriberry [Sun, 14 Dec 2008 06:42:37 +0000 (01:42 -0500)]
Fix log2_frac() to return an upper bound, not a lower bound.

10 years agoCompute the real maximum required bits for a split.
Timothy B. Terriberry [Sun, 14 Dec 2008 06:04:24 +0000 (01:04 -0500)]
Compute the real maximum required bits for a split.

10 years agoAdd a SET_LTP call to allow on the fly activation/deactivation of the long term
Gregory Maxwell [Sun, 14 Dec 2008 01:42:03 +0000 (20:42 -0500)]
Add a SET_LTP call to allow on the fly activation/deactivation of the long term
predictor even in high complexity mode (LTP off is more loss robust), fix the
case where turning on LTP on a running stream can cause prediction against
bogus data by delaying the usage of the LTP until enough data has been encoded.

10 years agoMinor pitch handling cleanups.
Gregory Maxwell [Sat, 13 Dec 2008 06:31:32 +0000 (01:31 -0500)]
Minor pitch handling cleanups.

10 years agoNew VQ search is now enabled by default after fixing the last remaining issues:
Jean-Marc Valin [Sat, 13 Dec 2008 01:50:56 +0000 (20:50 -0500)]
New VQ search is now enabled by default after fixing the last remaining issues:
1) the case of the null vector and 2) getting rid of the 32-bit division

10 years agoFix optional synthesis bug in fixed point mode.
Gregory Maxwell [Fri, 12 Dec 2008 21:54:25 +0000 (16:54 -0500)]
Fix optional synthesis bug in fixed point mode.

10 years agoFixes two bugs in get_required_bits() for the split cwrs case.
Jean-Marc Valin [Sun, 7 Dec 2008 19:39:42 +0000 (14:39 -0500)]
Fixes two bugs in get_required_bits() for the split cwrs case.

10 years agoFix a case where the new search can leave us with no pulse left
Jean-Marc Valin [Sun, 7 Dec 2008 04:44:55 +0000 (23:44 -0500)]
Fix a case where the new search can leave us with no pulse left

10 years agoCleaned up some junk left from the last allocator change
Jean-Marc Valin [Sat, 6 Dec 2008 12:52:48 +0000 (07:52 -0500)]
Cleaned up some junk left from the last allocator change

10 years agoNew VQ search nearly fixed-point ready
Jean-Marc Valin [Fri, 5 Dec 2008 05:28:28 +0000 (00:28 -0500)]
New VQ search nearly fixed-point ready

10 years agoNew VQ search works in fixed-point even though there's still some float ops left
Jean-Marc Valin [Fri, 5 Dec 2008 04:26:32 +0000 (23:26 -0500)]
New VQ search works in fixed-point even though there's still some float ops left

10 years agoExperimental code to improve both the speed and accuracy of the VQ search
Jean-Marc Valin [Fri, 5 Dec 2008 03:52:26 +0000 (22:52 -0500)]
Experimental code to improve both the speed and accuracy of the VQ search

10 years agoalg_quant() now handles the sign of X[] separately from the quantisation
Jean-Marc Valin [Fri, 5 Dec 2008 02:21:41 +0000 (21:21 -0500)]
alg_quant() now handles the sign of X[] separately from the quantisation
process

10 years agoSupport for 96kHz.
Gregory Maxwell [Tue, 2 Dec 2008 17:06:14 +0000 (12:06 -0500)]
Support for 96kHz.

10 years agoGetting rid of more stuff left from the Speex draft
Jean-Marc Valin [Fri, 28 Nov 2008 19:43:38 +0000 (14:43 -0500)]
Getting rid of more stuff left from the Speex draft

10 years agoFixes a denormalisation issue occuring when multiple packets are lost and the
Jean-Marc Valin [Fri, 28 Nov 2008 04:34:15 +0000 (23:34 -0500)]
Fixes a denormalisation issue occuring when multiple packets are lost and the
signal decays to "not quite zero"

10 years agoCeltclient improvements: A usable usage message and correct usage of the jitter buffer.
Gregory Maxwell [Thu, 27 Nov 2008 01:16:49 +0000 (20:16 -0500)]
Celtclient improvements: A usable usage message and correct usage of the jitter buffer.

10 years agoMore outstanding issues
Jean-Marc Valin [Wed, 26 Nov 2008 21:33:58 +0000 (16:33 -0500)]
More outstanding issues

10 years agoInitial IETF draft
Jean-Marc Valin [Sat, 22 Nov 2008 13:13:16 +0000 (08:13 -0500)]
Initial IETF draft

11 years agofixed test for cases where M_PI isn't defined
Jean-Marc Valin [Tue, 11 Nov 2008 01:59:38 +0000 (20:59 -0500)]
fixed test for cases where M_PI isn't defined

11 years agoBit of cleaning up and comments
Jean-Marc Valin [Sat, 8 Nov 2008 14:14:38 +0000 (09:14 -0500)]
Bit of cleaning up and comments

11 years agoThe fold bit can now be used by the encoder and decoder (encoder still needs
Jean-Marc Valin [Sat, 8 Nov 2008 03:53:13 +0000 (22:53 -0500)]
The fold bit can now be used by the encoder and decoder (encoder still needs
EXP_PSY)

11 years agoDisabling the folding sign bit
Jean-Marc Valin [Fri, 7 Nov 2008 02:55:41 +0000 (21:55 -0500)]
Disabling the folding sign bit

11 years agoexperimental code for choosing whether to apply folding for the high bands
Jean-Marc Valin [Thu, 6 Nov 2008 02:54:37 +0000 (21:54 -0500)]
experimental code for choosing whether to apply folding for the high bands

11 years agoIn some conditions the allocation could run out of bits and attempt to allocate a...
Gregory Maxwell [Wed, 29 Oct 2008 00:28:28 +0000 (20:28 -0400)]
In some conditions the allocation could run out of bits and attempt to allocate a negative number of pulses.

11 years agoFixed use of the jitter buffer in celtclient.
Gregory Maxwell [Tue, 28 Oct 2008 17:18:10 +0000 (13:18 -0400)]
Fixed use of the jitter buffer in celtclient.

11 years agoLatest psychoacoustics work -- still highly experimental
Jean-Marc Valin [Mon, 27 Oct 2008 02:00:26 +0000 (22:00 -0400)]
Latest psychoacoustics work -- still highly experimental

11 years agoFixes some issues in the MF range coder on systems were ints are 16 bits.
Timothy B.B Terriberry [Sun, 19 Oct 2008 18:24:53 +0000 (14:24 -0400)]
Fixes some issues in the MF range coder on systems were ints are 16 bits.

11 years agore-enable support for resizable buffers in the range coder
Jean-Marc Valin [Sat, 18 Oct 2008 13:11:05 +0000 (09:11 -0400)]
re-enable support for resizable buffers in the range coder

11 years agoEncoder now writes data directly in the user buffer
Jean-Marc Valin [Sat, 18 Oct 2008 11:44:35 +0000 (07:44 -0400)]
Encoder now writes data directly in the user buffer

11 years agoMultiply-free version of the range coder. Haven't yet decided which version to
Jean-Marc Valin [Sat, 18 Oct 2008 01:27:21 +0000 (21:27 -0400)]
Multiply-free version of the range coder. Haven't yet decided which version to
use.

11 years agoTonality estimation code
Jean-Marc Valin [Wed, 15 Oct 2008 11:29:58 +0000 (07:29 -0400)]
Tonality estimation code

11 years agoREADME update
Jean-Marc Valin [Sat, 11 Oct 2008 00:14:44 +0000 (20:14 -0400)]
README update

11 years agoPreparing for 0.5.0
Jean-Marc Valin [Thu, 9 Oct 2008 11:27:10 +0000 (07:27 -0400)]
Preparing for 0.5.0

11 years agoAdd support for a complexity argument to both testcelt and celtenc.
Gregory Maxwell [Wed, 8 Oct 2008 16:45:55 +0000 (12:45 -0400)]
Add support for a complexity argument to both testcelt and celtenc.

11 years agofix STATIC_MODES for stereo (with a few fixes by JMV)
Wessel Lubberhuizen [Mon, 6 Oct 2008 08:26:13 +0000 (10:26 +0200)]
fix STATIC_MODES for stereo (with a few fixes by JMV)

11 years agocelt_encoder_ctl() is a bit more type-safe.
Jean-Marc Valin [Mon, 6 Oct 2008 02:39:13 +0000 (22:39 -0400)]
celt_encoder_ctl() is a bit more type-safe.

11 years agoFixed support for STATIC_MODES
Jean-Marc Valin [Sun, 5 Oct 2008 02:37:11 +0000 (22:37 -0400)]
Fixed support for STATIC_MODES

11 years agoRemoving the 64-bit part of the range coder.
Jean-Marc Valin [Sun, 5 Oct 2008 01:10:26 +0000 (21:10 -0400)]
Removing the 64-bit part of the range coder.

11 years agoFix stereo support; correctly deallocate bits_stereo.
Gregory Maxwell [Fri, 3 Oct 2008 21:12:44 +0000 (17:12 -0400)]
Fix stereo support; correctly deallocate bits_stereo.

11 years agolookahead no longer defined when creating a mode
Jean-Marc Valin [Fri, 3 Oct 2008 11:30:08 +0000 (07:30 -0400)]
lookahead no longer defined when creating a mode

11 years agofix stack handling
Wessel Lubberhuizen [Fri, 3 Oct 2008 11:09:29 +0000 (07:09 -0400)]
fix stack handling

11 years agocompute_alloc_cache() isn't defined when STATIC_MODES is.
Jean-Marc Valin [Fri, 3 Oct 2008 03:52:46 +0000 (23:52 -0400)]
compute_alloc_cache() isn't defined when STATIC_MODES is.

11 years agos/unsigned/celt_uint32_t/
Jean-Marc Valin [Wed, 1 Oct 2008 23:41:54 +0000 (19:41 -0400)]
s/unsigned/celt_uint32_t/

11 years agoAPI: Change celt_encode and celt_encode_float so that they take an optional synthesis...
Gregory Maxwell [Tue, 30 Sep 2008 22:20:14 +0000 (18:20 -0400)]
API: Change celt_encode and celt_encode_float so that they take an optional synthesis parameter after the PCM input. If optional_synthesis is null the encoder will be able to save some computation. If optional_synthesis is non-null if will be used to write the encoder's expectation of the decoder's output. Synthesis may alias the input pcm, so calling the encoder with the same buffer twice will achieve the old behavior. Remove 'restrict' from the CTL prototype.

11 years agoAdded celt_encoder_ctl() and CELT_SET_COMPLEXITY
Jean-Marc Valin [Tue, 30 Sep 2008 11:36:54 +0000 (07:36 -0400)]
Added celt_encoder_ctl() and CELT_SET_COMPLEXITY

11 years agoProper stack restore
Jean-Marc Valin [Mon, 29 Sep 2008 21:41:14 +0000 (17:41 -0400)]
Proper stack restore

11 years agoFix support for sample rates between 32kHz and 40kHz (lower rates are currently rejec...
Gregory Maxwell [Sun, 28 Sep 2008 08:19:19 +0000 (04:19 -0400)]
Fix support for sample rates between 32kHz and 40kHz (lower rates are currently rejected, but work okay).

11 years agoSupporting large prime factors in the FFT
Jean-Marc Valin [Sun, 28 Sep 2008 02:14:18 +0000 (22:14 -0400)]
Supporting large prime factors in the FFT

11 years agoAllow all even frame sizes, change the selection of number of short MDCTs per frame...
Gregory Maxwell [Sat, 27 Sep 2008 20:20:03 +0000 (16:20 -0400)]
Allow all even frame sizes, change the selection of number of short MDCTs per frame to be more intelligent.

11 years agoFix support for 64 sample frames.
Gregory Maxwell [Tue, 23 Sep 2008 23:28:35 +0000 (19:28 -0400)]
Fix support for 64 sample frames.

11 years agoAdd an additional 1/16th bit of padding to avoid budget busting on some inputs.
Gregory Maxwell [Tue, 23 Sep 2008 22:25:07 +0000 (18:25 -0400)]
Add an additional 1/16th bit of padding to avoid budget busting on some inputs.

11 years agoSome more tuning
Jean-Marc Valin [Mon, 22 Sep 2008 14:46:55 +0000 (10:46 -0400)]
Some more tuning

11 years agoUnb0rked a fixed-point regression caused in 7bb339d
Jean-Marc Valin [Mon, 22 Sep 2008 14:25:46 +0000 (10:25 -0400)]
Unb0rked a fixed-point regression caused in 7bb339d

11 years agoMerge branch 'cwrs_speedup'
Jean-Marc Valin [Mon, 22 Sep 2008 02:33:14 +0000 (22:33 -0400)]
Merge branch 'cwrs_speedup'

Conflicts:
libcelt/cwrs.c
tests/cwrs32-test.c

11 years agoChange cwrsi() to operate on rows of U instead of columns.
Timothy B.B Terriberry [Sun, 21 Sep 2008 19:10:58 +0000 (15:10 -0400)]
Change cwrsi() to operate on rows of U instead of columns.

It is no slower with a large number of pulses, and as much as 30% faster with
 a large number of dimensions.

11 years agoSplit the last pulse out of the alg_quant() main loop.
Jean-Marc Valin [Mon, 22 Sep 2008 01:11:39 +0000 (21:11 -0400)]
Split the last pulse out of the alg_quant() main loop.

11 years agoDividing by a constant is never good
Jean-Marc Valin [Fri, 19 Sep 2008 21:49:21 +0000 (17:49 -0400)]
Dividing by a constant is never good

11 years agoRemoved a bunch of divides from the fine energy quantisation
Jean-Marc Valin [Fri, 19 Sep 2008 21:22:44 +0000 (17:22 -0400)]
Removed a bunch of divides from the fine energy quantisation

11 years agoSome bit-allocation tuning
Jean-Marc Valin [Fri, 19 Sep 2008 20:49:26 +0000 (16:49 -0400)]
Some bit-allocation tuning

11 years agoFixing the manual stack handling code
Jean-Marc Valin [Fri, 19 Sep 2008 15:50:50 +0000 (11:50 -0400)]
Fixing the manual stack handling code

11 years agoMerge branch 'cwrs_speedup' (derf's cwrs changes)
Jean-Marc Valin [Fri, 19 Sep 2008 12:02:50 +0000 (08:02 -0400)]
Merge branch 'cwrs_speedup' (derf's cwrs changes)

Conflicts:
libcelt/cwrs.c

11 years agoChange CWRS indexing to use Pyramid VQ's magnitude ordering.
Timothy B.B Terriberry [Fri, 19 Sep 2008 06:32:42 +0000 (02:32 -0400)]
Change CWRS indexing to use Pyramid VQ's magnitude ordering.

This lets us encode and decode directly from the pulse vector without an
 intermediate transformation.
This makes old streams undecodable.
Additionally, ncwrs_u32() has been sped up for large N by using the sliding
 recurrence from Mohorko et al.
ncwrs_u64 could be sped up in a similar manner, but would require a larger
 table of multiplicative inverses (or several 32x32->64 bit multiplies).
Note that U(N,M) is now everywhere 1/2 the value it used to be.

11 years agoBetter use of the arithmetic operators
Jean-Marc Valin [Tue, 16 Sep 2008 17:29:37 +0000 (13:29 -0400)]
Better use of the arithmetic operators

11 years agoConverted everything to 32-bit CWRS (using split after that)
Jean-Marc Valin [Sat, 13 Sep 2008 01:27:35 +0000 (21:27 -0400)]
Converted everything to 32-bit CWRS (using split after that)

11 years agoGenerate slightly more accurate WMOPS figures
Jean-Marc Valin [Sat, 13 Sep 2008 00:52:27 +0000 (20:52 -0400)]
Generate slightly more accurate WMOPS figures

11 years agoOne-at-a-time allocator now uses direct feedback from ec_*_tell().
Jean-Marc Valin [Thu, 11 Sep 2008 04:20:08 +0000 (00:20 -0400)]
One-at-a-time allocator now uses direct feedback from ec_*_tell().

11 years agoSimplifications to the new allocator
Jean-Marc Valin [Wed, 10 Sep 2008 11:34:17 +0000 (07:34 -0400)]
Simplifications to the new allocator

11 years agoAt least attempting to use all the bits.
Jean-Marc Valin [Wed, 10 Sep 2008 03:21:36 +0000 (23:21 -0400)]
At least attempting to use all the bits.

11 years agoSimplified allocation by doing it one band at a time, with memory
Jean-Marc Valin [Tue, 9 Sep 2008 04:15:40 +0000 (00:15 -0400)]
Simplified allocation by doing it one band at a time, with memory

11 years agoAdded Erik de Castro Lopo's float_cast.h to use lrintf() when available. Also
Jean-Marc Valin [Mon, 1 Sep 2008 03:34:47 +0000 (23:34 -0400)]
Added Erik de Castro Lopo's float_cast.h to use lrintf() when available. Also
disables the synthesis on the encoder side when pitch is disabled.

11 years agoexp() and log() are faster than pow() and log10() for dB conversion
Jean-Marc Valin [Sat, 30 Aug 2008 18:53:44 +0000 (14:53 -0400)]
exp() and log() are faster than pow() and log10() for dB conversion

11 years agoAdded signalling bits for enabling/disabling pitch, short blocks, and folding.
Jean-Marc Valin [Sat, 30 Aug 2008 04:55:07 +0000 (00:55 -0400)]
Added signalling bits for enabling/disabling pitch, short blocks, and folding.
Also, making it possible to disable pitch for all frames.

11 years agoFixed a bunch of fixed-point overflows on insanely hot signals by changing
Jean-Marc Valin [Fri, 29 Aug 2008 03:34:24 +0000 (23:34 -0400)]
Fixed a bunch of fixed-point overflows on insanely hot signals by changing
the time-domain representation from Q14 to Q12 (Q29 to Q27 using the
standard convention).

11 years agoAdded hooks for tuning pulses and fine energy quant
Jean-Marc Valin [Thu, 14 Aug 2008 02:07:20 +0000 (22:07 -0400)]
Added hooks for tuning pulses and fine energy quant

11 years agoAdding a floating point interface to encode and decode
Gregory Maxwell [Tue, 12 Aug 2008 03:50:07 +0000 (23:50 -0400)]
Adding a floating point interface to encode and decode

11 years agoFixed fixed-point compilation error.
Gregory Maxwell [Sun, 10 Aug 2008 05:06:33 +0000 (01:06 -0400)]
Fixed fixed-point compilation error.

11 years agoSolved an encoder/decoder mismatch happening when there's no pulse in the first
Jean-Marc Valin [Thu, 7 Aug 2008 03:06:31 +0000 (23:06 -0400)]
Solved an encoder/decoder mismatch happening when there's no pulse in the first
band

11 years agoPreventing encoder/decoder mismatch when coarse energy budget is busted
Jean-Marc Valin [Wed, 6 Aug 2008 02:03:34 +0000 (22:03 -0400)]
Preventing encoder/decoder mismatch when coarse energy budget is busted

11 years agosome tuning to fine energy allocation and prevent it from going above 7 bits
Jean-Marc Valin [Wed, 6 Aug 2008 00:39:53 +0000 (20:39 -0400)]
some tuning to fine energy allocation and prevent it from going above 7 bits
(at which point, it causes problems)

11 years agoChanging the allocation algorithm to better take into account the fixed cost
Jean-Marc Valin [Mon, 4 Aug 2008 02:07:06 +0000 (22:07 -0400)]
Changing the allocation algorithm to better take into account the fixed cost
per frames for each mode.

11 years agoMerged compute_allocation_table() and compute_energy_allocation_table()
Jean-Marc Valin [Sun, 3 Aug 2008 02:25:19 +0000 (22:25 -0400)]
Merged compute_allocation_table() and compute_energy_allocation_table()

11 years agoTurns out that the worse case of the vector split is the same as that of the
Jean-Marc Valin [Sun, 3 Aug 2008 00:51:44 +0000 (20:51 -0400)]
Turns out that the worse case of the vector split is the same as that of the
pulse split. Also, added an allocation line for even higher bit-rates

11 years agofixed a bunch of bugs in the unified allocation code.
Jean-Marc Valin [Sun, 3 Aug 2008 00:14:17 +0000 (20:14 -0400)]
fixed a bunch of bugs in the unified allocation code.

11 years agoFixed two issues pointed out by Greg
Jean-Marc Valin [Sat, 2 Aug 2008 12:16:58 +0000 (08:16 -0400)]
Fixed two issues pointed out by Greg

11 years agoUnified allocation of fine energy and pulses.
Jean-Marc Valin [Sat, 2 Aug 2008 12:14:42 +0000 (08:14 -0400)]
Unified allocation of fine energy and pulses.

11 years agoCompleted the separation of coarse and fine energy quantisation
Jean-Marc Valin [Sat, 2 Aug 2008 02:26:49 +0000 (22:26 -0400)]
Completed the separation of coarse and fine energy quantisation

11 years agoSplit coarse and fine energy quantisation
Jean-Marc Valin [Fri, 1 Aug 2008 04:11:25 +0000 (00:11 -0400)]
Split coarse and fine energy quantisation

11 years agobump bit-stream version
Jean-Marc Valin [Sat, 26 Jul 2008 13:15:26 +0000 (09:15 -0400)]
bump bit-stream version

11 years agoBetter bit allocation for all frame sizes that are not equal to 256.
Jean-Marc Valin [Thu, 24 Jul 2008 12:49:34 +0000 (08:49 -0400)]
Better bit allocation for all frame sizes that are not equal to 256.