Commit graph

129 commits

Author SHA1 Message Date
Jean-Marc Valin
732ea38810 Updated static modes for new pulse cache.
Fixed a few minor bugs in the process.
2010-08-25 13:52:27 -04:00
Jean-Marc Valin
3ad8db49c5 New pulse cache 2010-08-25 13:11:09 -04:00
Jean-Marc Valin
3f9857b99e Making the fine energy allocation code less ugly.
No change to behaviour except that for stereo we now only force a minimum
of one energy bit per channel (previously two because of an error).
2010-08-13 21:20:37 -04:00
Jean-Marc Valin
360342824f Adaptive fine offset value 2010-08-06 14:42:43 -04:00
Jean-Marc Valin
37546cc3f6 Bit allocation
Also convert the stereo split code to use log(N)/2 as the bit allocation
offset
2010-07-27 22:39:15 +02:00
Timothy B. Terriberry
a345decd97 Adjust fine bits allocation.
The old code allocated too many fine bits to large bands.
New allocations were derived from by numerical optimization using quantization
 MSE sampled from Laplacian distributed random data to within +/- 1 bit for
 N=2...160 and bits per band from 0 to 64.
Those allocations could be modeled with only minor errors using a simple offset
 of 19/8+log2(N), with no bits spent on fine energy when there would not be
 enough bits remaining to code a single pulse.
However, PEAQ testing suggested an offset of 14/8 was better, and that it was
 always worth spending at least one bit on fine energy.
