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()
Fixed incorrect energy calculation in stereo intra prediction
optimisation: reworked intra_prediction() so that yy is computed fully only
optimisation: intra_prediction() uses a 16-bit numerator for the search
optimisation: managed to avoid dividing in the "full gain" case of alg_quant()
oops, forgot to make the gain a 16-bit var
optimisation: simplified the "full gain" case of alg_quant() to remove some
optimisation: another bunch of simplifications to the "simple case" of the
a few loop optimisations.
optimisation: merged the init loop of vq_quant().
fix minor compilation error/warning
fixed three declaration-after-statement issues
fixed a few warnings, no real change
Reworked the static modes. Now, if all static modes have the same frame size,
some index work (simplifications for dumb compilers) on IMDCT
Added a missing RESTORE_STACK in intra_prediction()
Not all compilers are equal -- making it clearer how the MDCT indexing is done
Defining IMUL32 for 32x32=>32 int multiplications and using it in the range
Simplified indexing in intra_prediction()
fixed ordering of the channels in the intra prediction.
Defining DISABLE_STEREO now optimises for the mono case
Fixed a stereo regression introduced in e28f25f0d14959d521fda0cdb8f1220995bc50e8
Fixed rsqrt testcase for float
Rework CWRS code.
Changed the rules for using the pulse spreading. It should be used less often
Revert ABS16/32 on C55 -- ended up being slower
ABS16 and ABS32 for the C55
Making the pulsesAtOnce code 16-bit safe.
Just commenting -- nothing to see.
Optimisation: got rid of about 10% of the 32-bit divisions by using ec_enc_uint
Removed a few int divisions from the intra prediction code.
fixed-point: using MULT16_16 instead of * in compute_band_energies()
Making a few functions static inline
Trying to clean up celt_ilog2() vs. EC_ILOG a bit.
making {next|prev}_cwrs* inline
optimisation: changed some for() loops to do-while() to give the compiler
Making it obvious to the compiler how to generate a dual-MAC in