OpenJPEG  2.0.0
mqc.h
Go to the documentation of this file.
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  * Copyright (c) 2008, Jerome Fimes, Communications & Systemes <jerome.fimes@c-s.fr>
9  * All rights reserved.
10  *
11  * Redistribution and use in source and binary forms, with or without
12  * modification, are permitted provided that the following conditions
13  * are met:
14  * 1. Redistributions of source code must retain the above copyright
15  * notice, this list of conditions and the following disclaimer.
16  * 2. Redistributions in binary form must reproduce the above copyright
17  * notice, this list of conditions and the following disclaimer in the
18  * documentation and/or other materials provided with the distribution.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
24  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30  * POSSIBILITY OF SUCH DAMAGE.
31  */
32 
33 #ifndef __MQC_H
34 #define __MQC_H
35 
45 
49 typedef struct opj_mqc_state {
59 
60 #define MQC_NUMCTXS 19
61 
65 typedef struct opj_mqc {
74 #ifdef MQC_PERF_OPT
75  unsigned char *buffer;
76 #endif
77 } opj_mqc_t;
78 
81 /* ----------------------------------------------------------------------- */
91 void opj_mqc_destroy(opj_mqc_t *mqc);
103 void opj_mqc_resetstates(opj_mqc_t *mqc);
111 void opj_mqc_setstate(opj_mqc_t *mqc, OPJ_UINT32 ctxno, OPJ_UINT32 msb, OPJ_INT32 prob);
117 void opj_mqc_init_enc(opj_mqc_t *mqc, OPJ_BYTE *bp);
123 #define opj_mqc_setcurctx(mqc, ctxno) (mqc)->curctx = &(mqc)->ctxs[(OPJ_UINT32)(ctxno)]
124 
129 void opj_mqc_encode(opj_mqc_t *mqc, OPJ_UINT32 d);
134 void opj_mqc_flush(opj_mqc_t *mqc);
161 void opj_mqc_reset_enc(opj_mqc_t *mqc);
177 void opj_mqc_erterm_enc(opj_mqc_t *mqc);
182 void opj_mqc_segmark_enc(opj_mqc_t *mqc);
195 OPJ_INT32 opj_mqc_decode(opj_mqc_t * const mqc);
196 /* ----------------------------------------------------------------------- */
200 
201 #endif /* __MQC_H */