Jean-Marc Valin [Mon, 13 Sep 2010 15:05:08 +0000 (11:05 -0400)]
Moves the bit-side gain application to the quantizer
Jean-Marc Valin [Mon, 13 Sep 2010 13:46:54 +0000 (09:46 -0400)]
Using 6 steps in allocation interpolation
Jean-Marc Valin [Mon, 13 Sep 2010 00:11:32 +0000 (20:11 -0400)]
Simplifies vector renormalisation (and using it less)
Jean-Marc Valin [Sat, 11 Sep 2010 12:57:59 +0000 (08:57 -0400)]
Fix a minor, but bitstream-affecting bug
Jean-Marc Valin [Fri, 10 Sep 2010 21:40:31 +0000 (17:40 -0400)]
Fixes a divide-by-zero in narrowband mode with small frame size
Jean-Marc Valin [Sat, 11 Sep 2010 00:20:04 +0000 (20:20 -0400)]
Simplifies convoluted raw bits calls.
Jean-Marc Valin [Mon, 6 Sep 2010 01:02:38 +0000 (21:02 -0400)]
Don't allow transients for 2.5 ms frames.
It never made sense anyway.
Jean-Marc Valin [Fri, 3 Sep 2010 19:12:35 +0000 (15:12 -0400)]
Fixes an index bug in dump_modes
Jean-Marc Valin [Fri, 3 Sep 2010 18:27:52 +0000 (14:27 -0400)]
More sharing across different static modes
Jean-Marc Valin [Fri, 3 Sep 2010 15:52:38 +0000 (11:52 -0400)]
static modes simplifications for std mode
Jean-Marc Valin [Thu, 2 Sep 2010 14:50:21 +0000 (10:50 -0400)]
minor tuning in the mid-high rates
Jean-Marc Valin [Thu, 2 Sep 2010 14:16:56 +0000 (10:16 -0400)]
Raw bit init for for architectures with chars larger than 8 bits
Jean-Marc Valin [Thu, 2 Sep 2010 02:04:53 +0000 (22:04 -0400)]
Smoothing out some curves
Jean-Marc Valin [Wed, 1 Sep 2010 20:21:38 +0000 (16:21 -0400)]
Tuning around 30 kb/s
Jean-Marc Valin [Wed, 1 Sep 2010 20:09:30 +0000 (16:09 -0400)]
Tuning in the 24 kb/s area
Jean-Marc Valin [Wed, 1 Sep 2010 19:43:06 +0000 (15:43 -0400)]
Tuning at very low bit-rate (around 14 kb/s)
Jean-Marc Valin [Wed, 1 Sep 2010 15:11:37 +0000 (11:11 -0400)]
Tuning at very low rate
Jean-Marc Valin [Wed, 1 Sep 2010 15:00:48 +0000 (11:00 -0400)]
Making the allocation matrix a bit smoother
Jean-Marc Valin [Wed, 1 Sep 2010 14:07:12 +0000 (10:07 -0400)]
Converting allocation table to 1/32 bit/sample resolution.
Jean-Marc Valin [Tue, 31 Aug 2010 21:21:52 +0000 (17:21 -0400)]
Complexity setting now controls two-pass coarse energy quantization
Jean-Marc Valin [Tue, 31 Aug 2010 21:08:45 +0000 (17:08 -0400)]
Ignoring lower bands in folding_decision()
Jean-Marc Valin [Tue, 31 Aug 2010 21:03:13 +0000 (17:03 -0400)]
Complexity setting now does something again
Jean-Marc Valin [Tue, 31 Aug 2010 20:46:40 +0000 (16:46 -0400)]
Minor simplification to interp_bits2pulses()
Jean-Marc Valin [Tue, 31 Aug 2010 18:51:58 +0000 (14:51 -0400)]
New implementation of folding_decision()
Jean-Marc Valin [Tue, 31 Aug 2010 15:56:09 +0000 (11:56 -0400)]
_alloca() for Win32
Jean-Marc Valin [Tue, 31 Aug 2010 15:52:45 +0000 (11:52 -0400)]
Fixes some MSVC warnings
Jean-Marc Valin [Tue, 31 Aug 2010 14:11:11 +0000 (10:11 -0400)]
Fine energy allocation cleanup
Jean-Marc Valin [Tue, 31 Aug 2010 10:45:32 +0000 (06:45 -0400)]
qoffset tuning
Jean-Marc Valin [Tue, 31 Aug 2010 03:35:02 +0000 (23:35 -0400)]
More fine energy tuning, compensation for N=2
Jean-Marc Valin [Tue, 31 Aug 2010 01:34:11 +0000 (21:34 -0400)]
New fine energy allocation tuning.
Based on 1/2*log2(N)-19/8, but with the 2-bit and 3-bit thresholds
shifted by 2*log2(N)/8 bit and log2(N)/8 bit, respectively.
Jean-Marc Valin [Fri, 27 Aug 2010 21:52:38 +0000 (17:52 -0400)]
CELT no longer prints to stderr (unless assertions are enabled)
Jean-Marc Valin [Fri, 27 Aug 2010 21:17:50 +0000 (17:17 -0400)]
Simplifies the implementation of RESET by placing all the data that needs
to be cleared at the end of the state structs.
Jean-Marc Valin [Fri, 27 Aug 2010 20:54:33 +0000 (16:54 -0400)]
Adds _init() functions that do not allocate the states themselves
Jean-Marc Valin [Fri, 27 Aug 2010 20:23:03 +0000 (16:23 -0400)]
Comments on encoder and decoder struct contents
Jean-Marc Valin [Fri, 27 Aug 2010 20:15:20 +0000 (16:15 -0400)]
Remove model markers
Jean-Marc Valin [Fri, 27 Aug 2010 20:10:39 +0000 (16:10 -0400)]
Remove check_mode()
Jean-Marc Valin [Fri, 27 Aug 2010 20:05:01 +0000 (16:05 -0400)]
Unb0rk fixed-point build
Jean-Marc Valin [Fri, 27 Aug 2010 20:02:30 +0000 (16:02 -0400)]
Removing check_decoder()
Jean-Marc Valin [Fri, 27 Aug 2010 20:00:01 +0000 (16:00 -0400)]
Decoder state stored in a single allocated object.
Jean-Marc Valin [Fri, 27 Aug 2010 19:15:32 +0000 (15:15 -0400)]
Decoder cleanup
Jean-Marc Valin [Fri, 27 Aug 2010 19:03:20 +0000 (15:03 -0400)]
Removing check_encoder()
Jean-Marc Valin [Fri, 27 Aug 2010 18:57:37 +0000 (14:57 -0400)]
Encoder state now stored in a single allocated object
Jean-Marc Valin [Fri, 27 Aug 2010 15:33:18 +0000 (11:33 -0400)]
Simplifies convoluted/idiotic indexing.
Jean-Marc Valin [Fri, 27 Aug 2010 05:32:40 +0000 (01:32 -0400)]
More IMDCT de-uglification
Jean-Marc Valin [Fri, 27 Aug 2010 03:58:08 +0000 (23:58 -0400)]
Removing out_mem from the encoder state.
Jean-Marc Valin [Fri, 27 Aug 2010 00:06:49 +0000 (20:06 -0400)]
Inverse MDCT no longer keeps channels interleaved.
This simplifications also fixes a few bugs in the PLC (hope it didn't create some new ones).
Jean-Marc Valin [Thu, 26 Aug 2010 22:08:44 +0000 (18:08 -0400)]
Small suckage reduction in compute_inv_mdcts(). More to come.
Jean-Marc Valin [Thu, 26 Aug 2010 12:17:49 +0000 (08:17 -0400)]
Nothing to see here
Jean-Marc Valin [Thu, 26 Aug 2010 06:04:03 +0000 (02:04 -0400)]
Disabling mdct and fft init code with static modes
Jean-Marc Valin [Thu, 26 Aug 2010 03:02:49 +0000 (23:02 -0400)]
No longer making copies of static modes
Jean-Marc Valin [Thu, 26 Aug 2010 02:41:00 +0000 (22:41 -0400)]
Fixes an off-by-one bug in the static mode's MDCT twiddles
Jean-Marc Valin [Thu, 26 Aug 2010 02:20:35 +0000 (22:20 -0400)]
Fixed an old issue where the fixed-point MDCT twiddles were stored as 32-bit values
Jean-Marc Valin [Thu, 26 Aug 2010 02:12:18 +0000 (22:12 -0400)]
coarse probability model in static modes too
Jean-Marc Valin [Thu, 26 Aug 2010 01:21:43 +0000 (21:21 -0400)]
static modes update for MDCT
Jean-Marc Valin [Wed, 25 Aug 2010 22:01:50 +0000 (18:01 -0400)]
Updating dump_modes to include the MDCT and FFT. More work needed.
Jean-Marc Valin [Wed, 25 Aug 2010 21:15:05 +0000 (17:15 -0400)]
FFT cleanup
Jean-Marc Valin [Wed, 25 Aug 2010 17:52:27 +0000 (13:52 -0400)]
Updated static modes for new pulse cache.
Fixed a few minor bugs in the process.
Jean-Marc Valin [Wed, 25 Aug 2010 17:11:09 +0000 (13:11 -0400)]
New pulse cache
Jean-Marc Valin [Mon, 23 Aug 2010 15:14:35 +0000 (11:14 -0400)]
MSE measurement details (no codec changes)
Jean-Marc Valin [Sat, 14 Aug 2010 01:20:37 +0000 (21:20 -0400)]
Making the fine energy allocation code less ugly.
No change to behaviour except that for stereo we now only force a minimum
of one energy bit per channel (previously two because of an error).
Timothy B. Terriberry [Wed, 11 Aug 2010 15:35:24 +0000 (08:35 -0700)]
Rework coarse energy coding.
This changes how the PDF used to code coarse energy.
New features:
1) The probability of 0 (p0) is now indepedent of the decay rate
of the remaining values; this additional flexibility will allow
us to model the actual distribution better, though that
improvement is not part of this patch.
2) There is a guaranteed minimum number of encodable energy
deltas.
This ensures that even the most extreme sudden volume changes
can be accurately represented.
3) The tail end of the distribution has an adjustable (through a
constant in the code) minimum probability.
This allows us to lower the worst-case bit cost of a single
delta.
4) The codebook is interleaved as 0, -1, +1, -2, +2, ... instead
of the 0, +1, -1, +2, -2, ... order used before (see 5).
5) There is no restriction that p0 be even.
Any remaining, unused part of the code is assigned to an
additional negative value (collected inter data suggests that
very large negative deltas are more common than very large
positive ones).
If the minimum probability is greater than 1, then an
additional positive delta with a smaller probablity may also
be added.
6) Once the tail of the distribution is reached, the energy delta
is computed directly, instead of continuing to loop through
the codebook.
This reduces the worst-case computational cost.
Jean-Marc Valin [Thu, 12 Aug 2010 00:38:19 +0000 (20:38 -0400)]
Fixes a stereo bug introduced in the previous commit
Jean-Marc Valin [Tue, 10 Aug 2010 17:20:21 +0000 (13:20 -0400)]
Choosing intra frame energy when it's cheaper than inter
Jean-Marc Valin [Sun, 8 Aug 2010 13:48:22 +0000 (09:48 -0400)]
Moving intra decision to quant_coarse_energy()
Jean-Marc Valin [Sun, 8 Aug 2010 02:15:02 +0000 (22:15 -0400)]
Shuffling code around -- no change to the algorithm
Jean-Marc Valin [Sun, 8 Aug 2010 01:50:01 +0000 (21:50 -0400)]
Bit-stream reordering
Coarse first, following by transient info, then spreading
Jean-Marc Valin [Sun, 8 Aug 2010 01:42:03 +0000 (21:42 -0400)]
Reorganizing the VBR code
Jean-Marc Valin [Sat, 7 Aug 2010 13:21:32 +0000 (09:21 -0400)]
Implemented variable spreading amount in the decoder
Decision not yet implemented in the encoder
Timothy B. Terriberry [Sat, 7 Aug 2010 00:05:53 +0000 (17:05 -0700)]
Minor simplification to exp_rotation().
Jean-Marc Valin [Fri, 6 Aug 2010 21:04:13 +0000 (17:04 -0400)]
comments
Jean-Marc Valin [Fri, 6 Aug 2010 20:34:58 +0000 (16:34 -0400)]
eMeans[] quantized to 8 bits
Jean-Marc Valin [Fri, 6 Aug 2010 19:56:22 +0000 (15:56 -0400)]
Using the real spectral means instead of the ones
after inter-band prediction
Jean-Marc Valin [Fri, 6 Aug 2010 18:42:43 +0000 (14:42 -0400)]
Adaptive fine offset value
Jean-Marc Valin [Fri, 6 Aug 2010 11:40:11 +0000 (07:40 -0400)]
Comments
Jean-Marc Valin [Fri, 6 Aug 2010 01:14:49 +0000 (21:14 -0400)]
More simplifications to N=2 stereo
Jean-Marc Valin [Fri, 6 Aug 2010 00:35:53 +0000 (20:35 -0400)]
More N=2 stereo simplifications
Timothy B. Terriberry [Thu, 5 Aug 2010 23:55:58 +0000 (16:55 -0700)]
Simplifications to the N=2 stereo split.
This saves almost 200 bytes of code size.
Timothy B. Terriberry [Thu, 5 Aug 2010 23:30:42 +0000 (16:30 -0700)]
Fix dump_modes when requesting multiple modes.
dump_modes() was re-using a loop index for a loop nested inside
the main one, so it would only output the struct for the first
one.
Jean-Marc Valin [Thu, 5 Aug 2010 22:15:56 +0000 (18:15 -0400)]
This patch makes Tim happy
Jean-Marc Valin [Thu, 5 Aug 2010 21:39:13 +0000 (17:39 -0400)]
Making qn code 16-bit clean while simplifying it
Jean-Marc Valin [Thu, 5 Aug 2010 20:15:46 +0000 (16:15 -0400)]
QTHETA_OFFSET* tuning
Jean-Marc Valin [Thu, 5 Aug 2010 19:42:50 +0000 (15:42 -0400)]
Simplified flags encoding
Jean-Marc Valin [Thu, 5 Aug 2010 19:22:57 +0000 (15:22 -0400)]
Removing pitch prediction code
Jean-Marc Valin [Thu, 5 Aug 2010 13:16:52 +0000 (09:16 -0400)]
Allowing fractional bits for splitting angle (theta)
Jean-Marc Valin [Thu, 5 Aug 2010 04:07:33 +0000 (00:07 -0400)]
cleanup in qb-related code
Jean-Marc Valin [Wed, 4 Aug 2010 21:17:18 +0000 (17:17 -0400)]
Fixed "forced intensity stereo"
Jean-Marc Valin [Wed, 4 Aug 2010 13:13:24 +0000 (09:13 -0400)]
More float conversion cleanup
Jean-Marc Valin [Wed, 4 Aug 2010 01:43:41 +0000 (21:43 -0400)]
Changing some constants to float
Jean-Marc Valin [Tue, 3 Aug 2010 20:49:22 +0000 (16:49 -0400)]
More FFT cleanup
Jean-Marc Valin [Tue, 3 Aug 2010 19:49:20 +0000 (15:49 -0400)]
Removing files that are no longer needed
Jean-Marc Valin [Tue, 3 Aug 2010 19:47:54 +0000 (15:47 -0400)]
DOUBLE_PRECISION and MIXED_PRECISION no longer need to be defined
Jean-Marc Valin [Mon, 2 Aug 2010 13:41:31 +0000 (09:41 -0400)]
Code simplifications for log->amplitude conversion
Jean-Marc Valin [Mon, 2 Aug 2010 13:01:28 +0000 (09:01 -0400)]
Remove useless use of "long", remove useless prototypes
Jean-Marc Valin [Thu, 29 Jul 2010 16:32:54 +0000 (18:32 +0200)]
Error measurement for stereo as well
Jean-Marc Valin [Thu, 29 Jul 2010 13:01:24 +0000 (15:01 +0200)]
Measuring the normalized error directly within the encoder
Jean-Marc Valin [Thu, 29 Jul 2010 10:51:06 +0000 (12:51 +0200)]
Separate qtheta offset for stereo
Jean-Marc Valin [Wed, 28 Jul 2010 20:12:36 +0000 (22:12 +0200)]
Fixing the qtheta dependency for the delta allocation
Removed useless code in transient_analysis()
Jean-Marc Valin [Wed, 28 Jul 2010 08:39:04 +0000 (10:39 +0200)]
Removing uselessly low bitrate allocation entries
Jean-Marc Valin [Wed, 28 Jul 2010 08:34:07 +0000 (10:34 +0200)]
Only using triangular split pdf up to 8 bits
Jean-Marc Valin [Wed, 28 Jul 2010 08:14:07 +0000 (10:14 +0200)]
updated cwrs test for previous commit