OpenJPEG 1.5.1
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 * 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
44
48typedef struct opj_mqc_state {
50 unsigned int qeval;
52 int mps;
58
59#define MQC_NUMCTXS 19
60
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;
73#ifdef MQC_PERF_OPT
74 unsigned char *buffer;
75#endif
77
80/* ----------------------------------------------------------------------- */
90void mqc_destroy(opj_mqc_t *mqc);
96int mqc_numbytes(opj_mqc_t *mqc);
102void mqc_resetstates(opj_mqc_t *mqc);
110void mqc_setstate(opj_mqc_t *mqc, int ctxno, int msb, int prob);
116void mqc_init_enc(opj_mqc_t *mqc, unsigned char *bp);
122#define mqc_setcurctx(mqc, ctxno) (mqc)->curctx = &(mqc)->ctxs[(int)(ctxno)]
128void mqc_encode(opj_mqc_t *mqc, int d);
133void mqc_flush(opj_mqc_t *mqc);
148void mqc_bypass_enc(opj_mqc_t *mqc, int d);
160void mqc_reset_enc(opj_mqc_t *mqc);
166int mqc_restart_enc(opj_mqc_t *mqc);
176void mqc_erterm_enc(opj_mqc_t *mqc);
181void mqc_segmark_enc(opj_mqc_t *mqc);
188void mqc_init_dec(opj_mqc_t *mqc, unsigned char *bp, int len);
194int mqc_decode(opj_mqc_t *const mqc);
195/* ----------------------------------------------------------------------- */
199
200#endif /* __MQC_H */
int mqc_restart_enc(opj_mqc_t *mqc)
RESTART mode switch (TERMALL)
Definition mqc.c:459
void mqc_restart_init_enc(opj_mqc_t *mqc)
RESTART mode switch (TERMALL) reinitialisation.
Definition mqc.c:475
#define MQC_NUMCTXS
Definition mqc.h:59
opj_mqc_t * mqc_create(void)
Create a new MQC handle.
Definition mqc.c:355
void mqc_setstate(opj_mqc_t *mqc, int ctxno, int msb, int prob)
Set the state of a particular context.
Definition mqc.c:588
int mqc_decode(opj_mqc_t *const mqc)
Decode a symbol.
Definition mqc.c:562
void mqc_erterm_enc(opj_mqc_t *mqc)
ERTERM mode switch (PTERM)
Definition mqc.c:487
void mqc_destroy(opj_mqc_t *mqc)
Destroy a previously created MQC handle.
Definition mqc.c:363
int mqc_bypass_flush_enc(opj_mqc_t *mqc)
BYPASS mode switch, flush operation.
Definition mqc.c:432
void mqc_segmark_enc(opj_mqc_t *mqc)
SEGMARK mode switch (SEGSYM)
Definition mqc.c:502
int mqc_numbytes(opj_mqc_t *mqc)
Return the number of bytes written/read since initialisation.
Definition mqc.c:374
struct opj_mqc opj_mqc_t
MQ coder.
void mqc_bypass_init_enc(opj_mqc_t *mqc)
BYPASS mode switch, initialization operation.
Definition mqc.c:410
struct opj_mqc_state opj_mqc_state_t
This struct defines the state of a context.
void mqc_flush(opj_mqc_t *mqc)
Flush the encoder, so that all remaining data is written.
Definition mqc.c:398
void mqc_init_enc(opj_mqc_t *mqc, unsigned char *bp)
Initialize the encoder.
Definition mqc.c:378
void mqc_init_dec(opj_mqc_t *mqc, unsigned char *bp, int len)
Initialize the decoder.
Definition mqc.c:511
void mqc_resetstates(opj_mqc_t *mqc)
Reset the states of all the context of the coder/decoder (each context is set to a state where 0 and ...
Definition mqc.c:581
void mqc_bypass_enc(opj_mqc_t *mqc, int d)
BYPASS mode switch, coding operation.
Definition mqc.c:418
void mqc_reset_enc(opj_mqc_t *mqc)
RESET mode switch.
Definition mqc.c:452
void mqc_encode(opj_mqc_t *mqc, int d)
Encode a symbol using the MQ-coder.
Definition mqc.c:390
This struct defines the state of a context.
Definition mqc.h:48
int mps
the Most Probable Symbol (0 or 1)
Definition mqc.h:52
unsigned int qeval
the probability of the Least Probable Symbol (0.75->0x8000, 1.5->0xffff)
Definition mqc.h:50
struct opj_mqc_state * nlps
next state if the next encoded symbol is the LPS
Definition mqc.h:56
struct opj_mqc_state * nmps
next state if the next encoded symbol is the MPS
Definition mqc.h:54
MQ coder.
Definition mqc.h:64
unsigned int ct
Definition mqc.h:67
opj_mqc_state_t ** curctx
Definition mqc.h:72
unsigned char * end
Definition mqc.h:70
opj_mqc_state_t * ctxs[MQC_NUMCTXS]
Definition mqc.h:71
unsigned char * bp
Definition mqc.h:68
unsigned int c
Definition mqc.h:65
unsigned char * start
Definition mqc.h:69
unsigned int a
Definition mqc.h:66