Better bit allocation for all frame sizes that are not equal to 256.
Re-implemented renormalise_bands() based on renormalise_vector().
Simplified the folding normalisation by creating renormalise_vector().
Re-enabling folding/intra for transients
isolated the folding part of the code that's common in vq.c
Do not encode the short-window bit when not applicable.
cleaned up transient_analysis() and replaced the algorithm with a simpler one
fixed-point: conversion of pre-echo avoidance now complete.
fixed-point: more work on the time window (almost done)
More fixed-point conversion of the time window.
More fixed-point work on the time window -- including conversion of the gain
Cleaned up the pre-echo avoidance code so it works when compiled as fixed-point
Automatically choosing the overlap based on the frame size.
Implemented two pre-echo avoidance techniques: time-domain pre-emphasis and
Doing the cwrs split in dimensions should save a few bits.
Turns out maxK and maxM were also inverted in fits_in64()
fixed a cwrs bug in fits_in32()
Implemented split-cwrs for very large codebooks (>64 bits), but still getting
Implemented a cleaner way to detect whether CWRS codebooks fit in 32 or 64 bits
Suggesting .oga as extension for Ogg files
Use EXPORT macro in a way compatible with win32
Allowing frames up to 512 samples
Infrastructure work for a psy model
Adjusted stereo bit allocation to be higher than mono for the same alloc line
Brought the mdct masking function up-to-date
Making the Laplace test case pass again
Preventing encoder-decoder mismatch when energy values are too large to be
fixed the skipping of the zeros (skip the zeros instead of the good samples!)
Doing mid-side stereo when not doing intensity.
Implemented intensity stereo, which required changes all over the place
More stereo infrastructure
infrastructure changes for upcoming stereo improvements
Preventing some encode/decoder mismatch situations at low bit-rate. Also, some
Added calls to query the bit-stream version.
Some code for packet loss and bit error simulation
More bit allocation tuning
Implemented rate-dependant allocation for the fine energy quantisation.
Packing the pitch parameters first to improve robustness to bit errors with
Some tuning improvements, more to come
Disabled pulse spreading until I can show it actually helps
Slightly less arbitrary gains for intra prediction.
Using only a sign for the intra prediction instead of using up to 5 bits for
Fixed a bug in the PLC and added code to estimate the pitch from the synthesis
Error detection in uint decoding (can no longer return an int that's out
Better value for prediction coef beta
Added code for simulating bit errors
mdct_overlap no longer needed
Added STDIN_TUNING to make it easier to tune CELT
Brought the mdct test-case with the recent changes to the mdct semantic
SHORTCUTS now disables the encoder's de-emphasis (i.e. can't check encoder
Optimisation: caching the divisions used in the Laplace encoder.
removed two shifts from the pitch estimation inner loop
Better indexing for find_spectral_pitch()
Reverted to the old MDCT behaviour of only doing down-scaling in the FFT.
mdct_backward now does the WOLA, so there isn't much left in compute_inv_mdcts
Moved the windowing from compute_inv_mdcts() to mdct_backward()
Separated the pre-rotate from the window+shuffling and further simplified
Further simplifications to the forward mdct
non-negative mdct input index
Moved the windowing operation from compute_mdcts() to mdct_forward() in an
Passing the mode to the intra prediction functions so the single-channel case
Disabling pitch when gain is very small.
Making stack push a tiny bit clearer to the compiler -- don't think it really
s/B/C/ in the intra stuff to have the same notation as everywhere else
Bit better indexing in intra_prediction()
Removing some unnecessary initialisations to zero.
Another bunch of do-while() loops
Further simplifications to comb2pulses() to remove all conditional branches.
Saved some memory by reducing the size of some arrays to only what's needed.
Better indexing of pre/de-emphasis in celt_{en|de}code().
Saved two copies when computing MDCTs of mono signals
more use of CELT_COPY in celt_encode(). Also fixed a stack size bug for stereo
This both reverts 3fe0db172c334b4fc3fc773cb08d96867402b532 that caused
more restricted pointers in celt.c
added a shortcut (SHORTCUT) to skip the spreading function in the pitch search
encoder pre-emphasis now in 16-bits
better indexing in exp_rotation()
better mdct_backward() indexing
optimisation: giving more hints to the compiler about the sizes in
a few minor optimisations
removed unneeded variable shifts from alg_quant()
separated the two passes from interp_bits2pulses()
optimisation: removed the shifts from the vq_index() inner loop
optimisation: better indexing/looping in vq_index()
pseudo-stack no longer checks on every function entry whether it has been
optimisation: one less conditional branch in pulse2comb()
optimisation: Removed a bunch of conditional branches from comb2pulse()
Saturation in SIG2INT16 using MIN/MAX
Removed implicit 32=>16 conversion (changed to EXTRACT16)
optimisation: Got rid of the 32-bit mul in find_spectral_pitch()
minor simplification in alg_quant()
fixed an issue (lacking parentheses) in the no-op version of BITREV
Made twiddle pointer in mdct more explicit
optimisation: Making it clear to the compiler that many of the loops in cwrs
Make use of CELT_MEMSET() in find_spectral_pitch()