Commit graph

22 commits

Author SHA1 Message Date
Jean-Marc Valin
d77d6a58fc Renamed celt_[u]int* to opus_[u]int* 2011-07-29 17:33:06 -04:00
Timothy B. Terriberry
9bac8c17d5 Eliminate the ec_int32 and ec_uint32 typedefs.
These were used because the entropy coder originally came from
 outside libcelt, and thus did not have a common type system.
It's now undergone enough modification that it's not ever likely to
 be used as-is in another codec without some porting effort, so
 there's no real reason to maintain the typedefs separately.
Hopefully we'll replace these all again somedate with a common set
 of Opus typedefs, but for now this will do.

This fixes an issue caused by commit 6c8acbf1, which moved the
 ec_ilog() prototype from entcode.h to ecintrin.h, where the
 ec_uint32 typedef was not yet available.
Thanks to John Ridges for the report.
2011-03-02 21:14:19 -05:00
Jean-Marc Valin
3806c1d738 Relicensing under the simplified (2-clause) BSD license
Got authorization from all copyright holders
2011-02-09 22:37:41 -05:00
Jean-Marc Valin
2fcb239736 Removing the rest of the >32-bit PVQ code 2010-05-24 09:05:36 -04: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
Timothy B. Terriberry
d98d8ae087 CWRS clean-ups and optimizations.
Adds specialized O(N*log(K)) versions of cwrsi() and O(N) versions of icwrs()
 for N={3,4,5}, which allows them to operate all the way up to the theoretical
 pulse limit without serious performance degredation.
Also substantially reduces the computation time and stack usage of
 get_required_bits().
On x86-64, this gives a 2% speed-up for 256 sample frames, and almost a 16%
 speed-up for 64 sample frames.
2009-05-26 19:07:41 -04: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
Timothy B.B Terriberry
5ee9715c5c Change cwrsi() to operate on rows of U instead of columns.
It is no slower with a large number of pulses, and as much as 30% faster with
 a large number of dimensions.
2008-09-21 21:37:41 -04:00
Timothy B.B Terriberry
d910274f79 Change CWRS indexing to use Pyramid VQ's magnitude ordering.
This lets us encode and decode directly from the pulse vector without an
 intermediate transformation.
This makes old streams undecodable.
Additionally, ncwrs_u32() has been sped up for large N by using the sliding
 recurrence from Mohorko et al.
ncwrs_u64 could be sped up in a similar manner, but would require a larger
 table of multiplicative inverses (or several 32x32->64 bit multiplies).
Note that U(N,M) is now everywhere 1/2 the value it used to be.
2008-09-19 07:38:24 -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
e6ce0c6a22 optimisation: Removed a bunch of conditional branches from comb2pulse() 2008-04-18 16:46:39 +10:00
Timothy B. Terriberry
d883670bf7 Rework CWRS code.
This eliminates an extra O(nm) lookups on decode, and reduces the rate control
 from O(nm^2) to O(nm), in addition to eliminating O(m) lookups on both encode
 and decode.
Although the interface is slightly more complex, the internal code is also
 simpler.
2008-04-05 14:31:35 +10:00
Jean-Marc Valin
c7e0b76c06 Making sure not to use the C library calls directly 2008-03-16 07:55:29 +11:00
Jean-Marc Valin
0d28aa99c0 Now no divisions required in the cwrs code 2008-02-14 15:02:04 +11:00
Jean-Marc Valin
bf17da60f0 Reduced useless calls to ncwrs64() by half. 2008-02-14 14:18:19 +11:00
Jean-Marc Valin
5fa59954a9 moved pulse [en|de]coding to cwrs.c 2008-02-14 13:50:44 +11:00
Jean-Marc Valin
abe043f0a1 Moving everything to the same type abstraction (sort of). 2008-01-31 14:26:29 +11:00
Jean-Marc Valin
f8db800c44 Added support for codebooks up to 64 bits. 2007-12-11 14:52:56 +11:00
Timothy B. Terriberry
c4541ae786 Code for converting back and forth between pulse vectors and the correspondig
VQ index.
2007-12-03 11:51:29 +11:00