test
[openjpeg.git] / libopenjpeg / mqc.h
1 /*
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
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
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.
15  *
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.
27  */
28
29 #ifndef __MQC_H
30 #define __MQC_H
31
32 /*
33  * Return the number of bytes written/read since initialisation
34  */
35 int mqc_numbytes();
36
37 /*
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)
40  */
41 void mqc_resetstates();
42
43 /*
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
48  */
49 void mqc_setstate(int ctxno, int msb, int prob);
50
51 /*
52  * Initialize the encoder
53  * bp: pointer to the start of the buffer where the bytes will be written
54  */
55 void mqc_init_enc(unsigned char *bp);
56
57 /*
58  * Set the current context used for coding/decoding
59  * ctxno: number that identifies the context
60  */
61 void mqc_setcurctx(int ctxno);
62
63 /*
64  * Encode a bit
65  * d: bit to encode (0 or 1)
66  */
67 void mqc_encode(int d);
68
69 /*
70  * Flush the encoder, so that all remaining data is written
71  */
72 void mqc_flush();
73
74 /*
75  * BYPASS mode switch
76  */
77 void mqc_bypass_init_enc();
78
79 /*
80  * BYPASS mode switch
81  */
82 void mqc_bypass_enc(int d);
83
84 /*
85  * BYPASS mode switch
86  */
87 int mqc_bypass_flush_enc();
88
89 /*
90  * RESET mode switch
91  */
92 void mqc_reset_enc();
93
94 /*
95  * RESTART mode switch (TERMALL)
96  */
97 int mqc_restart_enc();
98
99 /*
100  * RESTART mode switch (TERMALL)
101  */
102 void mqc_restart_init_enc();
103
104 /*
105  * ERTERM mode switch (PTERM)
106  */
107 void mqc_erterm_enc();
108
109 /*
110  * SEGMARK mode switch (SEGSYM)
111  */
112 void mqc_segmark_enc();
113
114
115 /*
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
119  */
120 void mqc_init_dec(unsigned char *bp, int len);
121
122 /*
123  * Decode a bit (returns 0 or 1)
124  */
125 int mqc_decode();
126
127 #endif