aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/openjpeg-libsl/libopenjpeg/mqc.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--libraries/openjpeg-libsl/libopenjpeg/mqc.h197
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
38The functions in MQC.C have for goal to realize the MQ-coder operations. The functions
39in MQC.C are used by some function in T1.C.
40*/
41
42/** @defgroup MQC MQC - Implementation of an MQ-Coder */
43/*@{*/
44
45/**
46This struct defines the state of a context.
47*/
48typedef 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/**
62MQ coder
63*/
64typedef 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/**
79Create a new MQC handle
80@return Returns a new MQC handle if successful, returns NULL otherwise
81*/
82opj_mqc_t* mqc_create();
83/**
84Destroy a previously created MQC handle
85@param mqc MQC handle to destroy
86*/
87void mqc_destroy(opj_mqc_t *mqc);
88/**
89Return the number of bytes written/read since initialisation
90@param mqc MQC handle
91@return Returns the number of bytes already encoded
92*/
93int mqc_numbytes(opj_mqc_t *mqc);
94/**
95Reset 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*/
99void mqc_resetstates(opj_mqc_t *mqc);
100/**
101Set 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*/
107void mqc_setstate(opj_mqc_t *mqc, int ctxno, int msb, int prob);
108/**
109Initialize the encoder
110@param mqc MQC handle
111@param bp Pointer to the start of the buffer where the bytes will be written
112*/
113void mqc_init_enc(opj_mqc_t *mqc, unsigned char *bp);
114/**
115Set the current context used for coding/decoding
116@param mqc MQC handle
117@param ctxno Number that identifies the context
118*/
119void mqc_setcurctx(opj_mqc_t *mqc, int ctxno);
120/**
121Encode a symbol using the MQ-coder
122@param mqc MQC handle
123@param d The symbol to be encoded (0 or 1)
124*/
125void mqc_encode(opj_mqc_t *mqc, int d);
126/**
127Flush the encoder, so that all remaining data is written
128@param mqc MQC handle
129*/
130void mqc_flush(opj_mqc_t *mqc);
131/**
132BYPASS mode switch, initialization operation.
133JPEG 2000 p 505.
134<h2>Not fully implemented and tested !!</h2>
135@param mqc MQC handle
136*/
137void mqc_bypass_init_enc(opj_mqc_t *mqc);
138/**
139BYPASS mode switch, coding operation.
140JPEG 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*/
145void mqc_bypass_enc(opj_mqc_t *mqc, int d);
146/**
147BYPASS mode switch, flush operation
148<h2>Not fully implemented and tested !!</h2>
149@param mqc MQC handle
150@return Returns 1 (always)
151*/
152int mqc_bypass_flush_enc(opj_mqc_t *mqc);
153/**
154RESET mode switch
155@param mqc MQC handle
156*/
157void mqc_reset_enc(opj_mqc_t *mqc);
158/**
159RESTART mode switch (TERMALL)
160@param mqc MQC handle
161@return Returns 1 (always)
162*/
163int mqc_restart_enc(opj_mqc_t *mqc);
164/**
165RESTART mode switch (TERMALL) reinitialisation
166@param mqc MQC handle
167*/
168void mqc_restart_init_enc(opj_mqc_t *mqc);
169/**
170ERTERM mode switch (PTERM)
171@param mqc MQC handle
172*/
173void mqc_erterm_enc(opj_mqc_t *mqc);
174/**
175SEGMARK mode switch (SEGSYM)
176@param mqc MQC handle
177*/
178void mqc_segmark_enc(opj_mqc_t *mqc);
179/**
180Initialize 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*/
185void mqc_init_dec(opj_mqc_t *mqc, unsigned char *bp, int len);
186/**
187Decode a symbol
188@param mqc MQC handle
189@return Returns the decoded symbol (0 or 1)
190*/
191int mqc_decode(opj_mqc_t *mqc);
192/* ----------------------------------------------------------------------- */
193/*@}*/
194
195/*@}*/
196
197#endif /* __MQC_H */