Jean-Marc Valin
531f2ae7e3
Remove useless use of "long", remove useless prototypes
2010-08-02 09:01:28 -04:00
Jean-Marc Valin
b1e017f58d
Error checking on the decoder side
2010-07-18 21:20:35 -04:00
Timothy B. Terriberry
43e9406201
Change ec_{enc|dec}_bit_prob to take probabilities in units of 1/65536 instead of 1/256. This allows them to use a single 16x16->32 multiply instead of a 24x8->32 multiply. Also change the time-frequency resolution flag coding to ensure that "0" is always the most-probable symbol (i.e., that prob("1")<50%), as that's where all the rounding error accumulates.
2010-05-29 23:45:28 -04:00
Timothy B. Terriberry
299747ee24
Provide direct implementations ec_{enc|dec}_bit_prob() that do not require a division instead of using the normal entropy coder path. This should be exactly equivalent to the existing code.
2010-05-29 23:45:18 -04:00
Jean-Marc Valin
8b2ff0da5a
Updated copyright notices
2009-10-17 21:40:10 -04:00
Jean-Marc Valin
949a29bf0c
Raw bits encoding/decoding functions renamed to *_raw() and re-introducing
...
original ec_encode_bin()/ec_decode_bin() to optimize performance when ft is
a power of two.
2009-07-25 20:16:01 -04:00
Jean-Marc Valin
c08be4485b
Implemented "raw bits"
...
Making it so all the information encoded directly with ec_enc_bits() gets
stored at the end of the stream, without going through the range coder. This
should be both faster and reduce the effects of bit errors.
Conflicts:
tests/ectest.c
2009-07-23 07:33:24 -04:00
Timothy B. Terriberry
8d940a664e
Change end-of-stream handling in the range coder.
...
Instead of trying to maximize the number of trailing zeros (minimize the number
of bits encoded), we try to maximize the number of trailing bits that can
contain arbitrary data.
Note that this requires ec_enc_tell() and ec_dec_tell() to reserve an extra
bit, since depending on the exact final codeword, as little as half the final
range might be available for storing arbitrary data.
This is the first step needed to start packing literal bits outside the range
coder (for speed and robustness purposes).
2009-07-23 07:33:24 -04:00
Jean-Marc Valin
6fa4b56ba8
ietf doc: fixing up references, removed misleading comments in rangedec.c
2009-07-03 10:44:16 -04:00
Gregory Maxwell
f40bbf751d
Include missing copyright information in various files, for signoff.
...
Signed-off-by: Timothy B. Terriberry <tterribe@xiph.org>
2009-02-03 23:08:31 -05:00
Timothy B.B Terriberry
d77f61ac22
Fixes some issues in the MF range coder on systems were ints are 16 bits.
2008-10-19 20:01:34 -04:00
Jean-Marc Valin
821945d97c
Defining IMUL32 for 32x32=>32 int multiplications and using it in the range
...
coder
2008-04-10 13:24:48 +10:00
Jean-Marc Valin
fd8fda9937
Making a few functions static inline
2008-03-27 09:00:37 +11:00
Jean-Marc Valin
c2decd39a6
Made a second version of ec_{en|de}code optimised for encoding bits (no div
...
required) and using it in ec_{en|de}c_bits()
2008-03-22 22:58:45 +11:00
Jean-Marc Valin
71a84590e7
Removed unnecessary header inclusions
2008-03-14 11:09:50 +11:00
Jean-Marc Valin
02fa913c32
More C89 fixes, making sure to include config.h from all source files.
2008-02-20 12:09:29 +11:00
Jean-Marc Valin
6238bc0ece
Moved the content of libentcode into libcelt to reduce dependencies,
...
especially now that we have a custom version of that code anyway. Moved
the test code to tests/
2008-01-28 22:28:54 +11:00