opus.git
10 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.

10 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/

10 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.

10 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

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

10 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).

10 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

10 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.

10 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.

10 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.

11 years agoRe-implemented renormalise_bands() based on renormalise_vector().
Jean-Marc Valin [Mon, 21 Jul 2008 03:30:29 +0000 (23:30 -0400)]
Re-implemented renormalise_bands() based on renormalise_vector().

11 years agoSimplified the folding normalisation by creating renormalise_vector().
Jean-Marc Valin [Mon, 21 Jul 2008 03:14:31 +0000 (23:14 -0400)]
Simplified the folding normalisation by creating renormalise_vector().

11 years agoRe-enabling folding/intra for transients
Jean-Marc Valin [Mon, 21 Jul 2008 00:36:54 +0000 (20:36 -0400)]
Re-enabling folding/intra for transients

11 years agoisolated the folding part of the code that's common in vq.c
Jean-Marc Valin [Thu, 17 Jul 2008 20:22:23 +0000 (16:22 -0400)]
isolated the folding part of the code that's common in vq.c

11 years agoDo not encode the short-window bit when not applicable.
Jean-Marc Valin [Fri, 11 Jul 2008 03:06:58 +0000 (23:06 -0400)]
Do not encode the short-window bit when not applicable.

11 years agocleaned up transient_analysis() and replaced the algorithm with a simpler one
Jean-Marc Valin [Sun, 6 Jul 2008 14:57:26 +0000 (10:57 -0400)]
cleaned up transient_analysis() and replaced the algorithm with a simpler one
based on the max absolute value in a range.

11 years agofixed-point: conversion of pre-echo avoidance now complete.
Jean-Marc Valin [Fri, 4 Jul 2008 20:47:28 +0000 (16:47 -0400)]
fixed-point: conversion of pre-echo avoidance now complete.

11 years agofixed-point: more work on the time window (almost done)
Jean-Marc Valin [Fri, 4 Jul 2008 00:41:06 +0000 (20:41 -0400)]
fixed-point: more work on the time window (almost done)

11 years agoMore fixed-point conversion of the time window.
Jean-Marc Valin [Sun, 29 Jun 2008 02:06:05 +0000 (12:06 +1000)]
More fixed-point conversion of the time window.

11 years agoMore fixed-point work on the time window -- including conversion of the gain
Jean-Marc Valin [Sat, 28 Jun 2008 17:46:39 +0000 (03:46 +1000)]
More fixed-point work on the time window -- including conversion of the gain
to power-of-two.

11 years agoCleaned up the pre-echo avoidance code so it works when compiled as fixed-point
Jean-Marc Valin [Thu, 26 Jun 2008 21:57:35 +0000 (07:57 +1000)]
Cleaned up the pre-echo avoidance code so it works when compiled as fixed-point
(still requires float ops though). Also, removed the per-band IDCT.

11 years agoAutomatically choosing the overlap based on the frame size.
Jean-Marc Valin [Wed, 18 Jun 2008 13:44:48 +0000 (23:44 +1000)]
Automatically choosing the overlap based on the frame size.

11 years agoshort-block MDCT
Jean-Marc Valin [Tue, 17 Jun 2008 03:28:13 +0000 (13:28 +1000)]
short-block MDCT

11 years agoImplemented two pre-echo avoidance techniques: time-domain pre-emphasis and
Jean-Marc Valin [Mon, 16 Jun 2008 04:13:05 +0000 (14:13 +1000)]
Implemented two pre-echo avoidance techniques: time-domain pre-emphasis and
per-band IDCT.

11 years agoDoing the cwrs split in dimensions should save a few bits.
Jean-Marc Valin [Wed, 11 Jun 2008 08:05:57 +0000 (18:05 +1000)]
Doing the cwrs split in dimensions should save a few bits.

11 years agoTurns out maxK and maxM were also inverted in fits_in64()
Jean-Marc Valin [Tue, 10 Jun 2008 13:46:12 +0000 (23:46 +1000)]
Turns out maxK and maxM were also inverted in fits_in64()