2010-07-27 21:35:43 +02:00
Jean-Marc Valin
525d7cfdc4 Support for adjusting the end band 2010-07-13 18:18:23 -04:00
Jean-Marc Valin
bb8fa1fca2 Allocation table now in bits/sample 2010-06-03 00:33:42 -04:00
Jean-Marc Valin
c5d00a066e Bunch of fixes for frames of 2.5 ms. 2010-05-26 11:27:32 -04:00
Jean-Marc Valin
cae30df09a Getting rid of PVQ-level split
Adding one more level of band splitting so that splitting at the
PVQ encoding level is no longer necessary.
2010-05-21 00:26:03 -04:00
Jean-Marc Valin
aead79b133 Proper use of logN and logM for the offsets 2010-05-11 07:46:35 -04:00
Jean-Marc Valin
7f1c9427e5 Allocation table stored with BITRES accuracy based on the short block size 2010-05-07 21:20:21 -04:00
Jean-Marc Valin
65ee67ac55 Making the band definition the same at all frame sizes. 2010-04-26 07:08:44 -04:00
Jean-Marc Valin
f400a3c573 Caching log2_frac(N, BITRES) in the more data to save some CPU 2010-04-06 20:33:50 -04:00
Jean-Marc Valin
64209a3edf A few minor optimisations (compute_allocation, denormalise_bands,
deemphasis)
2010-04-06 20:33:50 -04:00
Jean-Marc Valin
3a0bc3d95c Allowing CELT to skip the low frequencies 2010-02-25 22:46:55 -05:00
Jean-Marc Valin
8b2ff0da5a Updated copyright notices 2009-10-17 21:40:10 -04:00
Jean-Marc Valin
30f7f813ea Changed all the celt*int*_t types to remove the _t suffix, which is reserved
by POSIX. The other _t types that are not part of the API are still there
for now. Also, got rid of all that was left of the 64-bit types.
2009-10-17 14:35:13 -04:00
Jean-Marc Valin
bf2398b049 first step for removing the number of channels from the mode 2009-10-15 07:28:19 -04:00
Jean-Marc Valin
6a97802280 Adjusting the allocation for stereo directly in the alloc function rather than
in the table.
2009-10-13 20:35:21 -04:00
Jean-Marc Valin
185cabfa18 stereo allocator tuning 2009-10-04 01:17:42 -04:00
Jean-Marc Valin
91f07dc125 Changing some code to use BITRES directly instead of its value. 2009-07-25 20:42:24 -04:00
Jean-Marc Valin
164a229644 Reducing the size of the pulses->bits cache by restricting the number of pulses
possible
2009-07-23 07:24:03 -04:00
Jean-Marc Valin
a76a5e8f0c Better ebits rounding and making it possible to add remaining ebits even to
bands that weren't rounded down.
2009-06-10 22:46:27 -04:00
Jean-Marc Valin
52cb5fb3f6 Adding extra fine bits only when we have rounded down in the allocation 2009-06-10 08:08:55 -04:00
Gregory Maxwell
dc67fa9a4c Handle malloc failure in mode_create gracefully without leaking memory. 2009-06-04 21:51:12 -04:00
Jean-Marc Valin
9a44cde205 Removed support for band-per-band stereo_mode that was never really used 2009-06-02 20:21:53 -04:00
Jean-Marc Valin
445720f913 It is no longer necessary to have a minimum of one bit for fine energy
allocation
2009-06-02 07:59:32 -04:00
Gregory Maxwell
54547f16d5 Miscellaneous comment, copyright notice, readme updates. 2009-02-16 19:52:02 -05:00
Jean-Marc Valin
fda0e10f01 Better allocation rounding as suggested by derf 2009-02-09 23:17:44 -05:00
Jean-Marc Valin
9a6c496630 Changed the allocator to be smarter about the way it allocates
fine energy bits. Also, doing better rounding of the bits.
2009-02-09 00:45:48 -05:00
Timothy B. Terriberry
310fb3cb4d Compute the real maximum required bits for a split. 2008-12-17 07:31:08 -05:00
Jean-Marc Valin
54aab4225f Cleaned up some junk left from the last allocator change 2008-12-06 07:52:48 -05:00
Jean-Marc Valin
896471dc3d Disabling the folding sign bit 2008-11-06 21:55:41 -05:00
Jean-Marc Valin
c591e1542a Proper stack restore 2008-09-29 17:41:14 -04:00
Jean-Marc Valin
7b0cb4ba0d One-at-a-time allocator now uses direct feedback from ec_*_tell(). 2008-09-11 00:20:08 -04:00
Jean-Marc Valin
98acefdc4a Simplifications to the new allocator 2008-09-10 07:34:17 -04:00
Jean-Marc Valin
ebf72da760 At least attempting to use all the bits. 2008-09-09 23:21:36 -04:00
Jean-Marc Valin
825ead8210 Simplified allocation by doing it one band at a time, with memory 2008-09-09 07:35:40 -04:00
Jean-Marc Valin
eb7ce03165 fixed a bunch of bugs in the unified allocation code. 2008-08-02 20:14:17 -04:00
Jean-Marc Valin
6775de3eae Unified allocation of fine energy and pulses. 2008-08-02 08:14:42 -04:00
Jean-Marc Valin
679083f449 Implemented split-cwrs for very large codebooks (>64 bits), but still getting
a few decoding errors.
2008-06-10 17:23:03 +10:00
Jean-Marc Valin
5aff7c04d4 Implemented a cleaner way to detect whether CWRS codebooks fit in 32 or 64 bits 2008-06-10 16:25:45 +10:00
Jean-Marc Valin
bf2d648bbd Implemented intensity stereo, which required changes all over the place
to make sure that stereo coupling is done at the band level. Previously
the stereo coupling was done all at once, but there were all kinds of
interactions with the prediction and folding.
2008-05-23 16:57:34 +10:00
Jean-Marc Valin
7bd2b9e001 More stereo infrastructure 2008-05-23 14:23:22 +10:00
Jean-Marc Valin
fe0b8e8db4 infrastructure changes for upcoming stereo improvements 2008-05-23 13:35:35 +10:00
Jean-Marc Valin
9a8bac019c Using only a sign for the intra prediction instead of using up to 5 bits for
an offset.
2008-05-05 12:02:14 +10:00
Jean-Marc Valin
50bf8b0121 Removing some unnecessary initialisations to zero. 2008-04-21 12:14:16 +10:00
Jean-Marc Valin
784959e8e9 separated the two passes from interp_bits2pulses() 2008-04-18 19:35:34 +10:00
Jean-Marc Valin
9656ca0090 fixed three declaration-after-statement issues 2008-04-11 17:24:31 +10:00