xref: /aosp_15_r20/external/pdfium/third_party/libopenjpeg/jp2.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) 2002-2003, Yannick Verschueren
10*3ac0a46fSAndroid Build Coastguard Worker  * Copyright (c) 2005, Herve Drolon, FreeImage Team
11*3ac0a46fSAndroid Build Coastguard Worker  * Copyright (c) 2008, 2011-2012, Centre National d'Etudes Spatiales (CNES), FR
12*3ac0a46fSAndroid Build Coastguard Worker  * Copyright (c) 2012, CS Systemes d'Information, France
13*3ac0a46fSAndroid Build Coastguard Worker  * All rights reserved.
14*3ac0a46fSAndroid Build Coastguard Worker  *
15*3ac0a46fSAndroid Build Coastguard Worker  * Redistribution and use in source and binary forms, with or without
16*3ac0a46fSAndroid Build Coastguard Worker  * modification, are permitted provided that the following conditions
17*3ac0a46fSAndroid Build Coastguard Worker  * are met:
18*3ac0a46fSAndroid Build Coastguard Worker  * 1. Redistributions of source code must retain the above copyright
19*3ac0a46fSAndroid Build Coastguard Worker  *    notice, this list of conditions and the following disclaimer.
20*3ac0a46fSAndroid Build Coastguard Worker  * 2. Redistributions in binary form must reproduce the above copyright
21*3ac0a46fSAndroid Build Coastguard Worker  *    notice, this list of conditions and the following disclaimer in the
22*3ac0a46fSAndroid Build Coastguard Worker  *    documentation and/or other materials provided with the distribution.
23*3ac0a46fSAndroid Build Coastguard Worker  *
24*3ac0a46fSAndroid Build Coastguard Worker  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
25*3ac0a46fSAndroid Build Coastguard Worker  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26*3ac0a46fSAndroid Build Coastguard Worker  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27*3ac0a46fSAndroid Build Coastguard Worker  * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
28*3ac0a46fSAndroid Build Coastguard Worker  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
29*3ac0a46fSAndroid Build Coastguard Worker  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
30*3ac0a46fSAndroid Build Coastguard Worker  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
31*3ac0a46fSAndroid Build Coastguard Worker  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
32*3ac0a46fSAndroid Build Coastguard Worker  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
33*3ac0a46fSAndroid Build Coastguard Worker  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34*3ac0a46fSAndroid Build Coastguard Worker  * POSSIBILITY OF SUCH DAMAGE.
35*3ac0a46fSAndroid Build Coastguard Worker  */
36*3ac0a46fSAndroid Build Coastguard Worker #ifndef OPJ_JP2_H
37*3ac0a46fSAndroid Build Coastguard Worker #define OPJ_JP2_H
38*3ac0a46fSAndroid Build Coastguard Worker /**
39*3ac0a46fSAndroid Build Coastguard Worker @file jp2.h
40*3ac0a46fSAndroid Build Coastguard Worker @brief The JPEG-2000 file format Reader/Writer (JP2)
41*3ac0a46fSAndroid Build Coastguard Worker 
42*3ac0a46fSAndroid Build Coastguard Worker */
43*3ac0a46fSAndroid Build Coastguard Worker 
44*3ac0a46fSAndroid Build Coastguard Worker /** @defgroup JP2 JP2 - JPEG-2000 file format reader/writer */
45*3ac0a46fSAndroid Build Coastguard Worker /*@{*/
46*3ac0a46fSAndroid Build Coastguard Worker 
47*3ac0a46fSAndroid Build Coastguard Worker /*#define JPIP_JPIP 0x6a706970*/
48*3ac0a46fSAndroid Build Coastguard Worker 
49*3ac0a46fSAndroid Build Coastguard Worker #define     JP2_JP   0x6a502020    /**< JPEG 2000 signature box */
50*3ac0a46fSAndroid Build Coastguard Worker #define     JP2_FTYP 0x66747970    /**< File type box */
51*3ac0a46fSAndroid Build Coastguard Worker #define     JP2_JP2H 0x6a703268    /**< JP2 header box (super-box) */
52*3ac0a46fSAndroid Build Coastguard Worker #define     JP2_IHDR 0x69686472    /**< Image header box */
53*3ac0a46fSAndroid Build Coastguard Worker #define     JP2_COLR 0x636f6c72    /**< Colour specification box */
54*3ac0a46fSAndroid Build Coastguard Worker #define     JP2_JP2C 0x6a703263    /**< Contiguous codestream box */
55*3ac0a46fSAndroid Build Coastguard Worker #define     JP2_URL  0x75726c20    /**< Data entry URL box */
56*3ac0a46fSAndroid Build Coastguard Worker #define     JP2_PCLR 0x70636c72    /**< Palette box */
57*3ac0a46fSAndroid Build Coastguard Worker #define     JP2_CMAP 0x636d6170    /**< Component Mapping box */
58*3ac0a46fSAndroid Build Coastguard Worker #define     JP2_CDEF 0x63646566    /**< Channel Definition box */
59*3ac0a46fSAndroid Build Coastguard Worker #define     JP2_DTBL 0x6474626c    /**< Data Reference box */
60*3ac0a46fSAndroid Build Coastguard Worker #define     JP2_BPCC 0x62706363    /**< Bits per component box */
61*3ac0a46fSAndroid Build Coastguard Worker #define     JP2_JP2  0x6a703220    /**< File type fields */
62*3ac0a46fSAndroid Build Coastguard Worker 
63*3ac0a46fSAndroid Build Coastguard Worker /* For the future */
64*3ac0a46fSAndroid Build Coastguard Worker /* #define JP2_RES 0x72657320 */  /**< Resolution box (super-box) */
65*3ac0a46fSAndroid Build Coastguard Worker /* #define JP2_JP2I 0x6a703269 */  /**< Intellectual property box */
66*3ac0a46fSAndroid Build Coastguard Worker /* #define JP2_XML  0x786d6c20 */  /**< XML box */
67*3ac0a46fSAndroid Build Coastguard Worker /* #define JP2_UUID 0x75756994 */  /**< UUID box */
68*3ac0a46fSAndroid Build Coastguard Worker /* #define JP2_UINF 0x75696e66 */  /**< UUID info box (super-box) */
69*3ac0a46fSAndroid Build Coastguard Worker /* #define JP2_ULST 0x756c7374 */  /**< UUID list box */
70*3ac0a46fSAndroid Build Coastguard Worker 
71*3ac0a46fSAndroid Build Coastguard Worker /* ----------------------------------------------------------------------- */
72*3ac0a46fSAndroid Build Coastguard Worker 
73*3ac0a46fSAndroid Build Coastguard Worker typedef enum {
74*3ac0a46fSAndroid Build Coastguard Worker     JP2_STATE_NONE            = 0x0,
75*3ac0a46fSAndroid Build Coastguard Worker     JP2_STATE_SIGNATURE       = 0x1,
76*3ac0a46fSAndroid Build Coastguard Worker     JP2_STATE_FILE_TYPE       = 0x2,
77*3ac0a46fSAndroid Build Coastguard Worker     JP2_STATE_HEADER          = 0x4,
78*3ac0a46fSAndroid Build Coastguard Worker     JP2_STATE_CODESTREAM      = 0x8,
79*3ac0a46fSAndroid Build Coastguard Worker     JP2_STATE_END_CODESTREAM  = 0x10,
80*3ac0a46fSAndroid Build Coastguard Worker     JP2_STATE_UNKNOWN         = 0x7fffffff /* ISO C restricts enumerator values to range of 'int' */
81*3ac0a46fSAndroid Build Coastguard Worker }
82*3ac0a46fSAndroid Build Coastguard Worker JP2_STATE;
83*3ac0a46fSAndroid Build Coastguard Worker 
84*3ac0a46fSAndroid Build Coastguard Worker typedef enum {
85*3ac0a46fSAndroid Build Coastguard Worker     JP2_IMG_STATE_NONE        = 0x0,
86*3ac0a46fSAndroid Build Coastguard Worker     JP2_IMG_STATE_UNKNOWN     = 0x7fffffff
87*3ac0a46fSAndroid Build Coastguard Worker }
88*3ac0a46fSAndroid Build Coastguard Worker JP2_IMG_STATE;
89*3ac0a46fSAndroid Build Coastguard Worker 
90*3ac0a46fSAndroid Build Coastguard Worker /**
91*3ac0a46fSAndroid Build Coastguard Worker Channel description: channel index, type, association
92*3ac0a46fSAndroid Build Coastguard Worker */
93*3ac0a46fSAndroid Build Coastguard Worker typedef struct opj_jp2_cdef_info {
94*3ac0a46fSAndroid Build Coastguard Worker     OPJ_UINT16 cn, typ, asoc;
95*3ac0a46fSAndroid Build Coastguard Worker } opj_jp2_cdef_info_t;
96*3ac0a46fSAndroid Build Coastguard Worker 
97*3ac0a46fSAndroid Build Coastguard Worker /**
98*3ac0a46fSAndroid Build Coastguard Worker Channel descriptions and number of descriptions
99*3ac0a46fSAndroid Build Coastguard Worker */
100*3ac0a46fSAndroid Build Coastguard Worker typedef struct opj_jp2_cdef {
101*3ac0a46fSAndroid Build Coastguard Worker     opj_jp2_cdef_info_t *info;
102*3ac0a46fSAndroid Build Coastguard Worker     OPJ_UINT16 n;
103*3ac0a46fSAndroid Build Coastguard Worker } opj_jp2_cdef_t;
104*3ac0a46fSAndroid Build Coastguard Worker 
105*3ac0a46fSAndroid Build Coastguard Worker /**
106*3ac0a46fSAndroid Build Coastguard Worker Component mappings: channel index, mapping type, palette index
107*3ac0a46fSAndroid Build Coastguard Worker */
108*3ac0a46fSAndroid Build Coastguard Worker typedef struct opj_jp2_cmap_comp {
109*3ac0a46fSAndroid Build Coastguard Worker     OPJ_UINT16 cmp;
110*3ac0a46fSAndroid Build Coastguard Worker     OPJ_BYTE mtyp, pcol;
111*3ac0a46fSAndroid Build Coastguard Worker } opj_jp2_cmap_comp_t;
112*3ac0a46fSAndroid Build Coastguard Worker 
113*3ac0a46fSAndroid Build Coastguard Worker /**
114*3ac0a46fSAndroid Build Coastguard Worker Palette data: table entries, palette columns
115*3ac0a46fSAndroid Build Coastguard Worker */
116*3ac0a46fSAndroid Build Coastguard Worker typedef struct opj_jp2_pclr {
117*3ac0a46fSAndroid Build Coastguard Worker     OPJ_UINT32 *entries;
118*3ac0a46fSAndroid Build Coastguard Worker     OPJ_BYTE *channel_sign;
119*3ac0a46fSAndroid Build Coastguard Worker     OPJ_BYTE *channel_size;
120*3ac0a46fSAndroid Build Coastguard Worker     opj_jp2_cmap_comp_t *cmap;
121*3ac0a46fSAndroid Build Coastguard Worker     OPJ_UINT16 nr_entries;
122*3ac0a46fSAndroid Build Coastguard Worker     OPJ_BYTE nr_channels;
123*3ac0a46fSAndroid Build Coastguard Worker } opj_jp2_pclr_t;
124*3ac0a46fSAndroid Build Coastguard Worker 
125*3ac0a46fSAndroid Build Coastguard Worker /**
126*3ac0a46fSAndroid Build Coastguard Worker Collector for ICC profile, palette, component mapping, channel description
127*3ac0a46fSAndroid Build Coastguard Worker */
128*3ac0a46fSAndroid Build Coastguard Worker typedef struct opj_jp2_color {
129*3ac0a46fSAndroid Build Coastguard Worker     OPJ_BYTE *icc_profile_buf;
130*3ac0a46fSAndroid Build Coastguard Worker     OPJ_UINT32 icc_profile_len;
131*3ac0a46fSAndroid Build Coastguard Worker 
132*3ac0a46fSAndroid Build Coastguard Worker     opj_jp2_cdef_t *jp2_cdef;
133*3ac0a46fSAndroid Build Coastguard Worker     opj_jp2_pclr_t *jp2_pclr;
134*3ac0a46fSAndroid Build Coastguard Worker     OPJ_BYTE jp2_has_colr;
135*3ac0a46fSAndroid Build Coastguard Worker } opj_jp2_color_t;
136*3ac0a46fSAndroid Build Coastguard Worker 
137*3ac0a46fSAndroid Build Coastguard Worker /**
138*3ac0a46fSAndroid Build Coastguard Worker JP2 component
139*3ac0a46fSAndroid Build Coastguard Worker */
140*3ac0a46fSAndroid Build Coastguard Worker typedef struct opj_jp2_comps {
141*3ac0a46fSAndroid Build Coastguard Worker     OPJ_UINT32 depth;
142*3ac0a46fSAndroid Build Coastguard Worker     OPJ_UINT32 sgnd;
143*3ac0a46fSAndroid Build Coastguard Worker     OPJ_UINT32 bpcc;
144*3ac0a46fSAndroid Build Coastguard Worker } opj_jp2_comps_t;
145*3ac0a46fSAndroid Build Coastguard Worker 
146*3ac0a46fSAndroid Build Coastguard Worker /**
147*3ac0a46fSAndroid Build Coastguard Worker JPEG-2000 file format reader/writer
148*3ac0a46fSAndroid Build Coastguard Worker */
149*3ac0a46fSAndroid Build Coastguard Worker typedef struct opj_jp2 {
150*3ac0a46fSAndroid Build Coastguard Worker     /** handle to the J2K codec  */
151*3ac0a46fSAndroid Build Coastguard Worker     opj_j2k_t *j2k;
152*3ac0a46fSAndroid Build Coastguard Worker     /** list of validation procedures */
153*3ac0a46fSAndroid Build Coastguard Worker     struct opj_procedure_list * m_validation_list;
154*3ac0a46fSAndroid Build Coastguard Worker     /** list of execution procedures */
155*3ac0a46fSAndroid Build Coastguard Worker     struct opj_procedure_list * m_procedure_list;
156*3ac0a46fSAndroid Build Coastguard Worker 
157*3ac0a46fSAndroid Build Coastguard Worker     /* width of image */
158*3ac0a46fSAndroid Build Coastguard Worker     OPJ_UINT32 w;
159*3ac0a46fSAndroid Build Coastguard Worker     /* height of image */
160*3ac0a46fSAndroid Build Coastguard Worker     OPJ_UINT32 h;
161*3ac0a46fSAndroid Build Coastguard Worker     /* number of components in the image */
162*3ac0a46fSAndroid Build Coastguard Worker     OPJ_UINT32 numcomps;
163*3ac0a46fSAndroid Build Coastguard Worker     OPJ_UINT32 bpc;
164*3ac0a46fSAndroid Build Coastguard Worker     OPJ_UINT32 C;
165*3ac0a46fSAndroid Build Coastguard Worker     OPJ_UINT32 UnkC;
166*3ac0a46fSAndroid Build Coastguard Worker     OPJ_UINT32 IPR;
167*3ac0a46fSAndroid Build Coastguard Worker     OPJ_UINT32 meth;
168*3ac0a46fSAndroid Build Coastguard Worker     OPJ_UINT32 approx;
169*3ac0a46fSAndroid Build Coastguard Worker     OPJ_UINT32 enumcs;
170*3ac0a46fSAndroid Build Coastguard Worker     OPJ_UINT32 precedence;
171*3ac0a46fSAndroid Build Coastguard Worker     OPJ_UINT32 brand;
172*3ac0a46fSAndroid Build Coastguard Worker     OPJ_UINT32 minversion;
173*3ac0a46fSAndroid Build Coastguard Worker     OPJ_UINT32 numcl;
174*3ac0a46fSAndroid Build Coastguard Worker     OPJ_UINT32 *cl;
175*3ac0a46fSAndroid Build Coastguard Worker     opj_jp2_comps_t *comps;
176*3ac0a46fSAndroid Build Coastguard Worker     /* FIXME: The following two variables are used to save offset
177*3ac0a46fSAndroid Build Coastguard Worker       as we write out a JP2 file to disk. This mechanism is not flexible
178*3ac0a46fSAndroid Build Coastguard Worker       as codec writers will need to extand those fields as new part
179*3ac0a46fSAndroid Build Coastguard Worker       of the standard are implemented.
180*3ac0a46fSAndroid Build Coastguard Worker     */
181*3ac0a46fSAndroid Build Coastguard Worker     OPJ_OFF_T j2k_codestream_offset;
182*3ac0a46fSAndroid Build Coastguard Worker     OPJ_OFF_T jpip_iptr_offset;
183*3ac0a46fSAndroid Build Coastguard Worker     OPJ_BOOL jpip_on;
184*3ac0a46fSAndroid Build Coastguard Worker     OPJ_UINT32 jp2_state;
185*3ac0a46fSAndroid Build Coastguard Worker     OPJ_UINT32 jp2_img_state;
186*3ac0a46fSAndroid Build Coastguard Worker 
187*3ac0a46fSAndroid Build Coastguard Worker     opj_jp2_color_t color;
188*3ac0a46fSAndroid Build Coastguard Worker 
189*3ac0a46fSAndroid Build Coastguard Worker     OPJ_BOOL ignore_pclr_cmap_cdef;
190*3ac0a46fSAndroid Build Coastguard Worker     OPJ_BYTE has_jp2h;
191*3ac0a46fSAndroid Build Coastguard Worker     OPJ_BYTE has_ihdr;
192*3ac0a46fSAndroid Build Coastguard Worker }
193*3ac0a46fSAndroid Build Coastguard Worker opj_jp2_t;
194*3ac0a46fSAndroid Build Coastguard Worker 
195*3ac0a46fSAndroid Build Coastguard Worker /**
196*3ac0a46fSAndroid Build Coastguard Worker JP2 Box
197*3ac0a46fSAndroid Build Coastguard Worker */
198*3ac0a46fSAndroid Build Coastguard Worker typedef struct opj_jp2_box {
199*3ac0a46fSAndroid Build Coastguard Worker     OPJ_UINT32 length;
200*3ac0a46fSAndroid Build Coastguard Worker     OPJ_UINT32 type;
201*3ac0a46fSAndroid Build Coastguard Worker     OPJ_INT32 init_pos;
202*3ac0a46fSAndroid Build Coastguard Worker } opj_jp2_box_t;
203*3ac0a46fSAndroid Build Coastguard Worker 
204*3ac0a46fSAndroid Build Coastguard Worker typedef struct opj_jp2_header_handler {
205*3ac0a46fSAndroid Build Coastguard Worker     /* marker value */
206*3ac0a46fSAndroid Build Coastguard Worker     OPJ_UINT32 id;
207*3ac0a46fSAndroid Build Coastguard Worker     /* action linked to the marker */
208*3ac0a46fSAndroid Build Coastguard Worker     OPJ_BOOL(*handler)(opj_jp2_t *jp2,
209*3ac0a46fSAndroid Build Coastguard Worker                        OPJ_BYTE *p_header_data,
210*3ac0a46fSAndroid Build Coastguard Worker                        OPJ_UINT32 p_header_size,
211*3ac0a46fSAndroid Build Coastguard Worker                        opj_event_mgr_t * p_manager);
212*3ac0a46fSAndroid Build Coastguard Worker }
213*3ac0a46fSAndroid Build Coastguard Worker opj_jp2_header_handler_t;
214*3ac0a46fSAndroid Build Coastguard Worker 
215*3ac0a46fSAndroid Build Coastguard Worker 
216*3ac0a46fSAndroid Build Coastguard Worker typedef struct opj_jp2_img_header_writer_handler {
217*3ac0a46fSAndroid Build Coastguard Worker     /* action to perform */
218*3ac0a46fSAndroid Build Coastguard Worker     OPJ_BYTE*   (*handler)(opj_jp2_t *jp2, OPJ_UINT32 * p_data_size);
219*3ac0a46fSAndroid Build Coastguard Worker     /* result of the action : data */
220*3ac0a46fSAndroid Build Coastguard Worker     OPJ_BYTE*   m_data;
221*3ac0a46fSAndroid Build Coastguard Worker     /* size of data */
222*3ac0a46fSAndroid Build Coastguard Worker     OPJ_UINT32  m_size;
223*3ac0a46fSAndroid Build Coastguard Worker }
224*3ac0a46fSAndroid Build Coastguard Worker opj_jp2_img_header_writer_handler_t;
225*3ac0a46fSAndroid Build Coastguard Worker 
226*3ac0a46fSAndroid Build Coastguard Worker /** @name Exported functions */
227*3ac0a46fSAndroid Build Coastguard Worker /*@{*/
228*3ac0a46fSAndroid Build Coastguard Worker /* ----------------------------------------------------------------------- */
229*3ac0a46fSAndroid Build Coastguard Worker 
230*3ac0a46fSAndroid Build Coastguard Worker /**
231*3ac0a46fSAndroid Build Coastguard Worker Setup the decoder decoding parameters using user parameters.
232*3ac0a46fSAndroid Build Coastguard Worker Decoding parameters are returned in jp2->j2k->cp.
233*3ac0a46fSAndroid Build Coastguard Worker @param p_jp2 JP2 decompressor handle
234*3ac0a46fSAndroid Build Coastguard Worker @param parameters decompression parameters
235*3ac0a46fSAndroid Build Coastguard Worker */
236*3ac0a46fSAndroid Build Coastguard Worker void opj_jp2_setup_decoder(void *p_jp2, opj_dparameters_t *parameters);
237*3ac0a46fSAndroid Build Coastguard Worker 
238*3ac0a46fSAndroid Build Coastguard Worker /**
239*3ac0a46fSAndroid Build Coastguard Worker Set the strict mode parameter.  When strict mode is enabled, the entire
240*3ac0a46fSAndroid Build Coastguard Worker bitstream must be decoded or an error is returned.  When it is disabled,
241*3ac0a46fSAndroid Build Coastguard Worker the decoder will decode partial bitstreams.
242*3ac0a46fSAndroid Build Coastguard Worker @param p_jp2 JP2 decompressor handle
243*3ac0a46fSAndroid Build Coastguard Worker @param strict OPJ_TRUE for strict mode
244*3ac0a46fSAndroid Build Coastguard Worker */
245*3ac0a46fSAndroid Build Coastguard Worker void opj_jp2_decoder_set_strict_mode(void *p_jp2, OPJ_BOOL strict);
246*3ac0a46fSAndroid Build Coastguard Worker 
247*3ac0a46fSAndroid Build Coastguard Worker /** Allocates worker threads for the compressor/decompressor.
248*3ac0a46fSAndroid Build Coastguard Worker  *
249*3ac0a46fSAndroid Build Coastguard Worker  * @param p_jp2 JP2 decompressor handle
250*3ac0a46fSAndroid Build Coastguard Worker  * @param num_threads Number of threads.
251*3ac0a46fSAndroid Build Coastguard Worker  * @return OPJ_TRUE in case of success.
252*3ac0a46fSAndroid Build Coastguard Worker  */
253*3ac0a46fSAndroid Build Coastguard Worker OPJ_BOOL opj_jp2_set_threads(void *p_jp2, OPJ_UINT32 num_threads);
254*3ac0a46fSAndroid Build Coastguard Worker 
255*3ac0a46fSAndroid Build Coastguard Worker /**
256*3ac0a46fSAndroid Build Coastguard Worker  * Decode an image from a JPEG-2000 file stream
257*3ac0a46fSAndroid Build Coastguard Worker  * @param p_jp2 JP2 decompressor handle
258*3ac0a46fSAndroid Build Coastguard Worker  * @param p_stream  FIXME DOC
259*3ac0a46fSAndroid Build Coastguard Worker  * @param p_image   FIXME DOC
260*3ac0a46fSAndroid Build Coastguard Worker  * @param p_manager FIXME DOC
261*3ac0a46fSAndroid Build Coastguard Worker  *
262*3ac0a46fSAndroid Build Coastguard Worker  * @return Returns a decoded image if successful, returns NULL otherwise
263*3ac0a46fSAndroid Build Coastguard Worker */
264*3ac0a46fSAndroid Build Coastguard Worker OPJ_BOOL opj_jp2_decode(void *p_jp2,
265*3ac0a46fSAndroid Build Coastguard Worker                         opj_stream_private_t *p_stream,
266*3ac0a46fSAndroid Build Coastguard Worker                         opj_image_t* p_image,
267*3ac0a46fSAndroid Build Coastguard Worker                         opj_event_mgr_t * p_manager);
268*3ac0a46fSAndroid Build Coastguard Worker 
269*3ac0a46fSAndroid Build Coastguard Worker /**
270*3ac0a46fSAndroid Build Coastguard Worker  * Setup the encoder parameters using the current image and using user parameters.
271*3ac0a46fSAndroid Build Coastguard Worker  * Coding parameters are returned in jp2->j2k->cp.
272*3ac0a46fSAndroid Build Coastguard Worker  *
273*3ac0a46fSAndroid Build Coastguard Worker  * @param p_jp2 JP2 compressor handle
274*3ac0a46fSAndroid Build Coastguard Worker  * @param parameters compression parameters
275*3ac0a46fSAndroid Build Coastguard Worker  * @param image input filled image
276*3ac0a46fSAndroid Build Coastguard Worker  * @param p_manager  FIXME DOC
277*3ac0a46fSAndroid Build Coastguard Worker  * @return OPJ_TRUE if successful, OPJ_FALSE otherwise
278*3ac0a46fSAndroid Build Coastguard Worker */
279*3ac0a46fSAndroid Build Coastguard Worker OPJ_BOOL opj_jp2_setup_encoder(void *p_jp2,
280*3ac0a46fSAndroid Build Coastguard Worker                                opj_cparameters_t *parameters,
281*3ac0a46fSAndroid Build Coastguard Worker                                opj_image_t *image,
282*3ac0a46fSAndroid Build Coastguard Worker                                opj_event_mgr_t * p_manager);
283*3ac0a46fSAndroid Build Coastguard Worker 
284*3ac0a46fSAndroid Build Coastguard Worker /**
285*3ac0a46fSAndroid Build Coastguard Worker Encode an image into a JPEG-2000 file stream
286*3ac0a46fSAndroid Build Coastguard Worker @param p_jp2      JP2 compressor handle
287*3ac0a46fSAndroid Build Coastguard Worker @param stream    Output buffer stream
288*3ac0a46fSAndroid Build Coastguard Worker @param p_manager  event manager
289*3ac0a46fSAndroid Build Coastguard Worker @return Returns true if successful, returns false otherwise
290*3ac0a46fSAndroid Build Coastguard Worker */
291*3ac0a46fSAndroid Build Coastguard Worker OPJ_BOOL opj_jp2_encode(void *p_jp2,
292*3ac0a46fSAndroid Build Coastguard Worker                         opj_stream_private_t *stream,
293*3ac0a46fSAndroid Build Coastguard Worker                         opj_event_mgr_t * p_manager);
294*3ac0a46fSAndroid Build Coastguard Worker 
295*3ac0a46fSAndroid Build Coastguard Worker 
296*3ac0a46fSAndroid Build Coastguard Worker /**
297*3ac0a46fSAndroid Build Coastguard Worker  * Starts a compression scheme, i.e. validates the codec parameters, writes the header.
298*3ac0a46fSAndroid Build Coastguard Worker  *
299*3ac0a46fSAndroid Build Coastguard Worker  * @param  p_jp2    the jpeg2000 file codec.
300*3ac0a46fSAndroid Build Coastguard Worker  * @param  stream    the stream object.
301*3ac0a46fSAndroid Build Coastguard Worker  * @param  p_image   FIXME DOC
302*3ac0a46fSAndroid Build Coastguard Worker  * @param p_manager FIXME DOC
303*3ac0a46fSAndroid Build Coastguard Worker  *
304*3ac0a46fSAndroid Build Coastguard Worker  * @return true if the codec is valid.
305*3ac0a46fSAndroid Build Coastguard Worker  */
306*3ac0a46fSAndroid Build Coastguard Worker OPJ_BOOL opj_jp2_start_compress(void *p_jp2,
307*3ac0a46fSAndroid Build Coastguard Worker                                 opj_stream_private_t *stream,
308*3ac0a46fSAndroid Build Coastguard Worker                                 opj_image_t * p_image,
309*3ac0a46fSAndroid Build Coastguard Worker                                 opj_event_mgr_t * p_manager);
310*3ac0a46fSAndroid Build Coastguard Worker 
311*3ac0a46fSAndroid Build Coastguard Worker 
312*3ac0a46fSAndroid Build Coastguard Worker /**
313*3ac0a46fSAndroid Build Coastguard Worker  * Ends the compression procedures and possibiliy add data to be read after the
314*3ac0a46fSAndroid Build Coastguard Worker  * codestream.
315*3ac0a46fSAndroid Build Coastguard Worker  */
316*3ac0a46fSAndroid Build Coastguard Worker OPJ_BOOL opj_jp2_end_compress(void *p_jp2,
317*3ac0a46fSAndroid Build Coastguard Worker                               opj_stream_private_t *cio,
318*3ac0a46fSAndroid Build Coastguard Worker                               opj_event_mgr_t * p_manager);
319*3ac0a46fSAndroid Build Coastguard Worker 
320*3ac0a46fSAndroid Build Coastguard Worker /* ----------------------------------------------------------------------- */
321*3ac0a46fSAndroid Build Coastguard Worker 
322*3ac0a46fSAndroid Build Coastguard Worker /**
323*3ac0a46fSAndroid Build Coastguard Worker  * Ends the decompression procedures and possibiliy add data to be read after the
324*3ac0a46fSAndroid Build Coastguard Worker  * codestream.
325*3ac0a46fSAndroid Build Coastguard Worker  */
326*3ac0a46fSAndroid Build Coastguard Worker OPJ_BOOL opj_jp2_end_decompress(void *p_jp2,
327*3ac0a46fSAndroid Build Coastguard Worker                                 opj_stream_private_t *cio,
328*3ac0a46fSAndroid Build Coastguard Worker                                 opj_event_mgr_t * p_manager);
329*3ac0a46fSAndroid Build Coastguard Worker 
330*3ac0a46fSAndroid Build Coastguard Worker /**
331*3ac0a46fSAndroid Build Coastguard Worker  * Reads a jpeg2000 file header structure.
332*3ac0a46fSAndroid Build Coastguard Worker  *
333*3ac0a46fSAndroid Build Coastguard Worker  * @param p_stream the stream to read data from.
334*3ac0a46fSAndroid Build Coastguard Worker  * @param p_jp2 the jpeg2000 file header structure.
335*3ac0a46fSAndroid Build Coastguard Worker  * @param p_image   FIXME DOC
336*3ac0a46fSAndroid Build Coastguard Worker  * @param p_manager the user event manager.
337*3ac0a46fSAndroid Build Coastguard Worker  *
338*3ac0a46fSAndroid Build Coastguard Worker  * @return true if the box is valid.
339*3ac0a46fSAndroid Build Coastguard Worker  */
340*3ac0a46fSAndroid Build Coastguard Worker OPJ_BOOL opj_jp2_read_header(opj_stream_private_t *p_stream,
341*3ac0a46fSAndroid Build Coastguard Worker                              void *p_jp2,
342*3ac0a46fSAndroid Build Coastguard Worker                              opj_image_t ** p_image,
343*3ac0a46fSAndroid Build Coastguard Worker                              opj_event_mgr_t * p_manager);
344*3ac0a46fSAndroid Build Coastguard Worker 
345*3ac0a46fSAndroid Build Coastguard Worker /** Sets the indices of the components to decode.
346*3ac0a46fSAndroid Build Coastguard Worker  *
347*3ac0a46fSAndroid Build Coastguard Worker  * @param p_jp2 JP2 decompressor handle
348*3ac0a46fSAndroid Build Coastguard Worker  * @param numcomps Number of components to decode.
349*3ac0a46fSAndroid Build Coastguard Worker  * @param comps_indices Array of num_compts indices (numbering starting at 0)
350*3ac0a46fSAndroid Build Coastguard Worker  *                     corresponding to the components to decode.
351*3ac0a46fSAndroid Build Coastguard Worker  * @param p_manager Event manager;
352*3ac0a46fSAndroid Build Coastguard Worker  *
353*3ac0a46fSAndroid Build Coastguard Worker  * @return OPJ_TRUE in case of success.
354*3ac0a46fSAndroid Build Coastguard Worker  */
355*3ac0a46fSAndroid Build Coastguard Worker OPJ_BOOL opj_jp2_set_decoded_components(void *p_jp2,
356*3ac0a46fSAndroid Build Coastguard Worker                                         OPJ_UINT32 numcomps,
357*3ac0a46fSAndroid Build Coastguard Worker                                         const OPJ_UINT32* comps_indices,
358*3ac0a46fSAndroid Build Coastguard Worker                                         opj_event_mgr_t * p_manager);
359*3ac0a46fSAndroid Build Coastguard Worker 
360*3ac0a46fSAndroid Build Coastguard Worker /**
361*3ac0a46fSAndroid Build Coastguard Worker  * Reads a tile header.
362*3ac0a46fSAndroid Build Coastguard Worker  * @param  p_jp2         the jpeg2000 codec.
363*3ac0a46fSAndroid Build Coastguard Worker  * @param  p_tile_index  FIXME DOC
364*3ac0a46fSAndroid Build Coastguard Worker  * @param  p_data_size   FIXME DOC
365*3ac0a46fSAndroid Build Coastguard Worker  * @param  p_tile_x0     FIXME DOC
366*3ac0a46fSAndroid Build Coastguard Worker  * @param  p_tile_y0     FIXME DOC
367*3ac0a46fSAndroid Build Coastguard Worker  * @param  p_tile_x1     FIXME DOC
368*3ac0a46fSAndroid Build Coastguard Worker  * @param  p_tile_y1     FIXME DOC
369*3ac0a46fSAndroid Build Coastguard Worker  * @param  p_nb_comps    FIXME DOC
370*3ac0a46fSAndroid Build Coastguard Worker  * @param  p_go_on       FIXME DOC
371*3ac0a46fSAndroid Build Coastguard Worker  * @param  p_stream      the stream to write data to.
372*3ac0a46fSAndroid Build Coastguard Worker  * @param  p_manager     the user event manager.
373*3ac0a46fSAndroid Build Coastguard Worker  */
374*3ac0a46fSAndroid Build Coastguard Worker OPJ_BOOL opj_jp2_read_tile_header(void * p_jp2,
375*3ac0a46fSAndroid Build Coastguard Worker                                   OPJ_UINT32 * p_tile_index,
376*3ac0a46fSAndroid Build Coastguard Worker                                   OPJ_UINT32 * p_data_size,
377*3ac0a46fSAndroid Build Coastguard Worker                                   OPJ_INT32 * p_tile_x0,
378*3ac0a46fSAndroid Build Coastguard Worker                                   OPJ_INT32 * p_tile_y0,
379*3ac0a46fSAndroid Build Coastguard Worker                                   OPJ_INT32 * p_tile_x1,
380*3ac0a46fSAndroid Build Coastguard Worker                                   OPJ_INT32 * p_tile_y1,
381*3ac0a46fSAndroid Build Coastguard Worker                                   OPJ_UINT32 * p_nb_comps,
382*3ac0a46fSAndroid Build Coastguard Worker                                   OPJ_BOOL * p_go_on,
383*3ac0a46fSAndroid Build Coastguard Worker                                   opj_stream_private_t *p_stream,
384*3ac0a46fSAndroid Build Coastguard Worker                                   opj_event_mgr_t * p_manager);
385*3ac0a46fSAndroid Build Coastguard Worker 
386*3ac0a46fSAndroid Build Coastguard Worker /**
387*3ac0a46fSAndroid Build Coastguard Worker  * Writes a tile.
388*3ac0a46fSAndroid Build Coastguard Worker  *
389*3ac0a46fSAndroid Build Coastguard Worker  * @param  p_jp2    the jpeg2000 codec.
390*3ac0a46fSAndroid Build Coastguard Worker  * @param p_tile_index  FIXME DOC
391*3ac0a46fSAndroid Build Coastguard Worker  * @param p_data        FIXME DOC
392*3ac0a46fSAndroid Build Coastguard Worker  * @param p_data_size   FIXME DOC
393*3ac0a46fSAndroid Build Coastguard Worker  * @param  p_stream      the stream to write data to.
394*3ac0a46fSAndroid Build Coastguard Worker  * @param  p_manager  the user event manager.
395*3ac0a46fSAndroid Build Coastguard Worker  */
396*3ac0a46fSAndroid Build Coastguard Worker OPJ_BOOL opj_jp2_write_tile(void *p_jp2,
397*3ac0a46fSAndroid Build Coastguard Worker                             OPJ_UINT32 p_tile_index,
398*3ac0a46fSAndroid Build Coastguard Worker                             OPJ_BYTE * p_data,
399*3ac0a46fSAndroid Build Coastguard Worker                             OPJ_UINT32 p_data_size,
400*3ac0a46fSAndroid Build Coastguard Worker                             opj_stream_private_t *p_stream,
401*3ac0a46fSAndroid Build Coastguard Worker                             opj_event_mgr_t * p_manager);
402*3ac0a46fSAndroid Build Coastguard Worker 
403*3ac0a46fSAndroid Build Coastguard Worker /**
404*3ac0a46fSAndroid Build Coastguard Worker  * Decode tile data.
405*3ac0a46fSAndroid Build Coastguard Worker  * @param  p_jp2    the jpeg2000 codec.
406*3ac0a46fSAndroid Build Coastguard Worker  * @param  p_tile_index FIXME DOC
407*3ac0a46fSAndroid Build Coastguard Worker  * @param  p_data       FIXME DOC
408*3ac0a46fSAndroid Build Coastguard Worker  * @param  p_data_size  FIXME DOC
409*3ac0a46fSAndroid Build Coastguard Worker  * @param  p_stream      the stream to write data to.
410*3ac0a46fSAndroid Build Coastguard Worker  * @param  p_manager  the user event manager.
411*3ac0a46fSAndroid Build Coastguard Worker  *
412*3ac0a46fSAndroid Build Coastguard Worker  * @return FIXME DOC
413*3ac0a46fSAndroid Build Coastguard Worker  */
414*3ac0a46fSAndroid Build Coastguard Worker OPJ_BOOL opj_jp2_decode_tile(void * p_jp2,
415*3ac0a46fSAndroid Build Coastguard Worker                              OPJ_UINT32 p_tile_index,
416*3ac0a46fSAndroid Build Coastguard Worker                              OPJ_BYTE * p_data,
417*3ac0a46fSAndroid Build Coastguard Worker                              OPJ_UINT32 p_data_size,
418*3ac0a46fSAndroid Build Coastguard Worker                              opj_stream_private_t *p_stream,
419*3ac0a46fSAndroid Build Coastguard Worker                              opj_event_mgr_t * p_manager);
420*3ac0a46fSAndroid Build Coastguard Worker 
421*3ac0a46fSAndroid Build Coastguard Worker /**
422*3ac0a46fSAndroid Build Coastguard Worker  * Creates a jpeg2000 file decompressor.
423*3ac0a46fSAndroid Build Coastguard Worker  *
424*3ac0a46fSAndroid Build Coastguard Worker  * @return  an empty jpeg2000 file codec.
425*3ac0a46fSAndroid Build Coastguard Worker  */
426*3ac0a46fSAndroid Build Coastguard Worker opj_jp2_t* opj_jp2_create(OPJ_BOOL p_is_decoder);
427*3ac0a46fSAndroid Build Coastguard Worker 
428*3ac0a46fSAndroid Build Coastguard Worker /**
429*3ac0a46fSAndroid Build Coastguard Worker Destroy a JP2 decompressor handle
430*3ac0a46fSAndroid Build Coastguard Worker @param p_jp2 JP2 decompressor handle to destroy
431*3ac0a46fSAndroid Build Coastguard Worker */
432*3ac0a46fSAndroid Build Coastguard Worker void opj_jp2_destroy(void *p_jp2);
433*3ac0a46fSAndroid Build Coastguard Worker 
434*3ac0a46fSAndroid Build Coastguard Worker 
435*3ac0a46fSAndroid Build Coastguard Worker /**
436*3ac0a46fSAndroid Build Coastguard Worker  * Sets the given area to be decoded. This function should be called right after opj_read_header and before any tile header reading.
437*3ac0a46fSAndroid Build Coastguard Worker  *
438*3ac0a46fSAndroid Build Coastguard Worker  * @param  p_jp2      the jpeg2000 codec.
439*3ac0a46fSAndroid Build Coastguard Worker  * @param  p_image     FIXME DOC
440*3ac0a46fSAndroid Build Coastguard Worker  * @param  p_start_x   the left position of the rectangle to decode (in image coordinates).
441*3ac0a46fSAndroid Build Coastguard Worker  * @param  p_start_y    the up position of the rectangle to decode (in image coordinates).
442*3ac0a46fSAndroid Build Coastguard Worker  * @param  p_end_x      the right position of the rectangle to decode (in image coordinates).
443*3ac0a46fSAndroid Build Coastguard Worker  * @param  p_end_y      the bottom position of the rectangle to decode (in image coordinates).
444*3ac0a46fSAndroid Build Coastguard Worker  * @param  p_manager    the user event manager
445*3ac0a46fSAndroid Build Coastguard Worker  *
446*3ac0a46fSAndroid Build Coastguard Worker  * @return  true      if the area could be set.
447*3ac0a46fSAndroid Build Coastguard Worker  */
448*3ac0a46fSAndroid Build Coastguard Worker OPJ_BOOL opj_jp2_set_decode_area(void *p_jp2,
449*3ac0a46fSAndroid Build Coastguard Worker                                  opj_image_t* p_image,
450*3ac0a46fSAndroid Build Coastguard Worker                                  OPJ_INT32 p_start_x, OPJ_INT32 p_start_y,
451*3ac0a46fSAndroid Build Coastguard Worker                                  OPJ_INT32 p_end_x, OPJ_INT32 p_end_y,
452*3ac0a46fSAndroid Build Coastguard Worker                                  opj_event_mgr_t * p_manager);
453*3ac0a46fSAndroid Build Coastguard Worker 
454*3ac0a46fSAndroid Build Coastguard Worker /**
455*3ac0a46fSAndroid Build Coastguard Worker *
456*3ac0a46fSAndroid Build Coastguard Worker */
457*3ac0a46fSAndroid Build Coastguard Worker OPJ_BOOL opj_jp2_get_tile(void *jp2,
458*3ac0a46fSAndroid Build Coastguard Worker                           opj_stream_private_t *p_stream,
459*3ac0a46fSAndroid Build Coastguard Worker                           opj_image_t* p_image,
460*3ac0a46fSAndroid Build Coastguard Worker                           opj_event_mgr_t * p_manager,
461*3ac0a46fSAndroid Build Coastguard Worker                           OPJ_UINT32 tile_index);
462*3ac0a46fSAndroid Build Coastguard Worker 
463*3ac0a46fSAndroid Build Coastguard Worker 
464*3ac0a46fSAndroid Build Coastguard Worker /**
465*3ac0a46fSAndroid Build Coastguard Worker  *
466*3ac0a46fSAndroid Build Coastguard Worker  */
467*3ac0a46fSAndroid Build Coastguard Worker OPJ_BOOL opj_jp2_set_decoded_resolution_factor(void *p_jp2,
468*3ac0a46fSAndroid Build Coastguard Worker         OPJ_UINT32 res_factor,
469*3ac0a46fSAndroid Build Coastguard Worker         opj_event_mgr_t * p_manager);
470*3ac0a46fSAndroid Build Coastguard Worker 
471*3ac0a46fSAndroid Build Coastguard Worker /**
472*3ac0a46fSAndroid Build Coastguard Worker  * Specify extra options for the encoder.
473*3ac0a46fSAndroid Build Coastguard Worker  *
474*3ac0a46fSAndroid Build Coastguard Worker  * @param  p_jp2        the jpeg2000 codec.
475*3ac0a46fSAndroid Build Coastguard Worker  * @param  p_options    options
476*3ac0a46fSAndroid Build Coastguard Worker  * @param  p_manager    the user event manager
477*3ac0a46fSAndroid Build Coastguard Worker  *
478*3ac0a46fSAndroid Build Coastguard Worker  * @see opj_encoder_set_extra_options() for more details.
479*3ac0a46fSAndroid Build Coastguard Worker  */
480*3ac0a46fSAndroid Build Coastguard Worker OPJ_BOOL opj_jp2_encoder_set_extra_options(
481*3ac0a46fSAndroid Build Coastguard Worker     void *p_jp2,
482*3ac0a46fSAndroid Build Coastguard Worker     const char* const* p_options,
483*3ac0a46fSAndroid Build Coastguard Worker     opj_event_mgr_t * p_manager);
484*3ac0a46fSAndroid Build Coastguard Worker 
485*3ac0a46fSAndroid Build Coastguard Worker 
486*3ac0a46fSAndroid Build Coastguard Worker /* TODO MSD: clean these 3 functions */
487*3ac0a46fSAndroid Build Coastguard Worker /**
488*3ac0a46fSAndroid Build Coastguard Worker  * Dump some elements from the JP2 decompression structure .
489*3ac0a46fSAndroid Build Coastguard Worker  *
490*3ac0a46fSAndroid Build Coastguard Worker  *@param p_jp2        the jp2 codec.
491*3ac0a46fSAndroid Build Coastguard Worker  *@param flag        flag to describe what elements are dump.
492*3ac0a46fSAndroid Build Coastguard Worker  *@param out_stream      output stream where dump the elements.
493*3ac0a46fSAndroid Build Coastguard Worker  *
494*3ac0a46fSAndroid Build Coastguard Worker */
495*3ac0a46fSAndroid Build Coastguard Worker void jp2_dump(void* p_jp2, OPJ_INT32 flag, FILE* out_stream);
496*3ac0a46fSAndroid Build Coastguard Worker 
497*3ac0a46fSAndroid Build Coastguard Worker /**
498*3ac0a46fSAndroid Build Coastguard Worker  * Get the codestream info from a JPEG2000 codec.
499*3ac0a46fSAndroid Build Coastguard Worker  *
500*3ac0a46fSAndroid Build Coastguard Worker  *@param  p_jp2        jp2 codec.
501*3ac0a46fSAndroid Build Coastguard Worker  *
502*3ac0a46fSAndroid Build Coastguard Worker  *@return  the codestream information extract from the jpg2000 codec
503*3ac0a46fSAndroid Build Coastguard Worker  */
504*3ac0a46fSAndroid Build Coastguard Worker opj_codestream_info_v2_t* jp2_get_cstr_info(void* p_jp2);
505*3ac0a46fSAndroid Build Coastguard Worker 
506*3ac0a46fSAndroid Build Coastguard Worker /**
507*3ac0a46fSAndroid Build Coastguard Worker  * Get the codestream index from a JPEG2000 codec.
508*3ac0a46fSAndroid Build Coastguard Worker  *
509*3ac0a46fSAndroid Build Coastguard Worker  *@param  p_jp2        jp2 codec.
510*3ac0a46fSAndroid Build Coastguard Worker  *
511*3ac0a46fSAndroid Build Coastguard Worker  *@return  the codestream index extract from the jpg2000 codec
512*3ac0a46fSAndroid Build Coastguard Worker  */
513*3ac0a46fSAndroid Build Coastguard Worker opj_codestream_index_t* jp2_get_cstr_index(void* p_jp2);
514*3ac0a46fSAndroid Build Coastguard Worker 
515*3ac0a46fSAndroid Build Coastguard Worker 
516*3ac0a46fSAndroid Build Coastguard Worker /*@}*/
517*3ac0a46fSAndroid Build Coastguard Worker 
518*3ac0a46fSAndroid Build Coastguard Worker /*@}*/
519*3ac0a46fSAndroid Build Coastguard Worker 
520*3ac0a46fSAndroid Build Coastguard Worker #endif /* OPJ_JP2_H */
521*3ac0a46fSAndroid Build Coastguard Worker 
522