11 years agofixed a cwrs bug in fits_in32()
Jean-Marc Valin [Tue, 10 Jun 2008 10:57:52 +0000 (20:57 +1000)]
fixed a cwrs bug in fits_in32()

11 years agoImplemented split-cwrs for very large codebooks (>64 bits), but still getting
Jean-Marc Valin [Tue, 10 Jun 2008 07:23:03 +0000 (17:23 +1000)]
Implemented split-cwrs for very large codebooks (>64 bits), but still getting
a few decoding errors.

11 years agoImplemented a cleaner way to detect whether CWRS codebooks fit in 32 or 64 bits
Jean-Marc Valin [Tue, 10 Jun 2008 06:25:45 +0000 (16:25 +1000)]
Implemented a cleaner way to detect whether CWRS codebooks fit in 32 or 64 bits

11 years agoSuggesting .oga as extension for Ogg files
Jean-Marc Valin [Mon, 9 Jun 2008 05:40:34 +0000 (15:40 +1000)]
Suggesting .oga as extension for Ogg files

11 years agoUse EXPORT macro in a way compatible with win32
Peter Kirk [Fri, 6 Jun 2008 12:38:38 +0000 (14:38 +0200)]
Use EXPORT macro in a way compatible with win32

11 years agoAllowing frames up to 512 samples
Jean-Marc Valin [Fri, 6 Jun 2008 07:04:07 +0000 (17:04 +1000)]
Allowing frames up to 512 samples

11 years agoInfrastructure work for a psy model
Jean-Marc Valin [Sun, 1 Jun 2008 13:19:16 +0000 (23:19 +1000)]
Infrastructure work for a psy model

11 years agoAdjusted stereo bit allocation to be higher than mono for the same alloc line
Jean-Marc Valin [Fri, 30 May 2008 06:07:06 +0000 (16:07 +1000)]
Adjusted stereo bit allocation to be higher than mono for the same alloc line

11 years agoBrought the mdct masking function up-to-date
Jean-Marc Valin [Fri, 30 May 2008 05:48:09 +0000 (15:48 +1000)]
Brought the mdct masking function up-to-date

11 years agoMaking the Laplace test case pass again
Jean-Marc Valin [Tue, 27 May 2008 14:58:42 +0000 (00:58 +1000)]
Making the Laplace test case pass again

11 years agoPreventing encoder-decoder mismatch when energy values are too large to be
Jean-Marc Valin [Tue, 27 May 2008 12:17:13 +0000 (22:17 +1000)]
Preventing encoder-decoder mismatch when energy values are too large to be
represented by the laplace encoder (would have a probability of zero due
to finite precision)

11 years agofixed the skipping of the zeros (skip the zeros instead of the good samples!)
Jean-Marc Valin [Mon, 26 May 2008 13:46:28 +0000 (23:46 +1000)]
fixed the skipping of the zeros (skip the zeros instead of the good samples!)

11 years agoDoing mid-side stereo when not doing intensity.
Jean-Marc Valin [Fri, 23 May 2008 07:27:39 +0000 (17:27 +1000)]
Doing mid-side stereo when not doing intensity.

11 years agoImplemented intensity stereo, which required changes all over the place
Jean-Marc Valin [Fri, 23 May 2008 06:57:34 +0000 (16:57 +1000)]
Implemented intensity stereo, which required changes all over the place
to make sure that stereo coupling is done at the band level. Previously
the stereo coupling was done all at once, but there were all kinds of
interactions with the prediction and folding.

11 years agoMore stereo infrastructure
Jean-Marc Valin [Fri, 23 May 2008 04:23:22 +0000 (14:23 +1000)]
More stereo infrastructure

11 years agoinfrastructure changes for upcoming stereo improvements
Jean-Marc Valin [Fri, 23 May 2008 03:35:35 +0000 (13:35 +1000)]
infrastructure changes for upcoming stereo improvements

11 years agoPreventing some encode/decoder mismatch situations at low bit-rate. Also, some
Jean-Marc Valin [Thu, 22 May 2008 06:49:38 +0000 (16:49 +1000)]
Preventing some encode/decoder mismatch situations at low bit-rate. Also, some
simplifications to the energy encoding.

