xref: /aosp_15_r20/external/pdfium/third_party/libopenjpeg/mqc.h (revision 3ac0a46f773bac49fa9476ec2b1cf3f8da5ec3a4)
1*3ac0a46fSAndroid Build Coastguard Worker /*
2*3ac0a46fSAndroid Build Coastguard Worker  * The copyright in this software is being made available under the 2-clauses
3*3ac0a46fSAndroid Build Coastguard Worker  * BSD License, included below. This software may be subject to other third
4*3ac0a46fSAndroid Build Coastguard Worker  * party and contributor rights, including patent rights, and no such rights
5*3ac0a46fSAndroid Build Coastguard Worker  * are granted under this license.
6*3ac0a46fSAndroid Build Coastguard Worker  *
7*3ac0a46fSAndroid Build Coastguard Worker  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
8*3ac0a46fSAndroid Build Coastguard Worker  * Copyright (c) 2002-2014, Professor Benoit Macq
9*3ac0a46fSAndroid Build Coastguard Worker  * Copyright (c) 2001-2003, David Janssens
10*3ac0a46fSAndroid Build Coastguard Worker  * Copyright (c) 2002-2003, Yannick Verschueren
11*3ac0a46fSAndroid Build Coastguard Worker  * Copyright (c) 2003-2007, Francois-Olivier Devaux
12*3ac0a46fSAndroid Build Coastguard Worker  * Copyright (c) 2003-2014, Antonin Descampe
13*3ac0a46fSAndroid Build Coastguard Worker  * Copyright (c) 2005, Herve Drolon, FreeImage Team
14*3ac0a46fSAndroid Build Coastguard Worker  * Copyright (c) 2008, Jerome Fimes, Communications & Systemes <[email protected]>
15*3ac0a46fSAndroid Build Coastguard Worker  * All rights reserved.
16*3ac0a46fSAndroid Build Coastguard Worker  *
17*3ac0a46fSAndroid Build Coastguard Worker  * Redistribution and use in source and binary forms, with or without
18*3ac0a46fSAndroid Build Coastguard Worker  * modification, are permitted provided that the following conditions
19*3ac0a46fSAndroid Build Coastguard Worker  * are met:
20*3ac0a46fSAndroid Build Coastguard Worker  * 1. Redistributions of source code must retain the above copyright
21*3ac0a46fSAndroid Build Coastguard Worker  *    notice, this list of conditions and the following disclaimer.
22*3ac0a46fSAndroid Build Coastguard Worker  * 2. Redistributions in binary form must reproduce the above copyright
23*3ac0a46fSAndroid Build Coastguard Worker  *    notice, this list of conditions and the following disclaimer in the
24*3ac0a46fSAndroid Build Coastguard Worker  *    documentation and/or other materials provided with the distribution.
25*3ac0a46fSAndroid Build Coastguard Worker  *
26*3ac0a46fSAndroid Build Coastguard Worker  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
27*3ac0a46fSAndroid Build Coastguard Worker  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28*3ac0a46fSAndroid Build Coastguard Worker  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
29*3ac0a46fSAndroid Build Coastguard Worker  * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
30*3ac0a46fSAndroid Build Coastguard Worker  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
31*3ac0a46fSAndroid Build Coastguard Worker  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
32*3ac0a46fSAndroid Build Coastguard Worker  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
33*3ac0a46fSAndroid Build Coastguard Worker  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
34*3ac0a46fSAndroid Build Coastguard Worker  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
35*3ac0a46fSAndroid Build Coastguard Worker  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
36*3ac0a46fSAndroid Build Coastguard Worker  * POSSIBILITY OF SUCH DAMAGE.
37*3ac0a46fSAndroid Build Coastguard Worker  */
38*3ac0a46fSAndroid Build Coastguard Worker 
39*3ac0a46fSAndroid Build Coastguard Worker #ifndef OPJ_MQC_H
40*3ac0a46fSAndroid Build Coastguard Worker #define OPJ_MQC_H
41*3ac0a46fSAndroid Build Coastguard Worker 
42*3ac0a46fSAndroid Build Coastguard Worker #include "opj_common.h"
43*3ac0a46fSAndroid Build Coastguard Worker 
44*3ac0a46fSAndroid Build Coastguard Worker /**
45*3ac0a46fSAndroid Build Coastguard Worker @file mqc.h
46*3ac0a46fSAndroid Build Coastguard Worker @brief Implementation of an MQ-Coder (MQC)
47*3ac0a46fSAndroid Build Coastguard Worker 
48*3ac0a46fSAndroid Build Coastguard Worker The functions in MQC.C have for goal to realize the MQ-coder operations. The functions
49*3ac0a46fSAndroid Build Coastguard Worker in MQC.C are used by some function in T1.C.
50*3ac0a46fSAndroid Build Coastguard Worker */
51*3ac0a46fSAndroid Build Coastguard Worker 
52*3ac0a46fSAndroid Build Coastguard Worker /** @defgroup MQC MQC - Implementation of an MQ-Coder */
53*3ac0a46fSAndroid Build Coastguard Worker /*@{*/
54*3ac0a46fSAndroid Build Coastguard Worker 
55*3ac0a46fSAndroid Build Coastguard Worker /**
56*3ac0a46fSAndroid Build Coastguard Worker This struct defines the state of a context.
57*3ac0a46fSAndroid Build Coastguard Worker */
58*3ac0a46fSAndroid Build Coastguard Worker typedef struct opj_mqc_state {
59*3ac0a46fSAndroid Build Coastguard Worker     /** the probability of the Least Probable Symbol (0.75->0x8000, 1.5->0xffff) */
60*3ac0a46fSAndroid Build Coastguard Worker     OPJ_UINT32 qeval;
61*3ac0a46fSAndroid Build Coastguard Worker     /** the Most Probable Symbol (0 or 1) */
62*3ac0a46fSAndroid Build Coastguard Worker     OPJ_UINT32 mps;
63*3ac0a46fSAndroid Build Coastguard Worker     /** next state if the next encoded symbol is the MPS */
64*3ac0a46fSAndroid Build Coastguard Worker     const struct opj_mqc_state *nmps;
65*3ac0a46fSAndroid Build Coastguard Worker     /** next state if the next encoded symbol is the LPS */
66*3ac0a46fSAndroid Build Coastguard Worker     const struct opj_mqc_state *nlps;
67*3ac0a46fSAndroid Build Coastguard Worker } opj_mqc_state_t;
68*3ac0a46fSAndroid Build Coastguard Worker 
69*3ac0a46fSAndroid Build Coastguard Worker #define MQC_NUMCTXS 19
70*3ac0a46fSAndroid Build Coastguard Worker 
71*3ac0a46fSAndroid Build Coastguard Worker /**
72*3ac0a46fSAndroid Build Coastguard Worker MQ coder
73*3ac0a46fSAndroid Build Coastguard Worker */
74*3ac0a46fSAndroid Build Coastguard Worker typedef struct opj_mqc {
75*3ac0a46fSAndroid Build Coastguard Worker     /** temporary buffer where bits are coded or decoded */
76*3ac0a46fSAndroid Build Coastguard Worker     OPJ_UINT32 c;
77*3ac0a46fSAndroid Build Coastguard Worker     /** only used by MQ decoder */
78*3ac0a46fSAndroid Build Coastguard Worker     OPJ_UINT32 a;
79*3ac0a46fSAndroid Build Coastguard Worker     /** number of bits already read or free to write */
80*3ac0a46fSAndroid Build Coastguard Worker     OPJ_UINT32 ct;
81*3ac0a46fSAndroid Build Coastguard Worker     /* only used by decoder, to count the number of times a terminating 0xFF >0x8F marker is read */
82*3ac0a46fSAndroid Build Coastguard Worker     OPJ_UINT32 end_of_byte_stream_counter;
83*3ac0a46fSAndroid Build Coastguard Worker     /** pointer to the current position in the buffer */
84*3ac0a46fSAndroid Build Coastguard Worker     OPJ_BYTE *bp;
85*3ac0a46fSAndroid Build Coastguard Worker     /** pointer to the start of the buffer */
86*3ac0a46fSAndroid Build Coastguard Worker     OPJ_BYTE *start;
87*3ac0a46fSAndroid Build Coastguard Worker     /** pointer to the end of the buffer */
88*3ac0a46fSAndroid Build Coastguard Worker     OPJ_BYTE *end;
89*3ac0a46fSAndroid Build Coastguard Worker     /** Array of contexts */
90*3ac0a46fSAndroid Build Coastguard Worker     const opj_mqc_state_t *ctxs[MQC_NUMCTXS];
91*3ac0a46fSAndroid Build Coastguard Worker     /** Active context */
92*3ac0a46fSAndroid Build Coastguard Worker     const opj_mqc_state_t **curctx;
93*3ac0a46fSAndroid Build Coastguard Worker     /* lut_ctxno_zc shifted by (1 << 9) * bandno */
94*3ac0a46fSAndroid Build Coastguard Worker     const OPJ_BYTE* lut_ctxno_zc_orient;
95*3ac0a46fSAndroid Build Coastguard Worker     /** Original value of the 2 bytes at end[0] and end[1] */
96*3ac0a46fSAndroid Build Coastguard Worker     OPJ_BYTE backup[OPJ_COMMON_CBLK_DATA_EXTRA];
97*3ac0a46fSAndroid Build Coastguard Worker } opj_mqc_t;
98*3ac0a46fSAndroid Build Coastguard Worker 
99*3ac0a46fSAndroid Build Coastguard Worker #define BYPASS_CT_INIT  0xDEADBEEF
100*3ac0a46fSAndroid Build Coastguard Worker 
101*3ac0a46fSAndroid Build Coastguard Worker #include "mqc_inl.h"
102*3ac0a46fSAndroid Build Coastguard Worker 
103*3ac0a46fSAndroid Build Coastguard Worker /** @name Exported functions */
104*3ac0a46fSAndroid Build Coastguard Worker /*@{*/
105*3ac0a46fSAndroid Build Coastguard Worker /* ----------------------------------------------------------------------- */
106*3ac0a46fSAndroid Build Coastguard Worker 
107*3ac0a46fSAndroid Build Coastguard Worker /**
108*3ac0a46fSAndroid Build Coastguard Worker Return the number of bytes written/read since initialisation
109*3ac0a46fSAndroid Build Coastguard Worker @param mqc MQC handle
110*3ac0a46fSAndroid Build Coastguard Worker @return Returns the number of bytes already encoded
111*3ac0a46fSAndroid Build Coastguard Worker */
112*3ac0a46fSAndroid Build Coastguard Worker OPJ_UINT32 opj_mqc_numbytes(opj_mqc_t *mqc);
113*3ac0a46fSAndroid Build Coastguard Worker /**
114*3ac0a46fSAndroid Build Coastguard Worker Reset the states of all the context of the coder/decoder
115*3ac0a46fSAndroid Build Coastguard Worker (each context is set to a state where 0 and 1 are more or less equiprobable)
116*3ac0a46fSAndroid Build Coastguard Worker @param mqc MQC handle
117*3ac0a46fSAndroid Build Coastguard Worker */
118*3ac0a46fSAndroid Build Coastguard Worker void opj_mqc_resetstates(opj_mqc_t *mqc);
119*3ac0a46fSAndroid Build Coastguard Worker /**
120*3ac0a46fSAndroid Build Coastguard Worker Set the state of a particular context
121*3ac0a46fSAndroid Build Coastguard Worker @param mqc MQC handle
122*3ac0a46fSAndroid Build Coastguard Worker @param ctxno Number that identifies the context
123*3ac0a46fSAndroid Build Coastguard Worker @param msb The MSB of the new state of the context
124*3ac0a46fSAndroid Build Coastguard Worker @param prob Number that identifies the probability of the symbols for the new state of the context
125*3ac0a46fSAndroid Build Coastguard Worker */
126*3ac0a46fSAndroid Build Coastguard Worker void opj_mqc_setstate(opj_mqc_t *mqc, OPJ_UINT32 ctxno, OPJ_UINT32 msb,
127*3ac0a46fSAndroid Build Coastguard Worker                       OPJ_INT32 prob);
128*3ac0a46fSAndroid Build Coastguard Worker /**
129*3ac0a46fSAndroid Build Coastguard Worker Initialize the encoder
130*3ac0a46fSAndroid Build Coastguard Worker @param mqc MQC handle
131*3ac0a46fSAndroid Build Coastguard Worker @param bp Pointer to the start of the buffer where the bytes will be written
132*3ac0a46fSAndroid Build Coastguard Worker */
133*3ac0a46fSAndroid Build Coastguard Worker void opj_mqc_init_enc(opj_mqc_t *mqc, OPJ_BYTE *bp);
134*3ac0a46fSAndroid Build Coastguard Worker /**
135*3ac0a46fSAndroid Build Coastguard Worker Set the current context used for coding/decoding
136*3ac0a46fSAndroid Build Coastguard Worker @param mqc MQC handle
137*3ac0a46fSAndroid Build Coastguard Worker @param ctxno Number that identifies the context
138*3ac0a46fSAndroid Build Coastguard Worker */
139*3ac0a46fSAndroid Build Coastguard Worker #define opj_mqc_setcurctx(mqc, ctxno)   (mqc)->curctx = &(mqc)->ctxs[(OPJ_UINT32)(ctxno)]
140*3ac0a46fSAndroid Build Coastguard Worker 
141*3ac0a46fSAndroid Build Coastguard Worker /**
142*3ac0a46fSAndroid Build Coastguard Worker Flush the encoder, so that all remaining data is written
143*3ac0a46fSAndroid Build Coastguard Worker @param mqc MQC handle
144*3ac0a46fSAndroid Build Coastguard Worker */
145*3ac0a46fSAndroid Build Coastguard Worker void opj_mqc_flush(opj_mqc_t *mqc);
146*3ac0a46fSAndroid Build Coastguard Worker /**
147*3ac0a46fSAndroid Build Coastguard Worker BYPASS mode switch, initialization operation.
148*3ac0a46fSAndroid Build Coastguard Worker JPEG 2000 p 505.
149*3ac0a46fSAndroid Build Coastguard Worker @param mqc MQC handle
150*3ac0a46fSAndroid Build Coastguard Worker */
151*3ac0a46fSAndroid Build Coastguard Worker void opj_mqc_bypass_init_enc(opj_mqc_t *mqc);
152*3ac0a46fSAndroid Build Coastguard Worker 
153*3ac0a46fSAndroid Build Coastguard Worker /** Return number of extra bytes to add to opj_mqc_numbytes() for the²
154*3ac0a46fSAndroid Build Coastguard Worker     size of a non-terminating BYPASS pass
155*3ac0a46fSAndroid Build Coastguard Worker @param mqc MQC handle
156*3ac0a46fSAndroid Build Coastguard Worker @param erterm 1 if ERTERM is enabled, 0 otherwise
157*3ac0a46fSAndroid Build Coastguard Worker */
158*3ac0a46fSAndroid Build Coastguard Worker OPJ_UINT32 opj_mqc_bypass_get_extra_bytes(opj_mqc_t *mqc, OPJ_BOOL erterm);
159*3ac0a46fSAndroid Build Coastguard Worker 
160*3ac0a46fSAndroid Build Coastguard Worker /**
161*3ac0a46fSAndroid Build Coastguard Worker BYPASS mode switch, coding operation.
162*3ac0a46fSAndroid Build Coastguard Worker JPEG 2000 p 505.
163*3ac0a46fSAndroid Build Coastguard Worker @param mqc MQC handle
164*3ac0a46fSAndroid Build Coastguard Worker @param d The symbol to be encoded (0 or 1)
165*3ac0a46fSAndroid Build Coastguard Worker */
166*3ac0a46fSAndroid Build Coastguard Worker void opj_mqc_bypass_enc(opj_mqc_t *mqc, OPJ_UINT32 d);
167*3ac0a46fSAndroid Build Coastguard Worker /**
168*3ac0a46fSAndroid Build Coastguard Worker BYPASS mode switch, flush operation
169*3ac0a46fSAndroid Build Coastguard Worker @param mqc MQC handle
170*3ac0a46fSAndroid Build Coastguard Worker @param erterm 1 if ERTERM is enabled, 0 otherwise
171*3ac0a46fSAndroid Build Coastguard Worker */
172*3ac0a46fSAndroid Build Coastguard Worker void opj_mqc_bypass_flush_enc(opj_mqc_t *mqc, OPJ_BOOL erterm);
173*3ac0a46fSAndroid Build Coastguard Worker /**
174*3ac0a46fSAndroid Build Coastguard Worker RESET mode switch
175*3ac0a46fSAndroid Build Coastguard Worker @param mqc MQC handle
176*3ac0a46fSAndroid Build Coastguard Worker */
177*3ac0a46fSAndroid Build Coastguard Worker void opj_mqc_reset_enc(opj_mqc_t *mqc);
178*3ac0a46fSAndroid Build Coastguard Worker 
179*3ac0a46fSAndroid Build Coastguard Worker #ifdef notdef
180*3ac0a46fSAndroid Build Coastguard Worker /**
181*3ac0a46fSAndroid Build Coastguard Worker RESTART mode switch (TERMALL)
182*3ac0a46fSAndroid Build Coastguard Worker @param mqc MQC handle
183*3ac0a46fSAndroid Build Coastguard Worker @return Returns 1 (always)
184*3ac0a46fSAndroid Build Coastguard Worker */
185*3ac0a46fSAndroid Build Coastguard Worker OPJ_UINT32 opj_mqc_restart_enc(opj_mqc_t *mqc);
186*3ac0a46fSAndroid Build Coastguard Worker #endif
187*3ac0a46fSAndroid Build Coastguard Worker 
188*3ac0a46fSAndroid Build Coastguard Worker /**
189*3ac0a46fSAndroid Build Coastguard Worker RESTART mode switch (TERMALL) reinitialisation
190*3ac0a46fSAndroid Build Coastguard Worker @param mqc MQC handle
191*3ac0a46fSAndroid Build Coastguard Worker */
192*3ac0a46fSAndroid Build Coastguard Worker void opj_mqc_restart_init_enc(opj_mqc_t *mqc);
193*3ac0a46fSAndroid Build Coastguard Worker /**
194*3ac0a46fSAndroid Build Coastguard Worker ERTERM mode switch (PTERM)
195*3ac0a46fSAndroid Build Coastguard Worker @param mqc MQC handle
196*3ac0a46fSAndroid Build Coastguard Worker */
197*3ac0a46fSAndroid Build Coastguard Worker void opj_mqc_erterm_enc(opj_mqc_t *mqc);
198*3ac0a46fSAndroid Build Coastguard Worker /**
199*3ac0a46fSAndroid Build Coastguard Worker SEGMARK mode switch (SEGSYM)
200*3ac0a46fSAndroid Build Coastguard Worker @param mqc MQC handle
201*3ac0a46fSAndroid Build Coastguard Worker */
202*3ac0a46fSAndroid Build Coastguard Worker void opj_mqc_segmark_enc(opj_mqc_t *mqc);
203*3ac0a46fSAndroid Build Coastguard Worker 
204*3ac0a46fSAndroid Build Coastguard Worker /**
205*3ac0a46fSAndroid Build Coastguard Worker Initialize the decoder for MQ decoding.
206*3ac0a46fSAndroid Build Coastguard Worker 
207*3ac0a46fSAndroid Build Coastguard Worker opj_mqc_finish_dec() must be absolutely called after finishing the decoding
208*3ac0a46fSAndroid Build Coastguard Worker passes, so as to restore the bytes temporarily overwritten.
209*3ac0a46fSAndroid Build Coastguard Worker 
210*3ac0a46fSAndroid Build Coastguard Worker @param mqc MQC handle
211*3ac0a46fSAndroid Build Coastguard Worker @param bp Pointer to the start of the buffer from which the bytes will be read
212*3ac0a46fSAndroid Build Coastguard Worker           Note that OPJ_COMMON_CBLK_DATA_EXTRA bytes at the end of the buffer
213*3ac0a46fSAndroid Build Coastguard Worker           will be temporarily overwritten with an artificial 0xFF 0xFF marker.
214*3ac0a46fSAndroid Build Coastguard Worker           (they will be backuped in the mqc structure to be restored later)
215*3ac0a46fSAndroid Build Coastguard Worker           So bp must be at least len + OPJ_COMMON_CBLK_DATA_EXTRA large, and
216*3ac0a46fSAndroid Build Coastguard Worker           writable.
217*3ac0a46fSAndroid Build Coastguard Worker @param len Length of the input buffer
218*3ac0a46fSAndroid Build Coastguard Worker @param extra_writable_bytes Indicate how many bytes after len are writable.
219*3ac0a46fSAndroid Build Coastguard Worker                             This is to indicate your consent that bp must be
220*3ac0a46fSAndroid Build Coastguard Worker                             large enough.
221*3ac0a46fSAndroid Build Coastguard Worker */
222*3ac0a46fSAndroid Build Coastguard Worker void opj_mqc_init_dec(opj_mqc_t *mqc, OPJ_BYTE *bp, OPJ_UINT32 len,
223*3ac0a46fSAndroid Build Coastguard Worker                       OPJ_UINT32 extra_writable_bytes);
224*3ac0a46fSAndroid Build Coastguard Worker 
225*3ac0a46fSAndroid Build Coastguard Worker /**
226*3ac0a46fSAndroid Build Coastguard Worker Initialize the decoder for RAW decoding.
227*3ac0a46fSAndroid Build Coastguard Worker 
228*3ac0a46fSAndroid Build Coastguard Worker opj_mqc_finish_dec() must be absolutely called after finishing the decoding
229*3ac0a46fSAndroid Build Coastguard Worker passes, so as to restore the bytes temporarily overwritten.
230*3ac0a46fSAndroid Build Coastguard Worker 
231*3ac0a46fSAndroid Build Coastguard Worker @param mqc MQC handle
232*3ac0a46fSAndroid Build Coastguard Worker @param bp Pointer to the start of the buffer from which the bytes will be read
233*3ac0a46fSAndroid Build Coastguard Worker           Note that OPJ_COMMON_CBLK_DATA_EXTRA bytes at the end of the buffer
234*3ac0a46fSAndroid Build Coastguard Worker           will be temporarily overwritten with an artificial 0xFF 0xFF marker.
235*3ac0a46fSAndroid Build Coastguard Worker           (they will be backuped in the mqc structure to be restored later)
236*3ac0a46fSAndroid Build Coastguard Worker           So bp must be at least len + OPJ_COMMON_CBLK_DATA_EXTRA large, and
237*3ac0a46fSAndroid Build Coastguard Worker           writable.
238*3ac0a46fSAndroid Build Coastguard Worker @param len Length of the input buffer
239*3ac0a46fSAndroid Build Coastguard Worker @param extra_writable_bytes Indicate how many bytes after len are writable.
240*3ac0a46fSAndroid Build Coastguard Worker                             This is to indicate your consent that bp must be
241*3ac0a46fSAndroid Build Coastguard Worker                             large enough.
242*3ac0a46fSAndroid Build Coastguard Worker */
243*3ac0a46fSAndroid Build Coastguard Worker void opj_mqc_raw_init_dec(opj_mqc_t *mqc, OPJ_BYTE *bp, OPJ_UINT32 len,
244*3ac0a46fSAndroid Build Coastguard Worker                           OPJ_UINT32 extra_writable_bytes);
245*3ac0a46fSAndroid Build Coastguard Worker 
246*3ac0a46fSAndroid Build Coastguard Worker 
247*3ac0a46fSAndroid Build Coastguard Worker /**
248*3ac0a46fSAndroid Build Coastguard Worker Terminate RAW/MQC decoding
249*3ac0a46fSAndroid Build Coastguard Worker 
250*3ac0a46fSAndroid Build Coastguard Worker This restores the bytes temporarily overwritten by opj_mqc_init_dec()/
251*3ac0a46fSAndroid Build Coastguard Worker opj_mqc_raw_init_dec()
252*3ac0a46fSAndroid Build Coastguard Worker 
253*3ac0a46fSAndroid Build Coastguard Worker @param mqc MQC handle
254*3ac0a46fSAndroid Build Coastguard Worker */
255*3ac0a46fSAndroid Build Coastguard Worker void opq_mqc_finish_dec(opj_mqc_t *mqc);
256*3ac0a46fSAndroid Build Coastguard Worker 
257*3ac0a46fSAndroid Build Coastguard Worker /**
258*3ac0a46fSAndroid Build Coastguard Worker Decode a symbol
259*3ac0a46fSAndroid Build Coastguard Worker @param mqc MQC handle
260*3ac0a46fSAndroid Build Coastguard Worker @return Returns the decoded symbol (0 or 1)
261*3ac0a46fSAndroid Build Coastguard Worker */
262*3ac0a46fSAndroid Build Coastguard Worker /*static INLINE OPJ_UINT32 opj_mqc_decode(opj_mqc_t * const mqc);*/
263*3ac0a46fSAndroid Build Coastguard Worker /* ----------------------------------------------------------------------- */
264*3ac0a46fSAndroid Build Coastguard Worker /*@}*/
265*3ac0a46fSAndroid Build Coastguard Worker 
266*3ac0a46fSAndroid Build Coastguard Worker /*@}*/
267*3ac0a46fSAndroid Build Coastguard Worker 
268*3ac0a46fSAndroid Build Coastguard Worker #endif /* OPJ_MQC_H */
269