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
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