2 * Copyright (c) 2002-2003, Antonin Descampe
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
14 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
15 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
18 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
19 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
20 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
21 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
22 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
23 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
24 * POSSIBILITY OF SUCH DAMAGE.
30 unsigned char raw_c; /* temporary buffer where bits are coded or decoded */
31 unsigned int raw_ct; /* number of bits already read or free to write */
32 unsigned int raw_lenmax; /* maximum length to decode */
33 unsigned int raw_len; /* length decoded */
34 unsigned char *raw_bp; /* pointer to the current position in the buffer */
35 unsigned char *raw_start; /* pointer to the start of the buffer */
36 unsigned char *raw_end; /* pointer to the end of the buffer */
39 * Return the number of bytes already encoded.
43 return raw_bp - raw_start;
47 * Initialize raw-decoder.
49 * bp : pointer to the start of the buffer from which the bytes will be read
50 * len : length of the input buffer
52 void raw_init_dec(unsigned char *bp, int len)
62 * Decode a symbol using raw-decoder. Cfr p.506 TAUBMAN
69 if (raw_len == raw_lenmax)
74 raw_c = *(raw_start + raw_len);
79 d = (raw_c >> raw_ct) & 0x01;