2 * Copyright (c) 2001-2002, David Janssens
3 * Copyright (c) 2002-2003, Yannick Verschueren
4 * Copyright (c) 2002-2003, Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26 * POSSIBILITY OF SUCH DAMAGE.
33 * Return the number of bytes written/read since initialisation
38 * Reset the states of all the context of the coder/decoder
39 * (each context is set to a state where 0 and 1 are more or less equiprobable)
41 void mqc_resetstates();
44 * Set the state of a particular context
45 * ctxno: number that identifies the context
46 * msb: the MSB of the new state of the context
47 * prob: number that identifies the probability of the symbols for the new state of the context
49 void mqc_setstate(int ctxno, int msb, int prob);
52 * Initialize the encoder
53 * bp: pointer to the start of the buffer where the bytes will be written
55 void mqc_init_enc(unsigned char *bp);
58 * Set the current context used for coding/decoding
59 * ctxno: number that identifies the context
61 void mqc_setcurctx(int ctxno);
65 * d: bit to encode (0 or 1)
67 void mqc_encode(int d);
70 * Flush the encoder, so that all remaining data is written
77 void mqc_bypass_init_enc();
82 void mqc_bypass_enc(int d);
87 int mqc_bypass_flush_enc();
95 * RESTART mode switch (TERMALL)
97 int mqc_restart_enc();
100 * RESTART mode switch (TERMALL)
102 void mqc_restart_init_enc();
105 * ERTERM mode switch (PTERM)
107 void mqc_erterm_enc();
110 * SEGMARK mode switch (SEGSYM)
112 void mqc_segmark_enc();
116 * Initialize the decoder
117 * bp: pointer to the start of the buffer from which the bytes will be read
118 * len: length of the input buffer
120 void mqc_init_dec(unsigned char *bp, int len);
123 * Decode a bit (returns 0 or 1)