diff options
author | dan miller | 2007-10-18 08:29:49 +0000 |
---|---|---|
committer | dan miller | 2007-10-18 08:29:49 +0000 |
commit | cc07c64bdef46f4d25c2203e874f91ee94583f56 (patch) | |
tree | 004c68e8d8813ff1addfd9749e3dbdc6ff4432a9 /libraries/openjpeg-libsl/libopenjpeg/mqc.h | |
parent | hmm... trying again to get everything committed (diff) | |
download | opensim-SC-cc07c64bdef46f4d25c2203e874f91ee94583f56.zip opensim-SC-cc07c64bdef46f4d25c2203e874f91ee94583f56.tar.gz opensim-SC-cc07c64bdef46f4d25c2203e874f91ee94583f56.tar.bz2 opensim-SC-cc07c64bdef46f4d25c2203e874f91ee94583f56.tar.xz |
one more time
Diffstat (limited to 'libraries/openjpeg-libsl/libopenjpeg/mqc.h')
-rw-r--r-- | libraries/openjpeg-libsl/libopenjpeg/mqc.h | 197 |
1 files changed, 197 insertions, 0 deletions
diff --git a/libraries/openjpeg-libsl/libopenjpeg/mqc.h b/libraries/openjpeg-libsl/libopenjpeg/mqc.h new file mode 100644 index 0000000..67f38c1 --- /dev/null +++ b/libraries/openjpeg-libsl/libopenjpeg/mqc.h | |||
@@ -0,0 +1,197 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2002-2007, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium | ||
3 | * Copyright (c) 2002-2007, Professor Benoit Macq | ||
4 | * Copyright (c) 2001-2003, David Janssens | ||
5 | * Copyright (c) 2002-2003, Yannick Verschueren | ||
6 | * Copyright (c) 2003-2007, Francois-Olivier Devaux and Antonin Descampe | ||
7 | * Copyright (c) 2005, Herve Drolon, FreeImage Team | ||
8 | * All rights reserved. | ||
9 | * | ||
10 | * Redistribution and use in source and binary forms, with or without | ||
11 | * modification, are permitted provided that the following conditions | ||
12 | * are met: | ||
13 | * 1. Redistributions of source code must retain the above copyright | ||
14 | * notice, this list of conditions and the following disclaimer. | ||
15 | * 2. Redistributions in binary form must reproduce the above copyright | ||
16 | * notice, this list of conditions and the following disclaimer in the | ||
17 | * documentation and/or other materials provided with the distribution. | ||
18 | * | ||
19 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS' | ||
20 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
21 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
22 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE | ||
23 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | ||
24 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | ||
25 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | ||
26 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | ||
27 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
28 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||
29 | * POSSIBILITY OF SUCH DAMAGE. | ||
30 | */ | ||
31 | |||
32 | #ifndef __MQC_H | ||
33 | #define __MQC_H | ||
34 | /** | ||
35 | @file mqc.h | ||
36 | @brief Implementation of an MQ-Coder (MQC) | ||
37 | |||
38 | The functions in MQC.C have for goal to realize the MQ-coder operations. The functions | ||
39 | in MQC.C are used by some function in T1.C. | ||
40 | */ | ||
41 | |||
42 | /** @defgroup MQC MQC - Implementation of an MQ-Coder */ | ||
43 | /*@{*/ | ||
44 | |||
45 | /** | ||
46 | This struct defines the state of a context. | ||
47 | */ | ||
48 | typedef struct opj_mqc_state { | ||
49 | /** the probability of the Least Probable Symbol (0.75->0x8000, 1.5->0xffff) */ | ||
50 | unsigned int qeval; | ||
51 | /** the Most Probable Symbol (0 or 1) */ | ||
52 | int mps; | ||
53 | /** next state if the next encoded symbol is the MPS */ | ||
54 | struct opj_mqc_state *nmps; | ||
55 | /** next state if the next encoded symbol is the LPS */ | ||
56 | struct opj_mqc_state *nlps; | ||
57 | } opj_mqc_state_t; | ||
58 | |||
59 | #define MQC_NUMCTXS 32 | ||
60 | |||
61 | /** | ||
62 | MQ coder | ||
63 | */ | ||
64 | typedef struct opj_mqc { | ||
65 | unsigned int c; | ||
66 | unsigned int a; | ||
67 | unsigned int ct; | ||
68 | unsigned char *bp; | ||
69 | unsigned char *start; | ||
70 | unsigned char *end; | ||
71 | opj_mqc_state_t *ctxs[MQC_NUMCTXS]; | ||
72 | opj_mqc_state_t **curctx; | ||
73 | } opj_mqc_t; | ||
74 | |||
75 | /** @name Exported functions */ | ||
76 | /*@{*/ | ||
77 | /* ----------------------------------------------------------------------- */ | ||
78 | /** | ||
79 | Create a new MQC handle | ||
80 | @return Returns a new MQC handle if successful, returns NULL otherwise | ||
81 | */ | ||
82 | opj_mqc_t* mqc_create(); | ||
83 | /** | ||
84 | Destroy a previously created MQC handle | ||
85 | @param mqc MQC handle to destroy | ||
86 | */ | ||
87 | void mqc_destroy(opj_mqc_t *mqc); | ||
88 | /** | ||
89 | Return the number of bytes written/read since initialisation | ||
90 | @param mqc MQC handle | ||
91 | @return Returns the number of bytes already encoded | ||
92 | */ | ||
93 | int mqc_numbytes(opj_mqc_t *mqc); | ||
94 | /** | ||
95 | Reset the states of all the context of the coder/decoder | ||
96 | (each context is set to a state where 0 and 1 are more or less equiprobable) | ||
97 | @param mqc MQC handle | ||
98 | */ | ||
99 | void mqc_resetstates(opj_mqc_t *mqc); | ||
100 | /** | ||
101 | Set the state of a particular context | ||
102 | @param mqc MQC handle | ||
103 | @param ctxno Number that identifies the context | ||
104 | @param msb The MSB of the new state of the context | ||
105 | @param prob Number that identifies the probability of the symbols for the new state of the context | ||
106 | */ | ||
107 | void mqc_setstate(opj_mqc_t *mqc, int ctxno, int msb, int prob); | ||
108 | /** | ||
109 | Initialize the encoder | ||
110 | @param mqc MQC handle | ||
111 | @param bp Pointer to the start of the buffer where the bytes will be written | ||
112 | */ | ||
113 | void mqc_init_enc(opj_mqc_t *mqc, unsigned char *bp); | ||
114 | /** | ||
115 | Set the current context used for coding/decoding | ||
116 | @param mqc MQC handle | ||
117 | @param ctxno Number that identifies the context | ||
118 | */ | ||
119 | void mqc_setcurctx(opj_mqc_t *mqc, int ctxno); | ||
120 | /** | ||
121 | Encode a symbol using the MQ-coder | ||
122 | @param mqc MQC handle | ||
123 | @param d The symbol to be encoded (0 or 1) | ||
124 | */ | ||
125 | void mqc_encode(opj_mqc_t *mqc, int d); | ||
126 | /** | ||
127 | Flush the encoder, so that all remaining data is written | ||
128 | @param mqc MQC handle | ||
129 | */ | ||
130 | void mqc_flush(opj_mqc_t *mqc); | ||
131 | /** | ||
132 | BYPASS mode switch, initialization operation. | ||
133 | JPEG 2000 p 505. | ||
134 | <h2>Not fully implemented and tested !!</h2> | ||
135 | @param mqc MQC handle | ||
136 | */ | ||
137 | void mqc_bypass_init_enc(opj_mqc_t *mqc); | ||
138 | /** | ||
139 | BYPASS mode switch, coding operation. | ||
140 | JPEG 2000 p 505. | ||
141 | <h2>Not fully implemented and tested !!</h2> | ||
142 | @param mqc MQC handle | ||
143 | @param d The symbol to be encoded (0 or 1) | ||
144 | */ | ||
145 | void mqc_bypass_enc(opj_mqc_t *mqc, int d); | ||
146 | /** | ||
147 | BYPASS mode switch, flush operation | ||
148 | <h2>Not fully implemented and tested !!</h2> | ||
149 | @param mqc MQC handle | ||
150 | @return Returns 1 (always) | ||
151 | */ | ||
152 | int mqc_bypass_flush_enc(opj_mqc_t *mqc); | ||
153 | /** | ||
154 | RESET mode switch | ||
155 | @param mqc MQC handle | ||
156 | */ | ||
157 | void mqc_reset_enc(opj_mqc_t *mqc); | ||
158 | /** | ||
159 | RESTART mode switch (TERMALL) | ||
160 | @param mqc MQC handle | ||
161 | @return Returns 1 (always) | ||
162 | */ | ||
163 | int mqc_restart_enc(opj_mqc_t *mqc); | ||
164 | /** | ||
165 | RESTART mode switch (TERMALL) reinitialisation | ||
166 | @param mqc MQC handle | ||
167 | */ | ||
168 | void mqc_restart_init_enc(opj_mqc_t *mqc); | ||
169 | /** | ||
170 | ERTERM mode switch (PTERM) | ||
171 | @param mqc MQC handle | ||
172 | */ | ||
173 | void mqc_erterm_enc(opj_mqc_t *mqc); | ||
174 | /** | ||
175 | SEGMARK mode switch (SEGSYM) | ||
176 | @param mqc MQC handle | ||
177 | */ | ||
178 | void mqc_segmark_enc(opj_mqc_t *mqc); | ||
179 | /** | ||
180 | Initialize the decoder | ||
181 | @param mqc MQC handle | ||
182 | @param bp Pointer to the start of the buffer from which the bytes will be read | ||
183 | @param len Length of the input buffer | ||
184 | */ | ||
185 | void mqc_init_dec(opj_mqc_t *mqc, unsigned char *bp, int len); | ||
186 | /** | ||
187 | Decode a symbol | ||
188 | @param mqc MQC handle | ||
189 | @return Returns the decoded symbol (0 or 1) | ||
190 | */ | ||
191 | int mqc_decode(opj_mqc_t *mqc); | ||
192 | /* ----------------------------------------------------------------------- */ | ||
193 | /*@}*/ | ||
194 | |||
195 | /*@}*/ | ||
196 | |||
197 | #endif /* __MQC_H */ | ||