xref: /aosp_15_r20/external/pdfium/third_party/libopenjpeg/t1.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) 2012, Carl Hetherington
15*3ac0a46fSAndroid Build Coastguard Worker  * Copyright (c) 2017, IntoPIX SA <[email protected]>
16*3ac0a46fSAndroid Build Coastguard Worker  * All rights reserved.
17*3ac0a46fSAndroid Build Coastguard Worker  *
18*3ac0a46fSAndroid Build Coastguard Worker  * Redistribution and use in source and binary forms, with or without
19*3ac0a46fSAndroid Build Coastguard Worker  * modification, are permitted provided that the following conditions
20*3ac0a46fSAndroid Build Coastguard Worker  * are met:
21*3ac0a46fSAndroid Build Coastguard Worker  * 1. Redistributions of source code must retain the above copyright
22*3ac0a46fSAndroid Build Coastguard Worker  *    notice, this list of conditions and the following disclaimer.
23*3ac0a46fSAndroid Build Coastguard Worker  * 2. Redistributions in binary form must reproduce the above copyright
24*3ac0a46fSAndroid Build Coastguard Worker  *    notice, this list of conditions and the following disclaimer in the
25*3ac0a46fSAndroid Build Coastguard Worker  *    documentation and/or other materials provided with the distribution.
26*3ac0a46fSAndroid Build Coastguard Worker  *
27*3ac0a46fSAndroid Build Coastguard Worker  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
28*3ac0a46fSAndroid Build Coastguard Worker  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
29*3ac0a46fSAndroid Build Coastguard Worker  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
30*3ac0a46fSAndroid Build Coastguard Worker  * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
31*3ac0a46fSAndroid Build Coastguard Worker  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
32*3ac0a46fSAndroid Build Coastguard Worker  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
33*3ac0a46fSAndroid Build Coastguard Worker  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
34*3ac0a46fSAndroid Build Coastguard Worker  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
35*3ac0a46fSAndroid Build Coastguard Worker  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
36*3ac0a46fSAndroid Build Coastguard Worker  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
37*3ac0a46fSAndroid Build Coastguard Worker  * POSSIBILITY OF SUCH DAMAGE.
38*3ac0a46fSAndroid Build Coastguard Worker  */
39*3ac0a46fSAndroid Build Coastguard Worker #ifndef OPJ_T1_H
40*3ac0a46fSAndroid Build Coastguard Worker #define OPJ_T1_H
41*3ac0a46fSAndroid Build Coastguard Worker /**
42*3ac0a46fSAndroid Build Coastguard Worker @file t1.h
43*3ac0a46fSAndroid Build Coastguard Worker @brief Implementation of the tier-1 coding (coding of code-block coefficients) (T1)
44*3ac0a46fSAndroid Build Coastguard Worker 
45*3ac0a46fSAndroid Build Coastguard Worker The functions in T1.C have for goal to realize the tier-1 coding operation. The functions
46*3ac0a46fSAndroid Build Coastguard Worker in T1.C are used by some function in TCD.C.
47*3ac0a46fSAndroid Build Coastguard Worker */
48*3ac0a46fSAndroid Build Coastguard Worker 
49*3ac0a46fSAndroid Build Coastguard Worker /** @defgroup T1 T1 - Implementation of the tier-1 coding */
50*3ac0a46fSAndroid Build Coastguard Worker /*@{*/
51*3ac0a46fSAndroid Build Coastguard Worker 
52*3ac0a46fSAndroid Build Coastguard Worker /* ----------------------------------------------------------------------- */
53*3ac0a46fSAndroid Build Coastguard Worker #define T1_NMSEDEC_BITS 7
54*3ac0a46fSAndroid Build Coastguard Worker 
55*3ac0a46fSAndroid Build Coastguard Worker #define T1_NUMCTXS_ZC  9
56*3ac0a46fSAndroid Build Coastguard Worker #define T1_NUMCTXS_SC  5
57*3ac0a46fSAndroid Build Coastguard Worker #define T1_NUMCTXS_MAG 3
58*3ac0a46fSAndroid Build Coastguard Worker #define T1_NUMCTXS_AGG 1
59*3ac0a46fSAndroid Build Coastguard Worker #define T1_NUMCTXS_UNI 1
60*3ac0a46fSAndroid Build Coastguard Worker 
61*3ac0a46fSAndroid Build Coastguard Worker #define T1_CTXNO_ZC  0
62*3ac0a46fSAndroid Build Coastguard Worker #define T1_CTXNO_SC  (T1_CTXNO_ZC+T1_NUMCTXS_ZC)
63*3ac0a46fSAndroid Build Coastguard Worker #define T1_CTXNO_MAG (T1_CTXNO_SC+T1_NUMCTXS_SC)
64*3ac0a46fSAndroid Build Coastguard Worker #define T1_CTXNO_AGG (T1_CTXNO_MAG+T1_NUMCTXS_MAG)
65*3ac0a46fSAndroid Build Coastguard Worker #define T1_CTXNO_UNI (T1_CTXNO_AGG+T1_NUMCTXS_AGG)
66*3ac0a46fSAndroid Build Coastguard Worker #define T1_NUMCTXS   (T1_CTXNO_UNI+T1_NUMCTXS_UNI)
67*3ac0a46fSAndroid Build Coastguard Worker 
68*3ac0a46fSAndroid Build Coastguard Worker #define T1_NMSEDEC_FRACBITS (T1_NMSEDEC_BITS-1)
69*3ac0a46fSAndroid Build Coastguard Worker 
70*3ac0a46fSAndroid Build Coastguard Worker #define T1_TYPE_MQ 0    /**< Normal coding using entropy coder */
71*3ac0a46fSAndroid Build Coastguard Worker #define T1_TYPE_RAW 1   /**< No encoding the information is store under raw format in codestream (mode switch RAW)*/
72*3ac0a46fSAndroid Build Coastguard Worker 
73*3ac0a46fSAndroid Build Coastguard Worker /* BEGINNING of flags that apply to opj_flag_t */
74*3ac0a46fSAndroid Build Coastguard Worker /** We hold the state of individual data points for the T1 encoder using
75*3ac0a46fSAndroid Build Coastguard Worker  *  a single 32-bit flags word to hold the state of 4 data points.  This corresponds
76*3ac0a46fSAndroid Build Coastguard Worker  *  to the 4-point-high columns that the data is processed in.
77*3ac0a46fSAndroid Build Coastguard Worker  *
78*3ac0a46fSAndroid Build Coastguard Worker  *  These \#defines declare the layout of a 32-bit flags word.
79*3ac0a46fSAndroid Build Coastguard Worker  *
80*3ac0a46fSAndroid Build Coastguard Worker  *  This is currently done for encoding only.
81*3ac0a46fSAndroid Build Coastguard Worker  *  The values must NOT be changed, otherwise this is going to break a lot of
82*3ac0a46fSAndroid Build Coastguard Worker  *  assumptions.
83*3ac0a46fSAndroid Build Coastguard Worker  */
84*3ac0a46fSAndroid Build Coastguard Worker 
85*3ac0a46fSAndroid Build Coastguard Worker /* SIGMA: significance state (3 cols x 6 rows)
86*3ac0a46fSAndroid Build Coastguard Worker  * CHI:   state for negative sample value (1 col x 6 rows)
87*3ac0a46fSAndroid Build Coastguard Worker  * MU:    state for visited in refinement pass (1 col x 4 rows)
88*3ac0a46fSAndroid Build Coastguard Worker  * PI:    state for visited in significance pass (1 col * 4 rows)
89*3ac0a46fSAndroid Build Coastguard Worker  */
90*3ac0a46fSAndroid Build Coastguard Worker 
91*3ac0a46fSAndroid Build Coastguard Worker #define T1_SIGMA_0  (1U << 0)
92*3ac0a46fSAndroid Build Coastguard Worker #define T1_SIGMA_1  (1U << 1)
93*3ac0a46fSAndroid Build Coastguard Worker #define T1_SIGMA_2  (1U << 2)
94*3ac0a46fSAndroid Build Coastguard Worker #define T1_SIGMA_3  (1U << 3)
95*3ac0a46fSAndroid Build Coastguard Worker #define T1_SIGMA_4  (1U << 4)
96*3ac0a46fSAndroid Build Coastguard Worker #define T1_SIGMA_5  (1U << 5)
97*3ac0a46fSAndroid Build Coastguard Worker #define T1_SIGMA_6  (1U << 6)
98*3ac0a46fSAndroid Build Coastguard Worker #define T1_SIGMA_7  (1U << 7)
99*3ac0a46fSAndroid Build Coastguard Worker #define T1_SIGMA_8  (1U << 8)
100*3ac0a46fSAndroid Build Coastguard Worker #define T1_SIGMA_9  (1U << 9)
101*3ac0a46fSAndroid Build Coastguard Worker #define T1_SIGMA_10 (1U << 10)
102*3ac0a46fSAndroid Build Coastguard Worker #define T1_SIGMA_11 (1U << 11)
103*3ac0a46fSAndroid Build Coastguard Worker #define T1_SIGMA_12 (1U << 12)
104*3ac0a46fSAndroid Build Coastguard Worker #define T1_SIGMA_13 (1U << 13)
105*3ac0a46fSAndroid Build Coastguard Worker #define T1_SIGMA_14 (1U << 14)
106*3ac0a46fSAndroid Build Coastguard Worker #define T1_SIGMA_15 (1U << 15)
107*3ac0a46fSAndroid Build Coastguard Worker #define T1_SIGMA_16 (1U << 16)
108*3ac0a46fSAndroid Build Coastguard Worker #define T1_SIGMA_17 (1U << 17)
109*3ac0a46fSAndroid Build Coastguard Worker 
110*3ac0a46fSAndroid Build Coastguard Worker #define T1_CHI_0    (1U << 18)
111*3ac0a46fSAndroid Build Coastguard Worker #define T1_CHI_0_I  18
112*3ac0a46fSAndroid Build Coastguard Worker #define T1_CHI_1    (1U << 19)
113*3ac0a46fSAndroid Build Coastguard Worker #define T1_CHI_1_I  19
114*3ac0a46fSAndroid Build Coastguard Worker #define T1_MU_0     (1U << 20)
115*3ac0a46fSAndroid Build Coastguard Worker #define T1_PI_0     (1U << 21)
116*3ac0a46fSAndroid Build Coastguard Worker #define T1_CHI_2    (1U << 22)
117*3ac0a46fSAndroid Build Coastguard Worker #define T1_CHI_2_I  22
118*3ac0a46fSAndroid Build Coastguard Worker #define T1_MU_1     (1U << 23)
119*3ac0a46fSAndroid Build Coastguard Worker #define T1_PI_1     (1U << 24)
120*3ac0a46fSAndroid Build Coastguard Worker #define T1_CHI_3    (1U << 25)
121*3ac0a46fSAndroid Build Coastguard Worker #define T1_MU_2     (1U << 26)
122*3ac0a46fSAndroid Build Coastguard Worker #define T1_PI_2     (1U << 27)
123*3ac0a46fSAndroid Build Coastguard Worker #define T1_CHI_4    (1U << 28)
124*3ac0a46fSAndroid Build Coastguard Worker #define T1_MU_3     (1U << 29)
125*3ac0a46fSAndroid Build Coastguard Worker #define T1_PI_3     (1U << 30)
126*3ac0a46fSAndroid Build Coastguard Worker #define T1_CHI_5    (1U << 31)
127*3ac0a46fSAndroid Build Coastguard Worker #define T1_CHI_5_I  31
128*3ac0a46fSAndroid Build Coastguard Worker 
129*3ac0a46fSAndroid Build Coastguard Worker /** As an example, the bits T1_SIGMA_3, T1_SIGMA_4 and T1_SIGMA_5
130*3ac0a46fSAndroid Build Coastguard Worker  *  indicate the significance state of the west neighbour of data point zero
131*3ac0a46fSAndroid Build Coastguard Worker  *  of our four, the point itself, and its east neighbour respectively.
132*3ac0a46fSAndroid Build Coastguard Worker  *  Many of the bits are arranged so that given a flags word, you can
133*3ac0a46fSAndroid Build Coastguard Worker  *  look at the values for the data point 0, then shift the flags
134*3ac0a46fSAndroid Build Coastguard Worker  *  word right by 3 bits and look at the same bit positions to see the
135*3ac0a46fSAndroid Build Coastguard Worker  *  values for data point 1.
136*3ac0a46fSAndroid Build Coastguard Worker  *
137*3ac0a46fSAndroid Build Coastguard Worker  *  The \#defines below help a bit with this; say you have a flags word
138*3ac0a46fSAndroid Build Coastguard Worker  *  f, you can do things like
139*3ac0a46fSAndroid Build Coastguard Worker  *
140*3ac0a46fSAndroid Build Coastguard Worker  *  (f & T1_SIGMA_THIS)
141*3ac0a46fSAndroid Build Coastguard Worker  *
142*3ac0a46fSAndroid Build Coastguard Worker  *  to see the significance bit of data point 0, then do
143*3ac0a46fSAndroid Build Coastguard Worker  *
144*3ac0a46fSAndroid Build Coastguard Worker  *  ((f >> 3) & T1_SIGMA_THIS)
145*3ac0a46fSAndroid Build Coastguard Worker  *
146*3ac0a46fSAndroid Build Coastguard Worker  *  to see the significance bit of data point 1.
147*3ac0a46fSAndroid Build Coastguard Worker  */
148*3ac0a46fSAndroid Build Coastguard Worker 
149*3ac0a46fSAndroid Build Coastguard Worker #define T1_SIGMA_NW   T1_SIGMA_0
150*3ac0a46fSAndroid Build Coastguard Worker #define T1_SIGMA_N    T1_SIGMA_1
151*3ac0a46fSAndroid Build Coastguard Worker #define T1_SIGMA_NE   T1_SIGMA_2
152*3ac0a46fSAndroid Build Coastguard Worker #define T1_SIGMA_W    T1_SIGMA_3
153*3ac0a46fSAndroid Build Coastguard Worker #define T1_SIGMA_THIS T1_SIGMA_4
154*3ac0a46fSAndroid Build Coastguard Worker #define T1_SIGMA_E    T1_SIGMA_5
155*3ac0a46fSAndroid Build Coastguard Worker #define T1_SIGMA_SW   T1_SIGMA_6
156*3ac0a46fSAndroid Build Coastguard Worker #define T1_SIGMA_S    T1_SIGMA_7
157*3ac0a46fSAndroid Build Coastguard Worker #define T1_SIGMA_SE   T1_SIGMA_8
158*3ac0a46fSAndroid Build Coastguard Worker #define T1_SIGMA_NEIGHBOURS (T1_SIGMA_NW | T1_SIGMA_N | T1_SIGMA_NE | T1_SIGMA_W | T1_SIGMA_E | T1_SIGMA_SW | T1_SIGMA_S | T1_SIGMA_SE)
159*3ac0a46fSAndroid Build Coastguard Worker 
160*3ac0a46fSAndroid Build Coastguard Worker #define T1_CHI_THIS   T1_CHI_1
161*3ac0a46fSAndroid Build Coastguard Worker #define T1_CHI_THIS_I T1_CHI_1_I
162*3ac0a46fSAndroid Build Coastguard Worker #define T1_MU_THIS    T1_MU_0
163*3ac0a46fSAndroid Build Coastguard Worker #define T1_PI_THIS    T1_PI_0
164*3ac0a46fSAndroid Build Coastguard Worker #define T1_CHI_S      T1_CHI_2
165*3ac0a46fSAndroid Build Coastguard Worker 
166*3ac0a46fSAndroid Build Coastguard Worker #define T1_LUT_SGN_W (1U << 0)
167*3ac0a46fSAndroid Build Coastguard Worker #define T1_LUT_SIG_N (1U << 1)
168*3ac0a46fSAndroid Build Coastguard Worker #define T1_LUT_SGN_E (1U << 2)
169*3ac0a46fSAndroid Build Coastguard Worker #define T1_LUT_SIG_W (1U << 3)
170*3ac0a46fSAndroid Build Coastguard Worker #define T1_LUT_SGN_N (1U << 4)
171*3ac0a46fSAndroid Build Coastguard Worker #define T1_LUT_SIG_E (1U << 5)
172*3ac0a46fSAndroid Build Coastguard Worker #define T1_LUT_SGN_S (1U << 6)
173*3ac0a46fSAndroid Build Coastguard Worker #define T1_LUT_SIG_S (1U << 7)
174*3ac0a46fSAndroid Build Coastguard Worker /* END of flags that apply to opj_flag_t */
175*3ac0a46fSAndroid Build Coastguard Worker 
176*3ac0a46fSAndroid Build Coastguard Worker /* ----------------------------------------------------------------------- */
177*3ac0a46fSAndroid Build Coastguard Worker 
178*3ac0a46fSAndroid Build Coastguard Worker /** Flags for 4 consecutive rows of a column */
179*3ac0a46fSAndroid Build Coastguard Worker typedef OPJ_UINT32 opj_flag_t;
180*3ac0a46fSAndroid Build Coastguard Worker 
181*3ac0a46fSAndroid Build Coastguard Worker /**
182*3ac0a46fSAndroid Build Coastguard Worker Tier-1 coding (coding of code-block coefficients)
183*3ac0a46fSAndroid Build Coastguard Worker */
184*3ac0a46fSAndroid Build Coastguard Worker typedef struct opj_t1 {
185*3ac0a46fSAndroid Build Coastguard Worker 
186*3ac0a46fSAndroid Build Coastguard Worker     /** MQC component */
187*3ac0a46fSAndroid Build Coastguard Worker     opj_mqc_t mqc;
188*3ac0a46fSAndroid Build Coastguard Worker 
189*3ac0a46fSAndroid Build Coastguard Worker     OPJ_INT32  *data;
190*3ac0a46fSAndroid Build Coastguard Worker     /** Flags used by decoder and encoder.
191*3ac0a46fSAndroid Build Coastguard Worker      * Such that flags[1+0] is for state of col=0,row=0..3,
192*3ac0a46fSAndroid Build Coastguard Worker        flags[1+1] for col=1, row=0..3, flags[1+flags_stride] for col=0,row=4..7, ...
193*3ac0a46fSAndroid Build Coastguard Worker        This array avoids too much cache trashing when processing by 4 vertical samples
194*3ac0a46fSAndroid Build Coastguard Worker        as done in the various decoding steps. */
195*3ac0a46fSAndroid Build Coastguard Worker     opj_flag_t *flags;
196*3ac0a46fSAndroid Build Coastguard Worker 
197*3ac0a46fSAndroid Build Coastguard Worker     OPJ_UINT32 w;
198*3ac0a46fSAndroid Build Coastguard Worker     OPJ_UINT32 h;
199*3ac0a46fSAndroid Build Coastguard Worker     OPJ_UINT32 datasize;
200*3ac0a46fSAndroid Build Coastguard Worker     OPJ_UINT32 flagssize;
201*3ac0a46fSAndroid Build Coastguard Worker     OPJ_BOOL   encoder;
202*3ac0a46fSAndroid Build Coastguard Worker 
203*3ac0a46fSAndroid Build Coastguard Worker     /* The 3 variables below are only used by the decoder */
204*3ac0a46fSAndroid Build Coastguard Worker     /* set to TRUE in multithreaded context */
205*3ac0a46fSAndroid Build Coastguard Worker     OPJ_BOOL     mustuse_cblkdatabuffer;
206*3ac0a46fSAndroid Build Coastguard Worker     /* Temporary buffer to concatenate all chunks of a codebock */
207*3ac0a46fSAndroid Build Coastguard Worker     OPJ_BYTE    *cblkdatabuffer;
208*3ac0a46fSAndroid Build Coastguard Worker     /* Maximum size available in cblkdatabuffer */
209*3ac0a46fSAndroid Build Coastguard Worker     OPJ_UINT32   cblkdatabuffersize;
210*3ac0a46fSAndroid Build Coastguard Worker } opj_t1_t;
211*3ac0a46fSAndroid Build Coastguard Worker 
212*3ac0a46fSAndroid Build Coastguard Worker /** @name Exported functions */
213*3ac0a46fSAndroid Build Coastguard Worker /*@{*/
214*3ac0a46fSAndroid Build Coastguard Worker /* ----------------------------------------------------------------------- */
215*3ac0a46fSAndroid Build Coastguard Worker 
216*3ac0a46fSAndroid Build Coastguard Worker /**
217*3ac0a46fSAndroid Build Coastguard Worker Encode the code-blocks of a tile
218*3ac0a46fSAndroid Build Coastguard Worker @param tcd TCD handle
219*3ac0a46fSAndroid Build Coastguard Worker @param tile The tile to encode
220*3ac0a46fSAndroid Build Coastguard Worker @param tcp Tile coding parameters
221*3ac0a46fSAndroid Build Coastguard Worker @param mct_norms  FIXME DOC
222*3ac0a46fSAndroid Build Coastguard Worker @param mct_numcomps Number of components used for MCT
223*3ac0a46fSAndroid Build Coastguard Worker */
224*3ac0a46fSAndroid Build Coastguard Worker OPJ_BOOL opj_t1_encode_cblks(opj_tcd_t* tcd,
225*3ac0a46fSAndroid Build Coastguard Worker                              opj_tcd_tile_t *tile,
226*3ac0a46fSAndroid Build Coastguard Worker                              opj_tcp_t *tcp,
227*3ac0a46fSAndroid Build Coastguard Worker                              const OPJ_FLOAT64 * mct_norms,
228*3ac0a46fSAndroid Build Coastguard Worker                              OPJ_UINT32 mct_numcomps);
229*3ac0a46fSAndroid Build Coastguard Worker 
230*3ac0a46fSAndroid Build Coastguard Worker /**
231*3ac0a46fSAndroid Build Coastguard Worker Decode the code-blocks of a tile
232*3ac0a46fSAndroid Build Coastguard Worker @param tcd TCD handle
233*3ac0a46fSAndroid Build Coastguard Worker @param pret Pointer to return value
234*3ac0a46fSAndroid Build Coastguard Worker @param tilec The tile to decode
235*3ac0a46fSAndroid Build Coastguard Worker @param tccp Tile coding parameters
236*3ac0a46fSAndroid Build Coastguard Worker @param p_manager the event manager
237*3ac0a46fSAndroid Build Coastguard Worker @param p_manager_mutex mutex for the event manager
238*3ac0a46fSAndroid Build Coastguard Worker @param check_pterm whether PTERM correct termination should be checked
239*3ac0a46fSAndroid Build Coastguard Worker */
240*3ac0a46fSAndroid Build Coastguard Worker void opj_t1_decode_cblks(opj_tcd_t* tcd,
241*3ac0a46fSAndroid Build Coastguard Worker                          volatile OPJ_BOOL* pret,
242*3ac0a46fSAndroid Build Coastguard Worker                          opj_tcd_tilecomp_t* tilec,
243*3ac0a46fSAndroid Build Coastguard Worker                          opj_tccp_t* tccp,
244*3ac0a46fSAndroid Build Coastguard Worker                          opj_event_mgr_t *p_manager,
245*3ac0a46fSAndroid Build Coastguard Worker                          opj_mutex_t* p_manager_mutex,
246*3ac0a46fSAndroid Build Coastguard Worker                          OPJ_BOOL check_pterm);
247*3ac0a46fSAndroid Build Coastguard Worker 
248*3ac0a46fSAndroid Build Coastguard Worker 
249*3ac0a46fSAndroid Build Coastguard Worker 
250*3ac0a46fSAndroid Build Coastguard Worker /**
251*3ac0a46fSAndroid Build Coastguard Worker  * Creates a new Tier 1 handle
252*3ac0a46fSAndroid Build Coastguard Worker  * and initializes the look-up tables of the Tier-1 coder/decoder
253*3ac0a46fSAndroid Build Coastguard Worker  * @return a new T1 handle if successful, returns NULL otherwise
254*3ac0a46fSAndroid Build Coastguard Worker */
255*3ac0a46fSAndroid Build Coastguard Worker opj_t1_t* opj_t1_create(OPJ_BOOL isEncoder);
256*3ac0a46fSAndroid Build Coastguard Worker 
257*3ac0a46fSAndroid Build Coastguard Worker /**
258*3ac0a46fSAndroid Build Coastguard Worker  * Destroys a previously created T1 handle
259*3ac0a46fSAndroid Build Coastguard Worker  *
260*3ac0a46fSAndroid Build Coastguard Worker  * @param p_t1 Tier 1 handle to destroy
261*3ac0a46fSAndroid Build Coastguard Worker */
262*3ac0a46fSAndroid Build Coastguard Worker void opj_t1_destroy(opj_t1_t *p_t1);
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_T1_H */
269