1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*
2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * The copyright in this software is being made available under the 2-clauses
3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * BSD License, included below. This software may be subject to other third
4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * party and contributor rights, including patent rights, and no such rights
5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * are granted under this license.
6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
7ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Copyright (c) 2002-2014, Professor Benoit Macq
9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Copyright (c) 2001-2003, David Janssens
10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Copyright (c) 2002-2003, Yannick Verschueren
11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Copyright (c) 2003-2007, Francois-Olivier Devaux
12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Copyright (c) 2003-2014, Antonin Descampe
13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Copyright (c) 2005, Herve Drolon, FreeImage Team
14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Copyright (c) 2006-2007, Parvatha Elangovan
15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Copyright (c) 2008, Jerome Fimes, Communications & Systemes <jerome.fimes@c-s.fr>
16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Copyright (c) 2010-2011, Kaori Hagihara
17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Copyright (c) 2011-2012, Centre National d'Etudes Spatiales (CNES), France
18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Copyright (c) 2012, CS Systemes d'Information, France
19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * All rights reserved.
20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Redistribution and use in source and binary forms, with or without
22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * modification, are permitted provided that the following conditions
23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * are met:
24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 1. Redistributions of source code must retain the above copyright
25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *    notice, this list of conditions and the following disclaimer.
26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * 2. Redistributions in binary form must reproduce the above copyright
27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *    notice, this list of conditions and the following disclaimer in the
28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *    documentation and/or other materials provided with the distribution.
29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * POSSIBILITY OF SUCH DAMAGE.
41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef OPENJPEG_H
43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define OPENJPEG_H
44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef OPJ_STATIC
46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define OPJ_STATIC
47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*
52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov==========================================================
53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   Compiler directives
54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov==========================================================
55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/
56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*
58ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovThe inline keyword is supported by C99 but not by C90.
59ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovMost compilers implement their own version of this keyword ...
60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/
61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef INLINE
62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	#if defined(_MSC_VER)
63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		#define INLINE __forceinline
64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	#elif defined(__GNUC__)
65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		#define INLINE __inline__
66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	#elif defined(__MWERKS__)
67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		#define INLINE inline
68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	#else
69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		/* add other compilers here ... */
70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		#define INLINE
71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	#endif /* defined(<Compiler>) */
72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif /* INLINE */
73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* deprecated attribute */
75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef __GNUC__
76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	#define OPJ_DEPRECATED(func) func __attribute__ ((deprecated))
77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#elif defined(_MSC_VER)
78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	#define OPJ_DEPRECATED(func) __declspec(deprecated) func
79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#else
80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	#pragma message("WARNING: You need to implement DEPRECATED for this compiler")
81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	#define OPJ_DEPRECATED(func) func
82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#if defined(OPJ_STATIC) || !defined(_WIN32)
85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* http://gcc.gnu.org/wiki/Visibility */
86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#if __GNUC__ >= 4
87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define OPJ_API    __attribute__ ((visibility ("default")))
88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define OPJ_LOCAL  __attribute__ ((visibility ("hidden")))
89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#else
90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define OPJ_API
91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define OPJ_LOCAL
92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define OPJ_CALLCONV
94ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#else
95ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define OPJ_CALLCONV __stdcall
96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*
97ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovThe following ifdef block is the standard way of creating macros which make exporting
98ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovfrom a DLL simpler. All files within this DLL are compiled with the OPJ_EXPORTS
99ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovsymbol defined on the command line. this symbol should not be defined on any project
100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovthat uses this DLL. This way any other project whose source files include this file see
101ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API functions as being imported from a DLL, wheras this DLL sees symbols
102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovdefined with this macro as being exported.
103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/
104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#if defined(OPJ_EXPORTS) || defined(DLL_EXPORT)
105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define OPJ_API __declspec(dllexport)
106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#else
107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define OPJ_API __declspec(dllimport)
108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif /* OPJ_EXPORTS */
109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif /* !OPJ_STATIC || !_WIN32 */
110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef int OPJ_BOOL;
112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define OPJ_TRUE 1
113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define OPJ_FALSE 0
114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef char          OPJ_CHAR;
116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef float         OPJ_FLOAT32;
117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef double        OPJ_FLOAT64;
118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef unsigned char OPJ_BYTE;
119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "opj_stdint.h"
120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef int8_t   OPJ_INT8;
122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef uint8_t  OPJ_UINT8;
123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef int16_t  OPJ_INT16;
124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef uint16_t OPJ_UINT16;
125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef int32_t  OPJ_INT32;
126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef uint32_t OPJ_UINT32;
127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef int64_t  OPJ_INT64;
128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef uint64_t OPJ_UINT64;
129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef int64_t  OPJ_OFF_T; /* 64-bit file offset type */
131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include <stdio.h>
133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef size_t   OPJ_SIZE_T;
134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* Avoid compile-time warning because parameter is not used */
136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define OPJ_ARG_NOT_USED(x) (void)(x)
137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*
139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov==========================================================
140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   Useful constant definitions
141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov==========================================================
142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/
143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define OPJ_PATH_LEN 4096 /**< Maximum allowed size for filenames */
145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define OPJ_J2K_MAXRLVLS 33					/**< Number of maximum resolution level authorized */
147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define OPJ_J2K_MAXBANDS (3*OPJ_J2K_MAXRLVLS-2)	/**< Number of maximum sub-band linked to number of resolution level */
148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define OPJ_J2K_DEFAULT_NB_SEGS				10
150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define OPJ_J2K_STREAM_CHUNK_SIZE			0x100000 /** 1 mega by default */
151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define OPJ_J2K_DEFAULT_HEADER_SIZE			1000
152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define OPJ_J2K_MCC_DEFAULT_NB_RECORDS		10
153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define OPJ_J2K_MCT_DEFAULT_NB_RECORDS		10
154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* UniPG>> */ /* NOT YET USED IN THE V2 VERSION OF OPENJPEG */
156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define JPWL_MAX_NO_TILESPECS	16 /**< Maximum number of tile parts expected by JPWL: increase at your will */
157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define JPWL_MAX_NO_PACKSPECS	16 /**< Maximum number of packet parts expected by JPWL: increase at your will */
158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define JPWL_MAX_NO_MARKERS	512 /**< Maximum number of JPWL markers: increase at your will */
159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define JPWL_PRIVATEINDEX_NAME "jpwl_index_privatefilename" /**< index file name used when JPWL is on */
160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define JPWL_EXPECTED_COMPONENTS 3 /**< Expect this number of components, so you'll find better the first EPB */
161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define JPWL_MAXIMUM_TILES 8192 /**< Expect this maximum number of tiles, to avoid some crashes */
162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define JPWL_MAXIMUM_HAMMING 2 /**< Expect this maximum number of bit errors in marker id's */
163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define JPWL_MAXIMUM_EPB_ROOM 65450 /**< Expect this maximum number of bytes for composition of EPBs */
164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* <<UniPG */
165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * EXPERIMENTAL FOR THE MOMENT
168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Supported options about file information used only in j2k_dump
169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/
170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define OPJ_IMG_INFO		1	/**< Basic image information provided to the user */
171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define OPJ_J2K_MH_INFO		2	/**< Codestream information based only on the main header */
172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define OPJ_J2K_TH_INFO		4	/**< Tile information based on the current tile header */
173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define OPJ_J2K_TCH_INFO	8	/**< Tile/Component information of all tiles */
174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define OPJ_J2K_MH_IND		16	/**< Codestream index based only on the main header */
175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define OPJ_J2K_TH_IND		32	/**< Tile index based on the current tile */
176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*FIXME #define OPJ_J2K_CSTR_IND	48*/	/**<  */
177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define OPJ_JP2_INFO		128	/**< JP2 file information */
178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define OPJ_JP2_IND			256	/**< JP2 file index */
179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*
182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov==========================================================
183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   enum definitions
184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov==========================================================
185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/
186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Rsiz Capabilities
188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * */
189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef enum RSIZ_CAPABILITIES {
190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_STD_RSIZ = 0,		/** Standard JPEG2000 profile*/
191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_CINEMA2K = 3,		/** Profile name for a 2K image*/
192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_CINEMA4K = 4,		/** Profile name for a 4K image*/
193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_MCT = 0x8100
194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} OPJ_RSIZ_CAPABILITIES;
195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Digital cinema operation mode
198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * */
199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef enum CINEMA_MODE {
200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_OFF = 0,			/** Not Digital Cinema*/
201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_CINEMA2K_24 = 1,	/** 2K Digital Cinema at 24 fps*/
202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_CINEMA2K_48 = 2,	/** 2K Digital Cinema at 48 fps*/
203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_CINEMA4K_24 = 3		/** 4K Digital Cinema at 24 fps*/
204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}OPJ_CINEMA_MODE;
205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Progression order
208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * */
209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef enum PROG_ORDER {
210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_PROG_UNKNOWN = -1,	/**< place-holder */
211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_LRCP = 0,			/**< layer-resolution-component-precinct order */
212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_RLCP = 1,			/**< resolution-layer-component-precinct order */
213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_RPCL = 2,			/**< resolution-precinct-component-layer order */
214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_PCRL = 3,			/**< precinct-component-resolution-layer order */
215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_CPRL = 4			/**< component-precinct-resolution-layer order */
216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} OPJ_PROG_ORDER;
217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Supported image color spaces
220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/
221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef enum COLOR_SPACE {
222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_CLRSPC_UNKNOWN = -1,	/**< not supported by the library */
223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_CLRSPC_UNSPECIFIED = 0,	/**< not specified in the codestream */
224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_CLRSPC_SRGB = 1,		/**< sRGB */
225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_CLRSPC_GRAY = 2,		/**< grayscale */
226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_CLRSPC_SYCC = 3,		/**< YUV */
227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  OPJ_CLRSPC_EYCC = 4		/**< e-YCC */
228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} OPJ_COLOR_SPACE;
229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Supported codec
232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/
233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef enum CODEC_FORMAT {
234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_CODEC_UNKNOWN = -1,	/**< place-holder */
235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_CODEC_J2K  = 0,		/**< JPEG-2000 codestream : read/write */
236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_CODEC_JPT  = 1,		/**< JPT-stream (JPEG 2000, JPIP) : read only */
237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_CODEC_JP2  = 2 		/**< JPEG-2000 file format : read/write */
238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} OPJ_CODEC_FORMAT;
239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*
242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov==========================================================
243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   event manager typedef definitions
244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov==========================================================
245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/
246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Callback function prototype for events
249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param msg               Event message
250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param client_data       Client object where will be return the event message
251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * */
252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef void (*opj_msg_callback) (const char *msg, void *client_data);
253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*
255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov==========================================================
256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   codec typedef definitions
257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov==========================================================
258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/
259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Progression order changes
262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef struct opj_poc {
265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** Resolution num start, Component num start, given by POC */
266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 resno0, compno0;
267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** Layer num end,Resolution num end, Component num end, given by POC */
268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 layno1, resno1, compno1;
269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** Layer num start,Precinct num start, Precinct num end */
270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 layno0, precno0, precno1;
271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** Progression order enum*/
272ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_PROG_ORDER prg1,prg;
273ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** Progression order string*/
274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_CHAR progorder[5];
275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** Tile number */
276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 tile;
277ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** Start and end values for Tile width and height*/
278ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_INT32 tx0,tx1,ty0,ty1;
279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** Start value, initialised in pi_initialise_encode*/
280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 layS, resS, compS, prcS;
281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** End value, initialised in pi_initialise_encode */
282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 layE, resE, compE, prcE;
283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** Start and end values of Tile width and height, initialised in pi_initialise_encode*/
284ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 txS,txE,tyS,tyE,dx,dy;
285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** Temporary values for Tile parts, initialised in pi_create_encode */
286ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 lay_t, res_t, comp_t, prc_t,tx0_t,ty0_t;
287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} opj_poc_t;
288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Compression parameters
291ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * */
292ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef struct opj_cparameters {
293ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** size of tile: tile_size_on = false (not in argument) or = true (in argument) */
294ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_BOOL tile_size_on;
295ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** XTOsiz */
296ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int cp_tx0;
297ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** YTOsiz */
298ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int cp_ty0;
299ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** XTsiz */
300ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int cp_tdx;
301ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** YTsiz */
302ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int cp_tdy;
303ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** allocation by rate/distortion */
304ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int cp_disto_alloc;
305ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** allocation by fixed layer */
306ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int cp_fixed_alloc;
307ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** add fixed_quality */
308ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int cp_fixed_quality;
309ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** fixed layer */
310ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int *cp_matrice;
311ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** comment for coding */
312ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	char *cp_comment;
313ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** csty : coding style */
314ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int csty;
315ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** progression order (default OPJ_LRCP) */
316ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_PROG_ORDER prog_order;
317ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** progression order changes */
318ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	opj_poc_t POC[32];
319ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** number of progression order changes (POC), default to 0 */
320ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 numpocs;
321ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** number of layers */
322ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int tcp_numlayers;
323ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** rates of layers */
324ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	float tcp_rates[100];
325ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** different psnr for successive layers */
326ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	float tcp_distoratio[100];
327ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** number of resolutions */
328ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int numresolution;
329ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** initial code block width, default to 64 */
330ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 	int cblockw_init;
331ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** initial code block height, default to 64 */
332ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int cblockh_init;
333ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** mode switch (cblk_style) */
334ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int mode;
335ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** 1 : use the irreversible DWT 9-7, 0 : use lossless compression (default) */
336ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int irreversible;
337ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** region of interest: affected component in [0..3], -1 means no ROI */
338ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int roi_compno;
339ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** region of interest: upshift value */
340ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int roi_shift;
341ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/* number of precinct size specifications */
342ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int res_spec;
343ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** initial precinct width */
344ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int prcw_init[OPJ_J2K_MAXRLVLS];
345ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** initial precinct height */
346ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int prch_init[OPJ_J2K_MAXRLVLS];
347ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
348ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/**@name command line encoder parameters (not used inside the library) */
349ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/*@{*/
350ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** input file name */
351ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	char infile[OPJ_PATH_LEN];
352ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** output file name */
353ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	char outfile[OPJ_PATH_LEN];
354ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** DEPRECATED. Index generation is now handeld with the opj_encode_with_info() function. Set to NULL */
355ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int index_on;
356ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** DEPRECATED. Index generation is now handeld with the opj_encode_with_info() function. Set to NULL */
357ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	char index[OPJ_PATH_LEN];
358ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** subimage encoding: origin image offset in x direction */
359ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int image_offset_x0;
360ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** subimage encoding: origin image offset in y direction */
361ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int image_offset_y0;
362ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** subsampling value for dx */
363ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int subsampling_dx;
364ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** subsampling value for dy */
365ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int subsampling_dy;
366ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** input file format 0: PGX, 1: PxM, 2: BMP 3:TIF*/
367ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int decod_format;
368ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** output file format 0: J2K, 1: JP2, 2: JPT */
369ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int cod_format;
370ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/*@}*/
371ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
372ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* UniPG>> */ /* NOT YET USED IN THE V2 VERSION OF OPENJPEG */
373ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/**@name JPWL encoding parameters */
374ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/*@{*/
375ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** enables writing of EPC in MH, thus activating JPWL */
376ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_BOOL jpwl_epc_on;
377ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** error protection method for MH (0,1,16,32,37-128) */
378ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int jpwl_hprot_MH;
379ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** tile number of header protection specification (>=0) */
380ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int jpwl_hprot_TPH_tileno[JPWL_MAX_NO_TILESPECS];
381ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** error protection methods for TPHs (0,1,16,32,37-128) */
382ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int jpwl_hprot_TPH[JPWL_MAX_NO_TILESPECS];
383ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** tile number of packet protection specification (>=0) */
384ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int jpwl_pprot_tileno[JPWL_MAX_NO_PACKSPECS];
385ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** packet number of packet protection specification (>=0) */
386ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int jpwl_pprot_packno[JPWL_MAX_NO_PACKSPECS];
387ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** error protection methods for packets (0,1,16,32,37-128) */
388ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int jpwl_pprot[JPWL_MAX_NO_PACKSPECS];
389ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** enables writing of ESD, (0=no/1/2 bytes) */
390ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int jpwl_sens_size;
391ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** sensitivity addressing size (0=auto/2/4 bytes) */
392ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int jpwl_sens_addr;
393ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** sensitivity range (0-3) */
394ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int jpwl_sens_range;
395ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** sensitivity method for MH (-1=no,0-7) */
396ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int jpwl_sens_MH;
397ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** tile number of sensitivity specification (>=0) */
398ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int jpwl_sens_TPH_tileno[JPWL_MAX_NO_TILESPECS];
399ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** sensitivity methods for TPHs (-1=no,0-7) */
400ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int jpwl_sens_TPH[JPWL_MAX_NO_TILESPECS];
401ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/*@}*/
402ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* <<UniPG */
403ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
404ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** Digital Cinema compliance 0-not compliant, 1-compliant*/
405ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_CINEMA_MODE cp_cinema;
406ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** Maximum rate for each component. If == 0, component size limitation is not considered */
407ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int max_comp_size;
408ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** Profile name*/
409ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_RSIZ_CAPABILITIES cp_rsiz;
410ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** Tile part generation*/
411ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	char tp_on;
412ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** Flag for Tile part generation*/
413ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	char tp_flag;
414ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** MCT (multiple component transform) */
415ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	char tcp_mct;
416ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** Enable JPIP indexing*/
417ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_BOOL jpip_on;
418ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** Naive implementation of MCT restricted to a single reversible array based
419ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        encoding without offset concerning all the components. */
420ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	void * mct_data;
421ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} opj_cparameters_t;
422ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
423ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define OPJ_DPARAMETERS_IGNORE_PCLR_CMAP_CDEF_FLAG	0x0001
424ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
425ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
426ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Decompression parameters
427ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * */
428ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef struct opj_dparameters {
429ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/**
430ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	Set the number of highest resolution levels to be discarded.
431ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	The image resolution is effectively divided by 2 to the power of the number of discarded levels.
432ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	The reduce factor is limited by the smallest total number of decomposition levels among tiles.
433ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if != 0, then original dimension divided by 2^(reduce);
434ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if == 0 or not used, image is decoded to the full resolution
435ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	*/
436ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 cp_reduce;
437ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/**
438ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	Set the maximum number of quality layers to decode.
439ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	If there are less quality layers than the specified number, all the quality layers are decoded.
440ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if != 0, then only the first "layer" layers are decoded;
441ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	if == 0 or not used, all the quality layers are decoded
442ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	*/
443ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 cp_layer;
444ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
445ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/**@name command line decoder parameters (not used inside the library) */
446ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/*@{*/
447ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** input file name */
448ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	char infile[OPJ_PATH_LEN];
449ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** output file name */
450ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	char outfile[OPJ_PATH_LEN];
451ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** input file format 0: J2K, 1: JP2, 2: JPT */
452ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int decod_format;
453ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** output file format 0: PGX, 1: PxM, 2: BMP */
454ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int cod_format;
455ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
456ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** Decoding area left boundary */
457ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 DA_x0;
458ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** Decoding area right boundary */
459ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 DA_x1;
460ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** Decoding area up boundary */
461ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 DA_y0;
462ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** Decoding area bottom boundary */
463ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 DA_y1;
464ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** Verbose mode */
465ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_BOOL m_verbose;
466ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
467ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** tile number ot the decoded tile*/
468ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 tile_index;
469ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** Nb of tile to decode */
470ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 nb_tile_to_decode;
471ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
472ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/*@}*/
473ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
474ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* UniPG>> */ /* NOT YET USED IN THE V2 VERSION OF OPENJPEG */
475ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/**@name JPWL decoding parameters */
476ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/*@{*/
477ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** activates the JPWL correction capabilities */
478ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_BOOL jpwl_correct;
479ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** expected number of components */
480ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int jpwl_exp_comps;
481ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** maximum number of tiles */
482ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int jpwl_max_tiles;
483ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/*@}*/
484ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* <<UniPG */
485ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
486ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	unsigned int flags;
487ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
488ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} opj_dparameters_t;
489ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
490ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
491ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
492ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * JPEG2000 codec V2.
493ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * */
494ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef void * opj_codec_t;
495ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
496ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*
497ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov==========================================================
498ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   I/O stream typedef definitions
499ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov==========================================================
500ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/
501ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
502ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
503ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Stream open flags.
504ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * */
505ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/** The stream was opened for reading. */
506ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define OPJ_STREAM_READ	OPJ_TRUE
507ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/** The stream was opened for writing. */
508ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define OPJ_STREAM_WRITE OPJ_FALSE
509ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
510ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*
511ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Callback function prototype for read function
512ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
513ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef OPJ_SIZE_T (* opj_stream_read_fn) (void * p_buffer, OPJ_SIZE_T p_nb_bytes, void * p_user_data) ;
514ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
515ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*
516ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Callback function prototype for write function
517ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
518ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef OPJ_SIZE_T (* opj_stream_write_fn) (void * p_buffer, OPJ_SIZE_T p_nb_bytes, void * p_user_data) ;
519ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
520ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*
521ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Callback function prototype for skip function
522ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
523ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef OPJ_OFF_T (* opj_stream_skip_fn) (OPJ_OFF_T p_nb_bytes, void * p_user_data) ;
524ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
525ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*
526ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Callback function prototype for seek function
527ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
528ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef OPJ_BOOL (* opj_stream_seek_fn) (OPJ_OFF_T p_nb_bytes, void * p_user_data) ;
529ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
530ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*
531ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Callback function prototype for free user data function
532ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
533ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef void (* opj_stream_free_user_data_fn) (void * p_user_data) ;
534ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
535ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*
536ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * JPEG2000 Stream.
537ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
538ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef void * opj_stream_t;
539ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
540ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*
541ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov==========================================================
542ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   image typedef definitions
543ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov==========================================================
544ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/
545ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
546ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
547ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Defines a single image component
548ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * */
549ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef struct opj_image_comp {
550ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** XRsiz: horizontal separation of a sample of ith component with respect to the reference grid */
551ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 dx;
552ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** YRsiz: vertical separation of a sample of ith component with respect to the reference grid */
553ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 dy;
554ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** data width */
555ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 w;
556ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** data height */
557ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 h;
558ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** x component offset compared to the whole image */
559ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 x0;
560ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** y component offset compared to the whole image */
561ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 y0;
562ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** precision */
563ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 prec;
564ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** image depth in bits */
565ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 bpp;
566ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** signed (1) / unsigned (0) */
567ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 sgnd;
568ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** number of decoded resolution */
569ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 resno_decoded;
570ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** number of division by 2 of the out image compared to the original size of image */
571ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 factor;
572ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** image component data */
573ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_INT32 *data;
574ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /** alpha channel */
575ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  OPJ_UINT16 alpha;
576ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} opj_image_comp_t;
577ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
578ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
579ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Defines image data and characteristics
580ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * */
581ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef struct opj_image {
582ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** XOsiz: horizontal offset from the origin of the reference grid to the left side of the image area */
583ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 x0;
584ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** YOsiz: vertical offset from the origin of the reference grid to the top side of the image area */
585ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 y0;
586ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** Xsiz: width of the reference grid */
587ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 x1;
588ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** Ysiz: height of the reference grid */
589ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 y1;
590ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** number of components in the image */
591ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 numcomps;
592ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** color space: sRGB, Greyscale or YUV */
593ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_COLOR_SPACE color_space;
594ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** image components */
595ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	opj_image_comp_t *comps;
596ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** 'restricted' ICC profile */
597ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_BYTE *icc_profile_buf;
598ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** size of ICC profile */
599ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 icc_profile_len;
600ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
601ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_INT8  useColorSpace;  //liang
602ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} opj_image_t;
603ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
604ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
605ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
606ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Component parameters structure used by the opj_image_create function
607ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * */
608ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef struct opj_image_comptparm {
609ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** XRsiz: horizontal separation of a sample of ith component with respect to the reference grid */
610ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 dx;
611ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** YRsiz: vertical separation of a sample of ith component with respect to the reference grid */
612ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 dy;
613ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** data width */
614ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 w;
615ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** data height */
616ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 h;
617ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** x component offset compared to the whole image */
618ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 x0;
619ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** y component offset compared to the whole image */
620ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 y0;
621ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** precision */
622ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 prec;
623ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** image depth in bits */
624ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 bpp;
625ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** signed (1) / unsigned (0) */
626ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 sgnd;
627ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} opj_image_cmptparm_t;
628ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
629ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
630ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*
631ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov==========================================================
632ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   Information on the JPEG 2000 codestream
633ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov==========================================================
634ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/
635ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* QUITE EXPERIMENTAL FOR THE MOMENT */
636ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
637ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
638ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Index structure : Information concerning a packet inside tile
639ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * */
640ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef struct opj_packet_info {
641ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** packet start position (including SOP marker if it exists) */
642ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_OFF_T start_pos;
643ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** end of packet header position (including EPH marker if it exists)*/
644ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_OFF_T end_ph_pos;
645ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** packet end position */
646ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_OFF_T end_pos;
647ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** packet distorsion */
648ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	double disto;
649ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} opj_packet_info_t;
650ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
651ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
652ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* UniPG>> */
653ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
654ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Marker structure
655ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * */
656ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef struct opj_marker_info {
657ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** marker type */
658ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	unsigned short int type;
659ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** position in codestream */
660ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_OFF_T pos;
661ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** length, marker val included */
662ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int len;
663ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} opj_marker_info_t;
664ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* <<UniPG */
665ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
666ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
667ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Index structure : Information concerning tile-parts
668ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/
669ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef struct opj_tp_info {
670ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** start position of tile part */
671ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int tp_start_pos;
672ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** end position of tile part header */
673ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int tp_end_header;
674ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** end position of tile part */
675ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int tp_end_pos;
676ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** start packet of tile part */
677ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int tp_start_pack;
678ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** number of packets of tile part */
679ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int tp_numpacks;
680ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} opj_tp_info_t;
681ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
682ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
683ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Index structure : information regarding tiles
684ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/
685ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef struct opj_tile_info {
686ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** value of thresh for each layer by tile cfr. Marcela   */
687ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	double *thresh;
688ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** number of tile */
689ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int tileno;
690ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** start position */
691ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int start_pos;
692ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** end position of the header */
693ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int end_header;
694ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** end position */
695ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int end_pos;
696ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** precinct number for each resolution level (width) */
697ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int pw[33];
698ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** precinct number for each resolution level (height) */
699ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int ph[33];
700ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** precinct size (in power of 2), in X for each resolution level */
701ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int pdx[33];
702ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** precinct size (in power of 2), in Y for each resolution level */
703ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int pdy[33];
704ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** information concerning packets inside tile */
705ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	opj_packet_info_t *packet;
706ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** add fixed_quality */
707ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int numpix;
708ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** add fixed_quality */
709ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	double distotile;
710ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  	/** number of markers */
711ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int marknum;
712ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** list of markers */
713ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	opj_marker_info_t *marker;
714ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** actual size of markers array */
715ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int maxmarknum;
716ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** number of tile parts */
717ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int num_tps;
718ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** information concerning tile parts */
719ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	opj_tp_info_t *tp;
720ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} opj_tile_info_t;
721ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
722ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
723ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Index structure of the codestream
724ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/
725ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef struct opj_codestream_info {
726ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** maximum distortion reduction on the whole image (add for Marcela) */
727ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	double D_max;
728ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** packet number */
729ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int packno;
730ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** writing the packet in the index with t2_encode_packets */
731ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int index_write;
732ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** image width */
733ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int image_w;
734ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** image height */
735ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int image_h;
736ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** progression order */
737ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_PROG_ORDER prog;
738ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** tile size in x */
739ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int tile_x;
740ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** tile size in y */
741ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int tile_y;
742ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** */
743ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int tile_Ox;
744ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** */
745ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int tile_Oy;
746ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** number of tiles in X */
747ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int tw;
748ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** number of tiles in Y */
749ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int th;
750ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** component numbers */
751ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int numcomps;
752ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** number of layer */
753ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int numlayers;
754ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** number of decomposition for each component */
755ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int *numdecompos;
756ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* UniPG>> */
757ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** number of markers */
758ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int marknum;
759ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** list of markers */
760ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	opj_marker_info_t *marker;
761ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** actual size of markers array */
762ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int maxmarknum;
763ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* <<UniPG */
764ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** main header position */
765ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int main_head_start;
766ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** main header position */
767ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int main_head_end;
768ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** codestream's size */
769ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int codestream_size;
770ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** information regarding tiles inside image */
771ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	opj_tile_info_t *tile;
772ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} opj_codestream_info_t;
773ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
774ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* <----------------------------------------------------------- */
775ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* new output managment of the codestream information and index */
776ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
777ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
778ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Tile-component coding parameters information
779ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
780ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef struct opj_tccp_info
781ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
782ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** component index */
783ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 compno;
784ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** coding style */
785ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 csty;
786ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** number of resolutions */
787ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 numresolutions;
788ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** code-blocks width */
789ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 cblkw;
790ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** code-blocks height */
791ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 cblkh;
792ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** code-block coding style */
793ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 cblksty;
794ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** discrete wavelet transform identifier */
795ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 qmfbid;
796ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** quantisation style */
797ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 qntsty;
798ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** stepsizes used for quantization */
799ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 stepsizes_mant[OPJ_J2K_MAXBANDS];
800ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** stepsizes used for quantization */
801ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 stepsizes_expn[OPJ_J2K_MAXBANDS];
802ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** number of guard bits */
803ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 numgbits;
804ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** Region Of Interest shift */
805ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_INT32 roishift;
806ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** precinct width */
807ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 prcw[OPJ_J2K_MAXRLVLS];
808ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** precinct height */
809ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 prch[OPJ_J2K_MAXRLVLS];
810ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
811ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovopj_tccp_info_t;
812ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
813ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
814ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Tile coding parameters information
815ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
816ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef struct opj_tile_v2_info {
817ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
818ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** number (index) of tile */
819ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	int tileno;
820ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** coding style */
821ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 csty;
822ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** progression order */
823ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_PROG_ORDER prg;
824ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** number of layers */
825ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 numlayers;
826ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** multi-component transform identifier */
827ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 mct;
828ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
829ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** information concerning tile component parameters*/
830ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	opj_tccp_info_t *tccp_info;
831ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
832ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} opj_tile_info_v2_t;
833ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
834ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
835ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Information structure about the codestream (FIXME should be expand and enhance)
836ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
837ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef struct opj_codestream_info_v2 {
838ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/* Tile info */
839ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** tile origin in x = XTOsiz */
840ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 tx0;
841ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** tile origin in y = YTOsiz */
842ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 ty0;
843ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** tile size in x = XTsiz */
844ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 tdx;
845ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** tile size in y = YTsiz */
846ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 tdy;
847ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** number of tiles in X */
848ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 tw;
849ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** number of tiles in Y */
850ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 th;
851ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
852ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** number of components*/
853ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 nbcomps;
854ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
855ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** Default information regarding tiles inside image */
856ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	opj_tile_info_v2_t m_default_tile_info;
857ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
858ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** information regarding tiles inside image */
859ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	opj_tile_info_v2_t *tile_info; /* FIXME not used for the moment */
860ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
861ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} opj_codestream_info_v2_t;
862ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
863ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
864ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
865ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Index structure about a tile part
866ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
867ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef struct opj_tp_index {
868ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** start position */
869ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_OFF_T start_pos;
870ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** end position of the header */
871ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_OFF_T end_header;
872ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** end position */
873ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_OFF_T end_pos;
874ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
875ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} opj_tp_index_t;
876ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
877ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
878ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Index structure about a tile
879ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
880ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef struct opj_tile_index {
881ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** tile index */
882ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 tileno;
883ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
884ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** number of tile parts */
885ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 nb_tps;
886ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** current nb of tile part (allocated)*/
887ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 current_nb_tps;
888ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** current tile-part index */
889ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 current_tpsno;
890ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** information concerning tile parts */
891ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	opj_tp_index_t *tp_index;
892ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
893ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/* UniPG>> */ /* NOT USED FOR THE MOMENT IN THE V2 VERSION */
894ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		/** number of markers */
895ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		OPJ_UINT32 marknum;
896ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		/** list of markers */
897ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		opj_marker_info_t *marker;
898ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		/** actual size of markers array */
899ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		OPJ_UINT32 maxmarknum;
900ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/* <<UniPG */
901ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
902ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** packet number */
903ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 nb_packet;
904ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** information concerning packets inside tile */
905ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	opj_packet_info_t *packet_index;
906ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
907ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} opj_tile_index_t;
908ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
909ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
910ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Index structure of the codestream (FIXME should be expand and enhance)
911ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
912ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef struct opj_codestream_index {
913ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** main header start position (SOC position) */
914ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_OFF_T main_head_start;
915ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** main header end position (first SOT position) */
916ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_OFF_T main_head_end;
917ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
918ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** codestream's size */
919ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT64 codestream_size;
920ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
921ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* UniPG>> */ /* NOT USED FOR THE MOMENT IN THE V2 VERSION */
922ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** number of markers */
923ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 marknum;
924ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** list of markers */
925ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	opj_marker_info_t *marker;
926ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** actual size of markers array */
927ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 maxmarknum;
928ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* <<UniPG */
929ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
930ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** */
931ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_UINT32 nb_of_tiles;
932ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** */
933ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	opj_tile_index_t *tile_index; /* FIXME not used for the moment */
934ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
935ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}opj_codestream_index_t;
936ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* -----------------------------------------------------------> */
937ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
938ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*
939ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov==========================================================
940ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   Metadata from the JP2file
941ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov==========================================================
942ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/
943ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
944ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
945ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Info structure of the JP2 file
946ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * EXPERIMENTAL FOR THE MOMENT
947ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
948ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef struct opj_jp2_metadata {
949ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** */
950ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_INT32	not_used;
951ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
952ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} opj_jp2_metadata_t;
953ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
954ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
955ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Index structure of the JP2 file
956ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * EXPERIMENTAL FOR THE MOMENT
957ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
958ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovtypedef struct opj_jp2_index {
959ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	/** */
960ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov	OPJ_INT32	not_used;
961ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
962ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} opj_jp2_index_t;
963ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
964ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
965ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef __cplusplus
966ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovextern "C" {
967ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
968ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
969ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
970ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*
971ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov==========================================================
972ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   openjpeg version
973ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov==========================================================
974ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/
975ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
976ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* Get the version of the openjpeg library*/
977ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API const char * OPJ_CALLCONV opj_version(void);
978ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
979ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*
980ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov==========================================================
981ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   image functions definitions
982ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov==========================================================
983ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/
984ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
985ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
986ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Create an image
987ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
988ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param numcmpts      number of components
989ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param cmptparms     components parameters
990ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param clrspc        image color space
991ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @return returns      a new image structure if successful, returns NULL otherwise
992ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * */
993ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API opj_image_t* OPJ_CALLCONV opj_image_create(OPJ_UINT32 numcmpts, opj_image_cmptparm_t *cmptparms, OPJ_COLOR_SPACE clrspc);
994ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
995ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
996ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Deallocate any resources associated with an image
997ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
998ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param image         image to be destroyed
999ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
1000ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API void OPJ_CALLCONV opj_image_destroy(opj_image_t *image);
1001ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1002ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1003ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Creates an image without allocating memory for the image (used in the new version of the library).
1004ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1005ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	numcmpts    the number of components
1006ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	cmptparms   the components parameters
1007ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	clrspc      the image color space
1008ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1009ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @return	a new image structure if successful, NULL otherwise.
1010ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/
1011ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API opj_image_t* OPJ_CALLCONV opj_image_tile_create(OPJ_UINT32 numcmpts, opj_image_cmptparm_t *cmptparms, OPJ_COLOR_SPACE clrspc);
1012ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1013ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*
1014ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov==========================================================
1015ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   stream functions definitions
1016ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov==========================================================
1017ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/
1018ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1019ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1020ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Creates an abstract stream. This function does nothing except allocating memory and initializing the abstract stream.
1021ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1022ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_is_input		if set to true then the stream will be an input stream, an output stream else.
1023ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1024ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @return	a stream object.
1025ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/
1026ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API opj_stream_t* OPJ_CALLCONV opj_stream_default_create(OPJ_BOOL p_is_input);
1027ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1028ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1029ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Creates an abstract stream. This function does nothing except allocating memory and initializing the abstract stream.
1030ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1031ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_buffer_size  FIXME DOC
1032ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_is_input		if set to true then the stream will be an input stream, an output stream else.
1033ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1034ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @return	a stream object.
1035ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/
1036ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API opj_stream_t* OPJ_CALLCONV opj_stream_create(OPJ_SIZE_T p_buffer_size, OPJ_BOOL p_is_input);
1037ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1038ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1039ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Destroys a stream created by opj_create_stream. This function does NOT close the abstract stream. If needed the user must
1040ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * close its own implementation of the stream.
1041ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1042ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_stream	the stream to destroy.
1043ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
1044ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API void OPJ_CALLCONV opj_stream_destroy(opj_stream_t* p_stream);
1045ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1046ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1047ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Destroys a stream created by opj_create_stream. This function does NOT close the abstract stream.
1048ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * If needed the user must close its own implementation of the stream.
1049ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1050ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_stream	the stream to destroy.
1051ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
1052ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API void OPJ_CALLCONV opj_stream_destroy_v3(opj_stream_t* p_stream);
1053ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1054ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1055ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Sets the given function to be used as a read function.
1056ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param		p_stream	the stream to modify
1057ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param		p_function	the function to use a read function.
1058ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/
1059ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API void OPJ_CALLCONV opj_stream_set_read_function(opj_stream_t* p_stream, opj_stream_read_fn p_function);
1060ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1061ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1062ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Sets the given function to be used as a write function.
1063ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param		p_stream	the stream to modify
1064ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param		p_function	the function to use a write function.
1065ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/
1066ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API void OPJ_CALLCONV opj_stream_set_write_function(opj_stream_t* p_stream, opj_stream_write_fn p_function);
1067ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1068ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1069ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Sets the given function to be used as a skip function.
1070ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param		p_stream	the stream to modify
1071ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param		p_function	the function to use a skip function.
1072ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/
1073ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API void OPJ_CALLCONV opj_stream_set_skip_function(opj_stream_t* p_stream, opj_stream_skip_fn p_function);
1074ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1075ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1076ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Sets the given function to be used as a seek function, the stream is then seekable.
1077ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param		p_stream	the stream to modify
1078ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param		p_function	the function to use a skip function.
1079ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/
1080ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API void OPJ_CALLCONV opj_stream_set_seek_function(opj_stream_t* p_stream, opj_stream_seek_fn p_function);
1081ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1082ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1083ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Sets the given data to be used as a user data for the stream.
1084ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param		p_stream	the stream to modify
1085ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param		p_data		the data to set.
1086ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @warning depending on your source object p_stream this function may leak, use opj_stream_set_user_data_v3
1087ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/
1088ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_DEPRECATED(OPJ_API void OPJ_CALLCONV opj_stream_set_user_data (opj_stream_t* p_stream, void * p_data));
1089ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1090ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1091ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Sets the given data to be used as a user data for the stream.
1092ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param		p_stream	the stream to modify
1093ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param		p_data		the data to set.
1094ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param		p_function	the function to free p_data when opj_stream_destroy() is called.
1095ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/
1096ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API void OPJ_CALLCONV opj_stream_set_user_data_v3 (opj_stream_t* p_stream, void * p_data, opj_stream_free_user_data_fn p_function);
1097ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1098ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1099ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Sets the length of the user data for the stream.
1100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param p_stream    the stream to modify
1102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param data_length length of the user_data.
1103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/
1104ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API void OPJ_CALLCONV opj_stream_set_user_data_length(opj_stream_t* p_stream, OPJ_UINT64 data_length);
1105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Create a stream from a file identified with its filename with default parameters (helper function)
1108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param fname             the filename of the file to stream
1109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param p_is_read_stream  whether the stream is a read stream (true) or not (false)
1110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/
1111ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API opj_stream_t* OPJ_CALLCONV opj_stream_create_default_file_stream_v3 (const char *fname, OPJ_BOOL p_is_read_stream);
1112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/** Create a stream from a file identified with its filename with a specific buffer size
1114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param fname             the filename of the file to stream
1115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param p_buffer_size     size of the chunk used to stream
1116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param p_is_read_stream  whether the stream is a read stream (true) or not (false)
1117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/
1118ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API opj_stream_t* OPJ_CALLCONV opj_stream_create_file_stream_v3 (const char *fname,
1119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                                                     OPJ_SIZE_T p_buffer_size,
1120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                                                     OPJ_BOOL p_is_read_stream);
1121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*
1123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov==========================================================
1124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   event manager functions definitions
1125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov==========================================================
1126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/
1127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Set the info handler use by openjpeg.
1129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param p_codec       the codec previously initialise
1130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param p_callback    the callback function which will be used
1131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param p_user_data   client object where will be returned the message
1132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/
1133ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_info_handler(opj_codec_t * p_codec,
1134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                                   opj_msg_callback p_callback,
1135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                                   void * p_user_data);
1136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Set the warning handler use by openjpeg.
1138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param p_codec       the codec previously initialise
1139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param p_callback    the callback function which will be used
1140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param p_user_data   client object where will be returned the message
1141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/
1142ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_warning_handler(opj_codec_t * p_codec,
1143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                                      opj_msg_callback p_callback,
1144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                                      void * p_user_data);
1145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Set the error handler use by openjpeg.
1147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param p_codec       the codec previously initialise
1148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param p_callback    the callback function which will be used
1149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param p_user_data   client object where will be returned the message
1150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/
1151ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_error_handler(opj_codec_t * p_codec,
1152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                                    opj_msg_callback p_callback,
1153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                                    void * p_user_data);
1154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*
1156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov==========================================================
1157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   codec functions definitions
1158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov==========================================================
1159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/
1160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Creates a J2K/JP2 decompression structure
1163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param format 		Decoder to select
1164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @return Returns a handle to a decompressor if successful, returns NULL otherwise
1166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * */
1167ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API opj_codec_t* OPJ_CALLCONV opj_create_decompress(OPJ_CODEC_FORMAT format);
1168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Destroy a decompressor handle
1171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_codec			decompressor handle to destroy
1173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
1174ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API void OPJ_CALLCONV opj_destroy_codec(opj_codec_t * p_codec);
1175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Read after the codestream if necessary
1178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_codec			the JPEG2000 codec to read.
1179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_stream		the JPEG2000 stream.
1180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
1181ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API OPJ_BOOL OPJ_CALLCONV opj_end_decompress (	opj_codec_t *p_codec,
1182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov													opj_stream_t *p_stream);
1183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Set decoding parameters to default values
1187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param parameters Decompression parameters
1188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
1189ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API void OPJ_CALLCONV opj_set_default_decoder_parameters(opj_dparameters_t *parameters);
1190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Setup the decoder with decompression parameters provided by the user and with the message handler
1193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * provided by the user.
1194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param p_codec 		decompressor handler
1196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param parameters 	decompression parameters
1197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @return true			if the decoder is correctly set
1199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
1200ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API OPJ_BOOL OPJ_CALLCONV opj_setup_decoder(opj_codec_t *p_codec,
1201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov												opj_dparameters_t *parameters );
1202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Decodes an image header.
1205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_stream		the jpeg2000 stream.
1207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_codec			the jpeg2000 codec to read.
1208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_image			the image structure initialized with the characteristics of encoded image.
1209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @return true				if the main header of the codestream and the JP2 header is correctly read.
1211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
1212ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API OPJ_BOOL OPJ_CALLCONV opj_read_header (	opj_stream_t *p_stream,
1213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov												opj_codec_t *p_codec,
1214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov												opj_image_t **p_image);
1215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Sets the given area to be decoded. This function should be called right after opj_read_header and before any tile header reading.
1218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_codec			the jpeg2000 codec.
1220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_image         the decoded image previously setted by opj_read_header
1221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_start_x		the left position of the rectangle to decode (in image coordinates).
1222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_end_x			the right position of the rectangle to decode (in image coordinates).
1223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_start_y		the up position of the rectangle to decode (in image coordinates).
1224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_end_y			the bottom position of the rectangle to decode (in image coordinates).
1225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @return	true			if the area could be set.
1227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
1228ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_decode_area(	opj_codec_t *p_codec,
1229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov													opj_image_t* p_image,
1230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov													OPJ_INT32 p_start_x, OPJ_INT32 p_start_y,
1231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov													OPJ_INT32 p_end_x, OPJ_INT32 p_end_y );
1232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Decode an image from a JPEG-2000 codestream
1235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param p_decompressor 	decompressor handle
1237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param p_stream			Input buffer stream
1238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param p_image 			the decoded image
1239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @return 					true if success, otherwise false
1240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * */
1241ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API OPJ_BOOL OPJ_CALLCONV opj_decode(   opj_codec_t *p_decompressor,
1242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                            opj_stream_t *p_stream,
1243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                            opj_image_t *p_image);
1244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Get the decoded tile from the codec
1247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_codec			the jpeg2000 codec.
1249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_stream		input streamm
1250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_image			output image
1251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	tile_index		index of the tile which will be decode
1252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @return					true if success, otherwise false
1254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
1255ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API OPJ_BOOL OPJ_CALLCONV opj_get_decoded_tile(	opj_codec_t *p_codec,
1256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov													opj_stream_t *p_stream,
1257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov													opj_image_t *p_image,
1258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov													OPJ_UINT32 tile_index);
1259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Set the resolution factor of the decoded image
1262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_codec			the jpeg2000 codec.
1263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	res_factor		resolution factor to set
1264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @return					true if success, otherwise false
1266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
1267ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_decoded_resolution_factor(opj_codec_t *p_codec, OPJ_UINT32 res_factor);
1268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Writes a tile with the given data.
1271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1272ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_codec		        the jpeg2000 codec.
1273ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_tile_index		the index of the tile to write. At the moment, the tiles must be written from 0 to n-1 in sequence.
1274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_data				pointer to the data to write. Data is arranged in sequence, data_comp0, then data_comp1, then ... NO INTERLEAVING should be set.
1275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_data_size			this value os used to make sure the data being written is correct. The size must be equal to the sum for each component of
1276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *                              tile_width * tile_height * component_size. component_size can be 1,2 or 4 bytes, depending on the precision of the given component.
1277ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_stream			the stream to write data to.
1278ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @return	true if the data could be written.
1280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
1281ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API OPJ_BOOL OPJ_CALLCONV opj_write_tile (	opj_codec_t *p_codec,
1282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov												OPJ_UINT32 p_tile_index,
1283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov												OPJ_BYTE * p_data,
1284ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov												OPJ_UINT32 p_data_size,
1285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov												opj_stream_t *p_stream );
1286ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Reads a tile header. This function is compulsory and allows one to know the size of the tile thta will be decoded.
1289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * The user may need to refer to the image got by opj_read_header to understand the size being taken by the tile.
1290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1291ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_codec			the jpeg2000 codec.
1292ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_tile_index	pointer to a value that will hold the index of the tile being decoded, in case of success.
1293ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_data_size		pointer to a value that will hold the maximum size of the decoded data, in case of success. In case
1294ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *							of truncated codestreams, the actual number of bytes decoded may be lower. The computation of the size is the same
1295ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *							as depicted in opj_write_tile.
1296ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_tile_x0		pointer to a value that will hold the x0 pos of the tile (in the image).
1297ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_tile_y0		pointer to a value that will hold the y0 pos of the tile (in the image).
1298ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_tile_x1		pointer to a value that will hold the x1 pos of the tile (in the image).
1299ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_tile_y1		pointer to a value that will hold the y1 pos of the tile (in the image).
1300ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_nb_comps		pointer to a value that will hold the number of components in the tile.
1301ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_should_go_on	pointer to a boolean that will hold the fact that the decoding should go on. In case the
1302ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *							codestream is over at the time of the call, the value will be set to false. The user should then stop
1303ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *							the decoding.
1304ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_stream		the stream to decode.
1305ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @return	true			if the tile header could be decoded. In case the decoding should end, the returned value is still true.
1306ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *							returning false may be the result of a shortage of memory or an internal error.
1307ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
1308ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API OPJ_BOOL OPJ_CALLCONV opj_read_tile_header(	opj_codec_t *p_codec,
1309ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov												opj_stream_t * p_stream,
1310ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov												OPJ_UINT32 * p_tile_index,
1311ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov												OPJ_UINT32 * p_data_size,
1312ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov												OPJ_INT32 * p_tile_x0, OPJ_INT32 * p_tile_y0,
1313ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov												OPJ_INT32 * p_tile_x1, OPJ_INT32 * p_tile_y1,
1314ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov												OPJ_UINT32 * p_nb_comps,
1315ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov												OPJ_BOOL * p_should_go_on );
1316ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1317ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1318ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Reads a tile data. This function is compulsory and allows one to decode tile data. opj_read_tile_header should be called before.
1319ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * The user may need to refer to the image got by opj_read_header to understand the size being taken by the tile.
1320ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1321ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_codec			the jpeg2000 codec.
1322ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_tile_index	the index of the tile being decoded, this should be the value set by opj_read_tile_header.
1323ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_data			pointer to a memory block that will hold the decoded data.
1324ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_data_size		size of p_data. p_data_size should be bigger or equal to the value set by opj_read_tile_header.
1325ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_stream		the stream to decode.
1326ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1327ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @return	true			if the data could be decoded.
1328ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
1329ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API OPJ_BOOL OPJ_CALLCONV opj_decode_tile_data(	opj_codec_t *p_codec,
1330ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov													OPJ_UINT32 p_tile_index,
1331ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov													OPJ_BYTE * p_data,
1332ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov													OPJ_UINT32 p_data_size,
1333ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov													opj_stream_t *p_stream );
1334ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1335ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* COMPRESSION FUNCTIONS*/
1336ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1337ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1338ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Creates a J2K/JP2 compression structure
1339ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param 	format 		Coder to select
1340ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @return 				Returns a handle to a compressor if successful, returns NULL otherwise
1341ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
1342ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API opj_codec_t* OPJ_CALLCONV opj_create_compress(OPJ_CODEC_FORMAT format);
1343ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1344ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1345ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovSet encoding parameters to default values, that means :
1346ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov<ul>
1347ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov<li>Lossless
1348ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov<li>1 tile
1349ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov<li>Size of precinct : 2^15 x 2^15 (means 1 precinct)
1350ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov<li>Size of code-block : 64 x 64
1351ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov<li>Number of resolutions: 6
1352ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov<li>No SOP marker in the codestream
1353ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov<li>No EPH marker in the codestream
1354ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov<li>No sub-sampling in x or y direction
1355ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov<li>No mode switch activated
1356ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov<li>Progression order: LRCP
1357ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov<li>No index file
1358ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov<li>No ROI upshifted
1359ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov<li>No offset of the origin of the image
1360ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov<li>No offset of the origin of the tiles
1361ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov<li>Reversible DWT 5-3
1362ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov</ul>
1363ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov@param parameters Compression parameters
1364ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/
1365ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API void OPJ_CALLCONV opj_set_default_encoder_parameters(opj_cparameters_t *parameters);
1366ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1367ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1368ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Setup the encoder parameters using the current image and using user parameters.
1369ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param p_codec 		Compressor handle
1370ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param parameters 	Compression parameters
1371ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param image 		Input filled image
1372ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
1373ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API OPJ_BOOL OPJ_CALLCONV opj_setup_encoder(opj_codec_t *p_codec,
1374ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov												opj_cparameters_t *parameters,
1375ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov												opj_image_t *image);
1376ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1377ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1378ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Start to compress the current image.
1379ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param p_codec 		Compressor handle
1380ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param image 	    Input filled image
1381ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param p_stream 		Input stgream
1382ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
1383ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API OPJ_BOOL OPJ_CALLCONV opj_start_compress (	opj_codec_t *p_codec,
1384ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov													opj_image_t * p_image,
1385ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov													opj_stream_t *p_stream);
1386ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1387ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1388ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * End to compress the current image.
1389ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param p_codec 		Compressor handle
1390ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param p_stream 		Input stgream
1391ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
1392ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API OPJ_BOOL OPJ_CALLCONV opj_end_compress (opj_codec_t *p_codec,
1393ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov												opj_stream_t *p_stream);
1394ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1395ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1396ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Encode an image into a JPEG-2000 codestream
1397ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param p_codec 		compressor handle
1398ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param p_stream 		Output buffer stream
1399ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1400ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @return 				Returns true if successful, returns false otherwise
1401ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
1402ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API OPJ_BOOL OPJ_CALLCONV opj_encode(opj_codec_t *p_codec,
1403ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                         opj_stream_t *p_stream);
1404ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*
1405ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov==========================================================
1406ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   codec output functions definitions
1407ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov==========================================================
1408ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/
1409ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* EXPERIMENTAL FUNCTIONS FOR NOW, USED ONLY IN J2K_DUMP*/
1410ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1411ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1412ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovDestroy Codestream information after compression or decompression
1413ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov@param cstr_info Codestream information structure
1414ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/
1415ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API void OPJ_CALLCONV opj_destroy_cstr_info(opj_codestream_info_v2_t **cstr_info);
1416ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1417ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1418ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1419ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Dump the codec information into the output stream
1420ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1421ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_codec			the jpeg2000 codec.
1422ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	info_flag		type of information dump.
1423ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	output_stream	output stream where dump the informations get from the codec.
1424ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1425ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
1426ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API void OPJ_CALLCONV opj_dump_codec(	opj_codec_t *p_codec,
1427ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov											OPJ_INT32 info_flag,
1428ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov											FILE* output_stream);
1429ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1430ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1431ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Get the codestream information from the codec
1432ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1433ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_codec			the jpeg2000 codec.
1434ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1435ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @return					a pointer to a codestream information structure.
1436ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1437ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
1438ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API opj_codestream_info_v2_t* OPJ_CALLCONV opj_get_cstr_info(opj_codec_t *p_codec);
1439ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1440ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1441ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Get the codestream index from the codec
1442ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1443ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_codec			the jpeg2000 codec.
1444ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1445ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @return					a pointer to a codestream index structure.
1446ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1447ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
1448ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API opj_codestream_index_t * OPJ_CALLCONV opj_get_cstr_index(opj_codec_t *p_codec);
1449ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1450ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API void OPJ_CALLCONV opj_destroy_cstr_index(opj_codestream_index_t **p_cstr_index);
1451ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1452ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1453ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1454ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Get the JP2 file information from the codec FIXME
1455ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1456ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_codec			the jpeg2000 codec.
1457ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1458ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @return					a pointer to a JP2 metadata structure.
1459ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1460ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
1461ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API opj_jp2_metadata_t* OPJ_CALLCONV opj_get_jp2_metadata(opj_codec_t *p_codec);
1462ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1463ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1464ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Get the JP2 file index from the codec FIXME
1465ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1466ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_codec			the jpeg2000 codec.
1467ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1468ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @return					a pointer to a JP2 index structure.
1469ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1470ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
1471ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API opj_jp2_index_t* OPJ_CALLCONV opj_get_jp2_index(opj_codec_t *p_codec);
1472ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1473ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1474ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*
1475ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov==========================================================
1476ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov   MCT functions
1477ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov==========================================================
1478ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov*/
1479ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1480ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/**
1481ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * Sets the MCT matrix to use.
1482ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1483ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	parameters		the parameters to change.
1484ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	pEncodingMatrix	the encoding matrix.
1485ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	p_dc_shift		the dc shift coefficients to use.
1486ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @param	pNbComp			the number of components of the image.
1487ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov *
1488ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov * @return	true if the parameters could be set.
1489ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov */
1490ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovOPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_MCT( opj_cparameters_t *parameters,
1491ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		                               	   OPJ_FLOAT32 * pEncodingMatrix,
1492ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		                               	   OPJ_INT32 * p_dc_shift,
1493ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov		                               	   OPJ_UINT32 pNbComp);
1494ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1495ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1496ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1497ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef __cplusplus
1498ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
1499ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
1500ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1501ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif /* OPENJPEG_H */
1502