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
celtenc and celtdec work for stereo as well.
oops, forgot the makefile
bit of cleaning up, default sampling rate
Got the Ogg encoder and decoder to (barely) work.
oops, type safety issue resolved
clean up... oh and actually committed the header definition
Fixed the default int32 type which was wrong on amd64 (and added testcase).
"make check" now actually tried to encode and decode to see if things work
Moving everything to the same type abstraction (sort of).
type abstraction header and header definition (still incomplete)
Added a check to make sure the encoder signal matches that of the decoder
remove prob{enc,dec,mod} that were no longer needed
testcase for 32-bit pulse encoding/decoding
Moved the content of libentcode into libcelt to reduce dependencies,
Bit of cleaning up in the byte dumping part. Making use of any remaining bit(s)
Remove end-byte handling to allow arbitrary padding with zeros for CBR.
Actually free test data vectors in the new random stream tests.
Fix the bug that was causing the last byte of the stream to be returned incorrectly, as well as undo jm's reversion, which can cause ec_dec_tell() to operate incorrectly at the end of the stream.
Making the library usable by other projects (install things properly, added
Tweaks for slightly improving the handling of the last byte (still not
Reverted some of Timothy's changes to the range decoding that were causing decode random decode problems at the end of the stream (but only once in a while).
Big mode cleanup. Keeping only one mono and one stereo mode
Further simplified the API by passing the rate directly to the
Update ec_dec_bits64() to correspond to the new ec_enc_bits64(). Not sure why this wasn't committed before.