11 years agodoxygen version number
Jean-Marc Valin [Fri, 16 May 2008 03:28:58 +0000 (13:28 +1000)]
doxygen version number

11 years agoversion bump to 0.3.2
Jean-Marc Valin [Thu, 15 May 2008 11:53:36 +0000 (21:53 +1000)]
version bump to 0.3.2

11 years agoAdded calls to query the bit-stream version.
Jean-Marc Valin [Thu, 15 May 2008 11:53:27 +0000 (21:53 +1000)]
Added calls to query the bit-stream version.

11 years agoSome code for packet loss and bit error simulation
Jean-Marc Valin [Thu, 15 May 2008 10:21:27 +0000 (20:21 +1000)]
Some code for packet loss and bit error simulation

11 years agoMore bit allocation tuning
Jean-Marc Valin [Wed, 7 May 2008 06:44:29 +0000 (16:44 +1000)]
More bit allocation tuning

11 years agoImplemented rate-dependant allocation for the fine energy quantisation.
Jean-Marc Valin [Wed, 7 May 2008 03:44:39 +0000 (13:44 +1000)]
Implemented rate-dependant allocation for the fine energy quantisation.

11 years agoPacking the pitch parameters first to improve robustness to bit errors with
Jean-Marc Valin [Tue, 6 May 2008 13:21:55 +0000 (23:21 +1000)]
Packing the pitch parameters first to improve robustness to bit errors with
(hopefully) no other side effect

11 years agoSome tuning improvements, more to come
Jean-Marc Valin [Tue, 6 May 2008 08:01:17 +0000 (18:01 +1000)]
Some tuning improvements, more to come

11 years agoDisabled pulse spreading until I can show it actually helps
Jean-Marc Valin [Mon, 5 May 2008 06:05:34 +0000 (16:05 +1000)]
Disabled pulse spreading until I can show it actually helps

11 years agoSlightly less arbitrary gains for intra prediction.
Jean-Marc Valin [Mon, 5 May 2008 05:43:57 +0000 (15:43 +1000)]
Slightly less arbitrary gains for intra prediction.

11 years agoUsing only a sign for the intra prediction instead of using up to 5 bits for
Jean-Marc Valin [Mon, 5 May 2008 02:02:14 +0000 (12:02 +1000)]
Using only a sign for the intra prediction instead of using up to 5 bits for
an offset.

11 years agoFixed a bug in the PLC and added code to estimate the pitch from the synthesis
Jean-Marc Valin [Fri, 2 May 2008 00:34:07 +0000 (10:34 +1000)]
Fixed a bug in the PLC and added code to estimate the pitch from the synthesis
instead of relying on the one previously transmitted by the encoder.

11 years agoError detection in uint decoding (can no longer return an int that's out
Jean-Marc Valin [Mon, 28 Apr 2008 07:30:26 +0000 (17:30 +1000)]
Error detection in uint decoding (can no longer return an int that's out
of range.

11 years agoBetter value for prediction coef beta
Jean-Marc Valin [Mon, 28 Apr 2008 05:57:03 +0000 (15:57 +1000)]
Better value for prediction coef beta

11 years agoAdded code for simulating bit errors
Jean-Marc Valin [Mon, 28 Apr 2008 05:56:38 +0000 (15:56 +1000)]
Added code for simulating bit errors

11 years agomdct_overlap no longer needed
Jean-Marc Valin [Wed, 23 Apr 2008 08:03:46 +0000 (18:03 +1000)]
mdct_overlap no longer needed

11 years agoAdded STDIN_TUNING to make it easier to tune CELT
Jean-Marc Valin [Fri, 25 Apr 2008 22:16:12 +0000 (08:16 +1000)]
Added STDIN_TUNING to make it easier to tune CELT

11 years agobump version number
Jean-Marc Valin [Fri, 25 Apr 2008 12:54:11 +0000 (22:54 +1000)]
bump version number

11 years agoBrought the mdct test-case with the recent changes to the mdct semantic
Jean-Marc Valin [Fri, 25 Apr 2008 12:39:46 +0000 (22:39 +1000)]
Brought the mdct test-case with the recent changes to the mdct semantic