Entropy coder clean-up.
authorTimothy B. Terriberry <tterribe@xiph.org>
Tue, 21 Dec 2010 16:42:26 +0000 (08:42 -0800)
committerJean-Marc Valin <jean-marc.valin@octasic.com>
Tue, 21 Dec 2010 19:23:45 +0000 (14:23 -0500)
commit30df6cf3f84c81eb0d3e6940670fda729e22d873
tree030f19536685f9e262cfe8179080cd2fdd3c8a4c
parent59858633fb4ffc5fe797e885be058e6270a32aef
Entropy coder clean-up.

This simplifies a good bit of the error handling, and should make it
 impossible to overrun the buffer in the encoder or decoder, while
 still allowing tell() to operate correctly after a bust.
The encoder now tries to keep the range coder data intact after a
 bust instead of corrupting it with extra bits data, though this is
 not a guarantee (too many extra bits may have already been flushed).
It also now correctly reports errors when the bust occurs merging the
 last byte of range coder and extra bits.

A number of abstraction barrier violations were cleaned up, as well.
This patch also includes a number of minor performance improvements:
 ec_{enc|dec}_bits() in particular should be much faster.

Finally, tf_select was changed to be coded with the range coder
 rather than extra bits, so that it is at the front of the packet
 (for unequal error protection robustness).
libcelt/celt.c
libcelt/entcode.h
libcelt/entdec.c
libcelt/entdec.h
libcelt/entenc.c
libcelt/entenc.h
libcelt/quant_bands.c
libcelt/rangedec.c
libcelt/rangeenc.c
tests/ectest.c