Replace ec_{enc|dec}_bit_prob() with ec_{enc|dec}_bit_logp().
Subtract one from dif in the range decoder.
Add a generic CDF decoding routine.
Giving less bits to single-bin bands.
Fixed the spreading probabilities (1-x)
Re-organize spreading/folding constants.
Re-enabling post-filter on 2.5 ms frames
More cleanups to compute_allocation().
Give the bit we reserved to end skipping back when we don't use it.
Making lower sampling rates use the same allocation table
Terminate the coding of skip bits at the last dynalloc boosted band. Otherwise the bitstream allows non-sensible behavior by the encoder (dynallocing bits into a band and then skipping it). This reduces skip bit overhead by about 2-3% at moderate bitrates with the current encoder.
Making the encoder fail less often at stupidly low bit-rates
Comments, low bit-rate busting avoidance
Setting fine_priority for skipped bands
Rebalance N=1 allocations during interp_bits2pulses().
Change strategies for allocation hole prevention.
More compute_allocation() fixes.
Store the total budget of compute_allocation in BITRES units.
Don't stop force-skipping on the first manually skipped band.
Move skip coding into interp_bits2pulses().
More allocation function updates.
Tim just rewrote half of the bit allocator -- hope it works now
This fixes a bunch of bit allocation bugs
More negative bits prevention
Preventing negative bit allocation
Tuning for 2.5 ms frames
Fix 2-phase stereo in the encoder
Using overlap=shortMdctSize even for 2.5 ms frames.
Adapting the allocation trim based on the spectral tilt
Adding some hysteresis on the folding threshold frequency
Fixes a fixed-point overflow in stereo angle calculation
Completely new transient analysis algorithm
Simplifying the allocation code and making sure both channels get a bit
Take into accound the 32-bit limit in the VQ
Add API support for unconstrained VBR
Keeping the allocation of the intensity-codec bands
Making VBR slightly exceed the budget rather than fail
Fixing the most obvious problems with the VBR code
Fixes some side-information rate control issues in VBR mode
Adding a dual stereo option.
Fix totally broken bit allocation for non-mainstream modes (e.g. powers of two).
Better tuning for 5 ms frames
Increasing resolution of the alloc trim
Tuning higher bit-rate to behave a bit more like Vorbis.
Intensity stereo now in the bit-stream
Allocate remaining bits with constant SNR offset
Implementing intensity stereo.
Tuning the allocation trim_offset for shorter frames
Minor tuning to the last band
New bit allocation tuning now enabled by default
Good catch by John Ridges
Add coarse energy entropy model tuning.
Fixes several fixed-point overflows in the PLC code
Fixes a silly fixed-point scaling PLC bug
Giving up on reusing the saved overlap in the PLC
Adding float|fixed suffixes to static mode files
Increases the probability of alloc_trim==2 to reflect the latest changes
Switch iteration over channels to the do{}while(); construct in order to inform the compiler that the these loops execute at least once. (This results in more intelligent output from the clang static analysis tool and should also produce faster code on at least some architectures.)
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