Cleaned up some junk left from the last allocator change
New VQ search nearly fixed-point ready
New VQ search works in fixed-point even though there's still some float ops left
Experimental code to improve both the speed and accuracy of the VQ search
alg_quant() now handles the sign of X[] separately from the quantisation
Support for 96kHz.
Getting rid of more stuff left from the Speex draft
Fixes a denormalisation issue occuring when multiple packets are lost and the
Celtclient improvements: A usable usage message and correct usage of the jitter buffer.
fixed test for cases where M_PI isn't defined
Bit of cleaning up and comments
The fold bit can now be used by the encoder and decoder (encoder still needs
Disabling the folding sign bit
experimental code for choosing whether to apply folding for the high bands
In some conditions the allocation could run out of bits and attempt to allocate a negative number of pulses.
Fixed use of the jitter buffer in celtclient.
Latest psychoacoustics work -- still highly experimental
Fixes some issues in the MF range coder on systems were ints are 16 bits.
re-enable support for resizable buffers in the range coder
Encoder now writes data directly in the user buffer
Multiply-free version of the range coder. Haven't yet decided which version to
Tonality estimation code
Add support for a complexity argument to both testcelt and celtenc.
fix STATIC_MODES for stereo (with a few fixes by JMV)
celt_encoder_ctl() is a bit more type-safe.
Fixed support for STATIC_MODES
Removing the 64-bit part of the range coder.
Fix stereo support; correctly deallocate bits_stereo.
lookahead no longer defined when creating a mode
fix stack handling
compute_alloc_cache() isn't defined when STATIC_MODES is.
s/unsigned/celt_uint32_t/
API: Change celt_encode and celt_encode_float so that they take an optional synthesis parameter after the PCM input. If optional_synthesis is null the encoder will be able to save some computation. If optional_synthesis is non-null if will be used to write the encoder's expectation of the decoder's output. Synthesis may alias the input pcm, so calling the encoder with the same buffer twice will achieve the old behavior. Remove 'restrict' from the CTL prototype.
Added celt_encoder_ctl() and CELT_SET_COMPLEXITY
Fix support for sample rates between 32kHz and 40kHz (lower rates are currently rejected, but work okay).
Supporting large prime factors in the FFT
Allow all even frame sizes, change the selection of number of short MDCTs per frame to be more intelligent.
Fix support for 64 sample frames.
Add an additional 1/16th bit of padding to avoid budget busting on some inputs.
Unb0rked a fixed-point regression caused in 7bb339d
Merge branch 'cwrs_speedup'
Change cwrsi() to operate on rows of U instead of columns.
Split the last pulse out of the alg_quant() main loop.
Dividing by a constant is never good
Removed a bunch of divides from the fine energy quantisation
Some bit-allocation tuning
Fixing the manual stack handling code
Merge branch 'cwrs_speedup' (derf's cwrs changes)
Change CWRS indexing to use Pyramid VQ's magnitude ordering.
Better use of the arithmetic operators
Converted everything to 32-bit CWRS (using split after that)
Generate slightly more accurate WMOPS figures
One-at-a-time allocator now uses direct feedback from ec_*_tell().
Simplifications to the new allocator
At least attempting to use all the bits.
Simplified allocation by doing it one band at a time, with memory
Added Erik de Castro Lopo's float_cast.h to use lrintf() when available. Also
exp() and log() are faster than pow() and log10() for dB conversion
Added signalling bits for enabling/disabling pitch, short blocks, and folding.
Fixed a bunch of fixed-point overflows on insanely hot signals by changing
Added hooks for tuning pulses and fine energy quant
Adding a floating point interface to encode and decode
Fixed fixed-point compilation error.
Solved an encoder/decoder mismatch happening when there's no pulse in the first
Preventing encoder/decoder mismatch when coarse energy budget is busted
some tuning to fine energy allocation and prevent it from going above 7 bits
Changing the allocation algorithm to better take into account the fixed cost
Merged compute_allocation_table() and compute_energy_allocation_table()
Turns out that the worse case of the vector split is the same as that of the
fixed a bunch of bugs in the unified allocation code.
Fixed two issues pointed out by Greg
Unified allocation of fine energy and pulses.
Completed the separation of coarse and fine energy quantisation
Split coarse and fine energy quantisation
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