Eliminate some promotions to double. A fair number of implicit promotions remain but they all involve math functions which exist only as double precision form in C89.
Make sure that we always code the sign of N=1 bands
Fixes some stereo issues where the right channel wasn't taken into account
Squashed commit of the following:
Fixed the PLC, which had been broken for a while
Fix crashes with VBR for short duration frames and very low bitrates. This may, however, cause the encoder to violate the rate target at insanely low rates.
Switch example tools to use VBR and 960 sample frames by default on the basis that if the user doesn't have any particular requirements that they probably want this.
Further simplications to compute_mdcts()
De-interleaves the MDCT input and overlap memory.
Tuning the allocation trim
Reworked the allocation trim to be absolute (in bits/sample) rather relative
Prevents a folding artefact due to "folding the folding"
Alternate tuning found using exp_tuning_knobs (disabled by default)
Tuning the folding bands.
allocation trim doesn't make sense for stereo after all
First shot at automatically adjusting the "allocation trim" for stereo.
Simplifying transient_analysis() now that we don't care about the time window
Making sure we can use up to 128 pulses.
Removing renormalise_bands()
Removing both the transient window and the mdct_weight_shift.
Turning off time-domain window pending decision on what to do with it.
Removing dead code found by LLVM's static analysis
Optimised float->int cast for Win64
Fixed fixed-point overflow for 2.5 ms frames.
Folding code moved to quant_band() to prevent duplication.
More VQ search simplifications
Removing yshift from the fixed-point VQ search
More simplifications to the VQ search
VQ search no longer needs to put more than one pulse at a time
tweaks to the split delta for transients
Transient detection fix for the case where a transient occurs during the overlap
Tuning the bias for the L1 tf metric
Unb0rked the VBR code: several units issues that made VBR completely useless
Modifying the L1 metric for tf analysis by merging together all frequencies.
Making it possible to have two transients in a row for longer frames
Adding a high-pass filter in front of the transient analysis code
No longer filling the stereo side with noise.
Taking into account TF decisions for VBR
New TF decision code based on L1-norm. Needs more work.
Don't take into account silence for the coarse energy means
Remove lower bound on bit-rate for tf signalling
Dynamic allocation before VBR
Retrained coarse energy mean and beta coefficients
Making the allocation slightly less insane at very high rate
Using high-band noise less aggressively
Allowing to change the allocation dynamically.
Updates tandem-test for more robust error reporting and additional frame sizes and sample rates.
Fixes a ibudget bust and a divide-by-zero at very low bit-rate
Fixes a fixed-point overflow on 16-bit architectures
Adds a simple dynamic allocation scheme
Preventing bands from being coded at a rate below (for now) 3/8 bit/sample
Include tuning from exp_vorbis_tuning (disabled for now)
Fixes a minor folding bug for N=2 bands in stereo
Add an extra safety bit in intra_decision()
Fixes rare overflow in intra_decision()
Fixes fixed-point overflow in stereo_merge()
Fixes a fixed-point overflow in haar1()
Speed up the bit allocator interpolation
Copy lowband when needed instead of undoing the transforms
Allowing a max of 8 bits to qtheta
More quant_band() reorganisation.
Restructuring in quant_band()
Fixing tests on machines with no __builtin_clz()
Separates stereo_band_mix() into the intensity and MS stereo cases
Added stereo_merge(), which does the renormalisation too
MacOS X typedef fix
Moves the bit-side gain application to the quantizer
Using 6 steps in allocation interpolation
Simplifies vector renormalisation (and using it less)
Fix a minor, but bitstream-affecting bug
Fixes a divide-by-zero in narrowband mode with small frame size
Simplifies convoluted raw bits calls.
Don't allow transients for 2.5 ms frames.
Fixes an index bug in dump_modes
More sharing across different static modes
static modes simplifications for std mode
minor tuning in the mid-high rates
Raw bit init for for architectures with chars larger than 8 bits
Smoothing out some curves
Tuning in the 24 kb/s area
Tuning at very low bit-rate (around 14 kb/s)
Making the allocation matrix a bit smoother
Converting allocation table to 1/32 bit/sample resolution.
Complexity setting now controls two-pass coarse energy quantization
Ignoring lower bands in folding_decision()
Complexity setting now does something again
Minor simplification to interp_bits2pulses()
New implementation of folding_decision()
Fixes some MSVC warnings
Fine energy allocation cleanup
More fine energy tuning, compensation for N=2
New fine energy allocation tuning.
CELT no longer prints to stderr (unless assertions are enabled)
Simplifies the implementation of RESET by placing all the data that needs