Added a mixed-precision version of the FFT with 32-bit data and 16-bit twiddles.
Created an separate kiss_twiddle_cpx type to make it possible to use
MDCT now scales down by N/2 instead of N/4. The factor two is moved to the
testcase for the MDCT and IMDCT
Increased precision for real FFT
Fixed the FFT for higher precision
Adding celt_sig_t where needed
Separating types for normalised vs. denormalised data paths
Fixed the real fft testsuite as well
Fixed stuff that got broken during the forward-backward split of the FFT
Making sure freed or corrupted modes can't be used (produce a run-time warning).
Updated the header and celtenc/celtdec tools to the new way modes are handled.
Doing intra-frame prediction backwards (and a few comments)
Development documentation (internals)
Some sampling rate cleanup (now in the mode)
Updated Doxygen comments, removed an incorrectly placed LGPL header (we own
Changed _new() to _create() in the API. Added some documentation
making sure testcases have a non-zero error code when they fail
Testcase for laplace encoder
Everything should now compile with a C89 compiler.
Another bunch of C99 array conversions (few more to go)
cwrs converted to use VARDECL/ALLOC macros
More C89 fixes, making sure to include config.h from all source files.
removed // comments and added stack_alloc.h (not used everywhere yet)
Updated the testcase for the latest issues found with libentcode
Don't flush the last buffered symbol if it is zero.
Fix flushing the final byte in the face of nothing but carry propagation.
Remove leading zeros in testcelt
Allowing to choose the frame size and rate from testcelt
Slight increase to the bit allocation in the mid-high freqs
Fixed a bunch of warnings
Merged the rate allocation atruct directly into the mode struct.
celtclient udp two-way streamer. Not enabled yet because it's still tricky
cwrs.c links to derf's article on pulse vector encoding.
Two-pass algorithm for filling the remaining bits. Still not perfect, but close
minor change to critical bands definitions (nothing to see here)
Some error reporting in the mode generation code. More cleanup
Removed all hard-coded modes
Making use of dynamically generated modes by default
Can now easily use modes generated on the fly.
Can now generate the entire mode struct
pbands code seems to work, cleaned up useless junk in mode definitions
Some work trying to generate the modes on the fly
Experimental ld51 mode (needs more work)
Fix from speex svn 14504.
Fix handling of truncated ogg packets.
Option use of SSE intrinsics (still trying to convince gcc not to move the
More VQ comments/cleanup, disabled ineffective optimisation
minor cleanup/commenting to vq search
vq search is now moving much less data around
setting nb channels automatically from the mode.
Now no divisions required in the cwrs code
Reduced useless calls to ncwrs64() by half.
moved pulse [en|de]coding to cwrs.c
Speeded up cwrsi and icwrs by at least an order of magnitude. Now using
Simplified exp_spreading by unifying both directions. Have to admit I don't
ensures that the celt header is written as little endian, and also checks
skeleton endianness fixes
doing the folding properly.
Don't try to install the testcases
set extra headers to 0, rather than 0xdeadbeef
off-by-one fix as reported by ogg.k.ogg.k and recently committed in
scales down even further in bit-rate
Introducing a (very) crude budget for the energy encoder.
Fixed stereo regression introduced in 05686a5d6e366d3a067c39f1b8567def7baa450d
minor optimisation+tuning of vq search
Updating only the L-best entries in alg_quant() that are useful.
Copying pointers is faster than copying arrays (who knew!).
Allowing the quantiser serch to put more than one pulse at one,
optional fast ncwrs64() implementation (copied from ncwrs) requiring
As extra safety, make sure not to use pitch prediction when it would make
No longer encoding the pitch index if the gain is zero anyway.
Re-ordered the parameters in the stream: [energy, pitch index, pitch gains]
Oops. Fixed spreading function for stereo
Enabling "plain folding" in case we don't even have enough bits for intra-frame
Limiting intra-frame prediction codebook to 32 entries (plus sign)
Decays corresponding to the psychoacoustic spreading function are now
minor tweak to pitch weighting function, disabled some code that doesn't
More flexible energy quantisation with nearly no penalty.
Remove multiplier-free version since we don't need it
fixed leaked ritrev table
Everything converted to use kiss-fft. Got rid of smallft and fftwrap.
Split the radix functions into forward and backward versions, removed the
Made pre-computed twiddles the same for forward and inverse FFT
Changed ordering of real FFT freq data to something more aligned (it's not
Fixed incorrect assumption about the number of bytes returned by the
Real FFT cleanup, plus some testcases
Now using an MDCT implementation I can actually understand.
Re-enabled intra-frame prediction, which seems to have exposed a few issues
Add a test for tell(). Turns out we can make it fail by writing zeros.
Fix reporting of bit-rate in decoder
Fixed a typo and removed an old warning from speexenc. Also, using more useful
couple fixes to Ogg encoder/decoder