ABI
Tracker

(OpenJPEG)




Headers diff: 2.1.2 vs current



 openjpeg.h (2.1.2)   openjpeg.h (current) 
/* /*
* The copyright in this software is being made available under the 2-claus * The copyright in this software is being made available under the 2-clause
es s
* BSD License, included below. This software may be subject to other third * BSD License, included below. This software may be subject to other third
* party and contributor rights, including patent rights, and no such right * party and contributor rights, including patent rights, and no such rights
s * are granted under this license.
* are granted under this license. *
* * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
* Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium * Copyright (c) 2002-2014, Professor Benoit Macq
* Copyright (c) 2002-2014, Professor Benoit Macq * Copyright (c) 2001-2003, David Janssens
* Copyright (c) 2001-2003, David Janssens * Copyright (c) 2002-2003, Yannick Verschueren
* Copyright (c) 2002-2003, Yannick Verschueren * Copyright (c) 2003-2007, Francois-Olivier Devaux
* Copyright (c) 2003-2007, Francois-Olivier Devaux * Copyright (c) 2003-2014, Antonin Descampe
* Copyright (c) 2003-2014, Antonin Descampe * Copyright (c) 2005, Herve Drolon, FreeImage Team
* Copyright (c) 2005, Herve Drolon, FreeImage Team * Copyright (c) 2006-2007, Parvatha Elangovan
* Copyright (c) 2006-2007, Parvatha Elangovan * Copyright (c) 2008, Jerome Fimes, Communications & Systemes <jerome.fimes
* Copyright (c) 2008, Jerome Fimes, Communications & Systemes <jerome.fime @c-s.fr>
s@c-s.fr> * Copyright (c) 2010-2011, Kaori Hagihara
* Copyright (c) 2010-2011, Kaori Hagihara * Copyright (c) 2011-2012, Centre National d'Etudes Spatiales (CNES), Franc
* Copyright (c) 2011-2012, Centre National d'Etudes Spatiales (CNES), Fran e
ce * Copyright (c) 2012, CS Systemes d'Information, France
* Copyright (c) 2012, CS Systemes d'Information, France * All rights reserved.
* All rights reserved. *
* * Redistribution and use in source and binary forms, with or without
* Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions
* modification, are permitted provided that the following conditions * are met:
* are met: * 1. Redistributions of source code must retain the above copyright
* 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer.
* notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright
* 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the
* notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution.
* documentation and/or other materials provided with the distribution. *
* * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS I
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS S'
IS' * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, TH * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOS
E E
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPO * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
SE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS B * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
E * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF TH
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN E
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * POSSIBILITY OF SUCH DAMAGE.
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF T */
HE
* POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef OPENJPEG_H #ifndef OPENJPEG_H
#define OPENJPEG_H #define OPENJPEG_H
/* /*
========================================================== ==========================================================
Compiler directives Compiler directives
========================================================== ==========================================================
*/ */
/* /*
The inline keyword is supported by C99 but not by C90. The inline keyword is supported by C99 but not by C90.
Most compilers implement their own version of this keyword ... Most compilers implement their own version of this keyword ...
*/ */
#ifndef INLINE #ifndef INLINE
#if defined(_MSC_VER) #if defined(_MSC_VER)
#define INLINE __forceinline #define INLINE __forceinline
#elif defined(__GNUC__) #elif defined(__GNUC__)
#define INLINE __inline__ #define INLINE __inline__
#elif defined(__MWERKS__) #elif defined(__MWERKS__)
#define INLINE inline #define INLINE inline
#else #else
/* add other compilers here ... */ /* add other compilers here ... */
#define INLINE #define INLINE
#endif /* defined(<Compiler>) */ #endif /* defined(<Compiler>) */
#endif /* INLINE */ #endif /* INLINE */
/* deprecated attribute */ /* deprecated attribute */
#ifdef __GNUC__ #ifdef __GNUC__
#define OPJ_DEPRECATED(func) func __attribute__ ((deprecated)) #define OPJ_DEPRECATED(func) func __attribute__ ((deprecated))
#elif defined(_MSC_VER) #elif defined(_MSC_VER)
#define OPJ_DEPRECATED(func) __declspec(deprecated) func #define OPJ_DEPRECATED(func) __declspec(deprecated) func
#else #else
#pragma message("WARNING: You need to implement DEPRECATED for this #pragma message("WARNING: You need to implement DEPRECATED for this compile
compiler") r")
#define OPJ_DEPRECATED(func) func #define OPJ_DEPRECATED(func) func
#endif #endif
#if defined(OPJ_STATIC) || !defined(_WIN32) #if defined(OPJ_STATIC) || !defined(_WIN32)
/* http://gcc.gnu.org/wiki/Visibility */ /* http://gcc.gnu.org/wiki/Visibility */
# if __GNUC__ >= 4 # if __GNUC__ >= 4
# if defined(OPJ_STATIC) /* static library uses "hidden" */ # if defined(OPJ_STATIC) /* static library uses "hidden" */
# define OPJ_API __attribute__ ((visibility ("hidde # define OPJ_API __attribute__ ((visibility ("hidden")))
n"))) # else
# else # define OPJ_API __attribute__ ((visibility ("default")))
# define OPJ_API __attribute__ ((visibility ("defau # endif
lt"))) # define OPJ_LOCAL __attribute__ ((visibility ("hidden")))
# endif # else
# define OPJ_LOCAL __attribute__ ((visibility ("hidden"))) # define OPJ_API
# else # define OPJ_LOCAL
# define OPJ_API # endif
# define OPJ_LOCAL # define OPJ_CALLCONV
# endif
# define OPJ_CALLCONV
#else #else
# define OPJ_CALLCONV __stdcall # define OPJ_CALLCONV __stdcall
/* /*
The following ifdef block is the standard way of creating macros which make exporting The following ifdef block is the standard way of creating macros which make exporting
from a DLL simpler. All files within this DLL are compiled with the OPJ_EXP ORTS from a DLL simpler. All files within this DLL are compiled with the OPJ_EXP ORTS
symbol defined on the command line. this symbol should not be defined on an y project symbol defined on the command line. this symbol should not be defined on an y project
that uses this DLL. This way any other project whose source files include t his file see that uses this DLL. This way any other project whose source files include t his file see
OPJ_API functions as being imported from a DLL, whereas this DLL sees symbo ls OPJ_API functions as being imported from a DLL, whereas this DLL sees symbo ls
defined with this macro as being exported. defined with this macro as being exported.
*/ */
# if defined(OPJ_EXPORTS) || defined(DLL_EXPORT) # if defined(OPJ_EXPORTS) || defined(DLL_EXPORT)
# define OPJ_API __declspec(dllexport) # define OPJ_API __declspec(dllexport)
# else # else
# define OPJ_API __declspec(dllimport) # define OPJ_API __declspec(dllimport)
# endif /* OPJ_EXPORTS */ # endif /* OPJ_EXPORTS */
#endif /* !OPJ_STATIC || !_WIN32 */ #endif /* !OPJ_STATIC || !_WIN32 */
typedef int OPJ_BOOL; typedef int OPJ_BOOL;
#define OPJ_TRUE 1 #define OPJ_TRUE 1
#define OPJ_FALSE 0 #define OPJ_FALSE 0
typedef char OPJ_CHAR; typedef char OPJ_CHAR;
typedef float OPJ_FLOAT32; typedef float OPJ_FLOAT32;
typedef double OPJ_FLOAT64; typedef double OPJ_FLOAT64;
typedef unsigned char OPJ_BYTE; typedef unsigned char OPJ_BYTE;
skipping to change at line 145 skipping to change at line 145
#define OPJ_ARG_NOT_USED(x) (void)(x) #define OPJ_ARG_NOT_USED(x) (void)(x)
/* /*
========================================================== ==========================================================
Useful constant definitions Useful constant definitions
========================================================== ==========================================================
*/ */
#define OPJ_PATH_LEN 4096 /**< Maximum allowed size for filenames */ #define OPJ_PATH_LEN 4096 /**< Maximum allowed size for filenames */
#define OPJ_J2K_MAXRLVLS 33 /**< Number #define OPJ_J2K_MAXRLVLS 33 /**< Number of maximum resoluti
of maximum resolution level authorized */ on level authorized */
#define OPJ_J2K_MAXBANDS (3*OPJ_J2K_MAXRLVLS-2) /**< Number of maxim #define OPJ_J2K_MAXBANDS (3*OPJ_J2K_MAXRLVLS-2) /**< Number of maximum sub-
um sub-band linked to number of resolution level */ band linked to number of resolution level */
#define OPJ_J2K_DEFAULT_NB_SEGS 10 #define OPJ_J2K_DEFAULT_NB_SEGS 10
#define OPJ_J2K_STREAM_CHUNK_SIZE 0x100000 /** 1 mega #define OPJ_J2K_STREAM_CHUNK_SIZE 0x100000 /** 1 mega by default
by default */ */
#define OPJ_J2K_DEFAULT_HEADER_SIZE 1000 #define OPJ_J2K_DEFAULT_HEADER_SIZE 1000
#define OPJ_J2K_MCC_DEFAULT_NB_RECORDS 10 #define OPJ_J2K_MCC_DEFAULT_NB_RECORDS 10
#define OPJ_J2K_MCT_DEFAULT_NB_RECORDS 10 #define OPJ_J2K_MCT_DEFAULT_NB_RECORDS 10
/* UniPG>> */ /* NOT YET USED IN THE V2 VERSION OF OPENJPEG */ /* UniPG>> */ /* NOT YET USED IN THE V2 VERSION OF OPENJPEG */
#define JPWL_MAX_NO_TILESPECS 16 /**< Maximum number of tile parts expecte #define JPWL_MAX_NO_TILESPECS 16 /**< Maximum number of tile parts expect
d by JPWL: increase at your will */ ed by JPWL: increase at your will */
#define JPWL_MAX_NO_PACKSPECS 16 /**< Maximum number of packet parts expec #define JPWL_MAX_NO_PACKSPECS 16 /**< Maximum number of packet parts expe
ted by JPWL: increase at your will */ cted by JPWL: increase at your will */
#define JPWL_MAX_NO_MARKERS 512 /**< Maximum number of JPWL markers: inc #define JPWL_MAX_NO_MARKERS 512 /**< Maximum number of JPWL markers: increa
rease at your will */ se at your will */
#define JPWL_PRIVATEINDEX_NAME "jpwl_index_privatefilename" /**< index file name used when JPWL is on */ #define JPWL_PRIVATEINDEX_NAME "jpwl_index_privatefilename" /**< index file name used when JPWL is on */
#define JPWL_EXPECTED_COMPONENTS 3 /**< Expect this number of components, s o you'll find better the first EPB */ #define JPWL_EXPECTED_COMPONENTS 3 /**< Expect this number of components, s o you'll find better the first EPB */
#define JPWL_MAXIMUM_TILES 8192 /**< Expect this maximum number of tiles, t o avoid some crashes */ #define JPWL_MAXIMUM_TILES 8192 /**< Expect this maximum number of tiles, t o avoid some crashes */
#define JPWL_MAXIMUM_HAMMING 2 /**< Expect this maximum number of bit error s in marker id's */ #define JPWL_MAXIMUM_HAMMING 2 /**< Expect this maximum number of bit error s in marker id's */
#define JPWL_MAXIMUM_EPB_ROOM 65450 /**< Expect this maximum number of byte s for composition of EPBs */ #define JPWL_MAXIMUM_EPB_ROOM 65450 /**< Expect this maximum number of byte s for composition of EPBs */
/* <<UniPG */ /* <<UniPG */
/** /**
* EXPERIMENTAL FOR THE MOMENT * EXPERIMENTAL FOR THE MOMENT
* Supported options about file information used only in j2k_dump * Supported options about file information used only in j2k_dump
*/ */
#define OPJ_IMG_INFO 1 /**< Basic image information provide #define OPJ_IMG_INFO 1 /**< Basic image information provided to th
d to the user */ e user */
#define OPJ_J2K_MH_INFO 2 /**< Codestream information #define OPJ_J2K_MH_INFO 2 /**< Codestream information based only on t
based only on the main header */ he main header */
#define OPJ_J2K_TH_INFO 4 /**< Tile information based #define OPJ_J2K_TH_INFO 4 /**< Tile information based on the current
on the current tile header */ tile header */
#define OPJ_J2K_TCH_INFO 8 /**< Tile/Component information of a #define OPJ_J2K_TCH_INFO 8 /**< Tile/Component information of all tile
ll tiles */ s */
#define OPJ_J2K_MH_IND 16 /**< Codestream index based only on #define OPJ_J2K_MH_IND 16 /**< Codestream index based only on the mai
the main header */ n header */
#define OPJ_J2K_TH_IND 32 /**< Tile index based on the current #define OPJ_J2K_TH_IND 32 /**< Tile index based on the current tile *
tile */ /
/*FIXME #define OPJ_J2K_CSTR_IND 48*/ /**< */ /*FIXME #define OPJ_J2K_CSTR_IND 48*/ /**< */
#define OPJ_JP2_INFO 128 /**< JP2 file information */ #define OPJ_JP2_INFO 128 /**< JP2 file information */
#define OPJ_JP2_IND 256 /**< JP2 file index */ #define OPJ_JP2_IND 256 /**< JP2 file index */
/** /**
* JPEG 2000 Profiles, see Table A.10 from 15444-1 (updated in various AMD) * JPEG 2000 Profiles, see Table A.10 from 15444-1 (updated in various AMD)
* These values help chosing the RSIZ value for the J2K codestream. * These values help choosing the RSIZ value for the J2K codestream.
* The RSIZ value triggers various encoding options, as detailed in Table A .10. * The RSIZ value triggers various encoding options, as detailed in Table A .10.
* If OPJ_PROFILE_PART2 is chosen, it has to be combined with one or more e xtensions * If OPJ_PROFILE_PART2 is chosen, it has to be combined with one or more e xtensions
* described hereunder. * described hereunder.
* Example: rsiz = OPJ_PROFILE_PART2 | OPJ_EXTENSION_MCT; * Example: rsiz = OPJ_PROFILE_PART2 | OPJ_EXTENSION_MCT;
* For broadcast profiles, the OPJ_PROFILE value has to be combined with th e targeted * For broadcast profiles, the OPJ_PROFILE value has to be combined with th e targeted
* mainlevel (3-0 LSB, value between 0 and 11): * mainlevel (3-0 LSB, value between 0 and 11):
* Example: rsiz = OPJ_PROFILE_BC_MULTI | 0x0005; (here mainlevel 5) * Example: rsiz = OPJ_PROFILE_BC_MULTI | 0x0005; (here mainlevel 5)
* For IMF profiles, the OPJ_PROFILE value has to be combined with the targ eted mainlevel * For IMF profiles, the OPJ_PROFILE value has to be combined with the targ eted mainlevel
* (3-0 LSB, value between 0 and 11) and sublevel (7-4 LSB, value between 0 and 9): * (3-0 LSB, value between 0 and 11) and sublevel (7-4 LSB, value between 0 and 9):
* Example: rsiz = OPJ_PROFILE_IMF_2K | 0x0040 | 0x0005; (here main 5 and sublevel 4) * Example: rsiz = OPJ_PROFILE_IMF_2K | 0x0040 | 0x0005; (here main 5 and sublevel 4)
skipping to change at line 230 skipping to change at line 230
* */ * */
#define OPJ_IS_CINEMA(v) (((v) >= OPJ_PROFILE_CINEMA_2K)&&((v) <= OPJ_P ROFILE_CINEMA_S4K)) #define OPJ_IS_CINEMA(v) (((v) >= OPJ_PROFILE_CINEMA_2K)&&((v) <= OPJ_P ROFILE_CINEMA_S4K))
#define OPJ_IS_STORAGE(v) ((v) == OPJ_PROFILE_CINEMA_LTS) #define OPJ_IS_STORAGE(v) ((v) == OPJ_PROFILE_CINEMA_LTS)
#define OPJ_IS_BROADCAST(v) (((v) >= OPJ_PROFILE_BC_SINGLE)&&((v) <= ((OPJ _PROFILE_BC_MULTI_R) | (0x000b)))) #define OPJ_IS_BROADCAST(v) (((v) >= OPJ_PROFILE_BC_SINGLE)&&((v) <= ((OPJ _PROFILE_BC_MULTI_R) | (0x000b))))
#define OPJ_IS_IMF(v) (((v) >= OPJ_PROFILE_IMF_2K)&&((v) <= ((OPJ_PR OFILE_IMF_8K_R) | (0x009b)))) #define OPJ_IS_IMF(v) (((v) >= OPJ_PROFILE_IMF_2K)&&((v) <= ((OPJ_PR OFILE_IMF_8K_R) | (0x009b))))
#define OPJ_IS_PART2(v) ((v) & OPJ_PROFILE_PART2) #define OPJ_IS_PART2(v) ((v) & OPJ_PROFILE_PART2)
/** /**
* JPEG 2000 codestream and component size limits in cinema profiles * JPEG 2000 codestream and component size limits in cinema profiles
* */ * */
#define OPJ_CINEMA_24_CS 1302083 /** Maximum codestream lengt h for 24fps */ #define OPJ_CINEMA_24_CS 1302083 /** Maximum codestream length for 2 4fps */
#define OPJ_CINEMA_48_CS 651041 /** Maximum codestream length for 4 8fps */ #define OPJ_CINEMA_48_CS 651041 /** Maximum codestream length for 4 8fps */
#define OPJ_CINEMA_24_COMP 1041666 /** Maximum size per color componen t for 2K & 4K @ 24fps */ #define OPJ_CINEMA_24_COMP 1041666 /** Maximum size per color componen t for 2K & 4K @ 24fps */
#define OPJ_CINEMA_48_COMP 520833 /** Maximum size per color c omponent for 2K @ 48fps */ #define OPJ_CINEMA_48_COMP 520833 /** Maximum size per color componen t for 2K @ 48fps */
/* /*
========================================================== ==========================================================
enum definitions enum definitions
========================================================== ==========================================================
*/ */
/** /**
* DEPRECATED: use RSIZ, OPJ_PROFILE_* and OPJ_EXTENSION_* instead * DEPRECATED: use RSIZ, OPJ_PROFILE_* and OPJ_EXTENSION_* instead
* Rsiz Capabilities * Rsiz Capabilities
* */ * */
typedef enum RSIZ_CAPABILITIES { typedef enum RSIZ_CAPABILITIES {
OPJ_STD_RSIZ = 0, /** Standard JPEG2000 profile*/ OPJ_STD_RSIZ = 0, /** Standard JPEG2000 profile*/
OPJ_CINEMA2K = 3, /** Profile name for a 2K image*/ OPJ_CINEMA2K = 3, /** Profile name for a 2K image*/
OPJ_CINEMA4K = 4, /** Profile name for a 4K image*/ OPJ_CINEMA4K = 4, /** Profile name for a 4K image*/
OPJ_MCT = 0x8100 OPJ_MCT = 0x8100
} OPJ_RSIZ_CAPABILITIES; } OPJ_RSIZ_CAPABILITIES;
/** /**
* DEPRECATED: use RSIZ, OPJ_PROFILE_* and OPJ_EXTENSION_* instead * DEPRECATED: use RSIZ, OPJ_PROFILE_* and OPJ_EXTENSION_* instead
* Digital cinema operation mode * Digital cinema operation mode
* */ * */
typedef enum CINEMA_MODE { typedef enum CINEMA_MODE {
OPJ_OFF = 0, /** Not Digital Cinema*/ OPJ_OFF = 0, /** Not Digital Cinema*/
OPJ_CINEMA2K_24 = 1, /** 2K Digital Cinema at 24 fps*/ OPJ_CINEMA2K_24 = 1, /** 2K Digital Cinema at 24 fps*/
OPJ_CINEMA2K_48 = 2, /** 2K Digital Cinema at 48 fps*/ OPJ_CINEMA2K_48 = 2, /** 2K Digital Cinema at 48 fps*/
OPJ_CINEMA4K_24 = 3 /** 4K Digital Cinema at 24 fps*/ OPJ_CINEMA4K_24 = 3 /** 4K Digital Cinema at 24 fps*/
}OPJ_CINEMA_MODE; } OPJ_CINEMA_MODE;
/** /**
* Progression order * Progression order
* */ * */
typedef enum PROG_ORDER { typedef enum PROG_ORDER {
OPJ_PROG_UNKNOWN = -1, /**< place-holder */ OPJ_PROG_UNKNOWN = -1, /**< place-holder */
OPJ_LRCP = 0, /**< layer-resolution-component-prec OPJ_LRCP = 0, /**< layer-resolution-component-precinct order
inct order */ */
OPJ_RLCP = 1, /**< resolution-layer-component-prec OPJ_RLCP = 1, /**< resolution-layer-component-precinct order
inct order */ */
OPJ_RPCL = 2, /**< resolution-precinct-component-l OPJ_RPCL = 2, /**< resolution-precinct-component-layer order
ayer order */ */
OPJ_PCRL = 3, /**< precinct-component-resolution-l OPJ_PCRL = 3, /**< precinct-component-resolution-layer order
ayer order */ */
OPJ_CPRL = 4 /**< component-precinct-resolution-l OPJ_CPRL = 4 /**< component-precinct-resolution-layer order
ayer order */ */
} OPJ_PROG_ORDER; } OPJ_PROG_ORDER;
/** /**
* Supported image color spaces * Supported image color spaces
*/ */
typedef enum COLOR_SPACE { typedef enum COLOR_SPACE {
OPJ_CLRSPC_UNKNOWN = -1, /**< not supported by the library */ OPJ_CLRSPC_UNKNOWN = -1, /**< not supported by the library */
OPJ_CLRSPC_UNSPECIFIED = 0, /**< not specified in the codestream OPJ_CLRSPC_UNSPECIFIED = 0, /**< not specified in the codestream */
*/ OPJ_CLRSPC_SRGB = 1, /**< sRGB */
OPJ_CLRSPC_SRGB = 1, /**< sRGB */ OPJ_CLRSPC_GRAY = 2, /**< grayscale */
OPJ_CLRSPC_GRAY = 2, /**< grayscale */ OPJ_CLRSPC_SYCC = 3, /**< YUV */
OPJ_CLRSPC_SYCC = 3, /**< YUV */
OPJ_CLRSPC_EYCC = 4, /**< e-YCC */ OPJ_CLRSPC_EYCC = 4, /**< e-YCC */
OPJ_CLRSPC_CMYK = 5 /**< CMYK */ OPJ_CLRSPC_CMYK = 5 /**< CMYK */
} OPJ_COLOR_SPACE; } OPJ_COLOR_SPACE;
/** /**
* Supported codec * Supported codec
*/ */
typedef enum CODEC_FORMAT { typedef enum CODEC_FORMAT {
OPJ_CODEC_UNKNOWN = -1, /**< place-holder */ OPJ_CODEC_UNKNOWN = -1, /**< place-holder */
OPJ_CODEC_J2K = 0, /**< JPEG-2000 codestream : read/wri OPJ_CODEC_J2K = 0, /**< JPEG-2000 codestream : read/write */
te */ OPJ_CODEC_JPT = 1, /**< JPT-stream (JPEG 2000, JPIP) : read only *
OPJ_CODEC_JPT = 1, /**< JPT-stream (JPEG 2000, JPIP) : /
read only */ OPJ_CODEC_JP2 = 2, /**< JP2 file format : read/write */
OPJ_CODEC_JP2 = 2, /**< JP2 file format : read/write */ OPJ_CODEC_JPP = 3, /**< JPP-stream (JPEG 2000, JPIP) : to be coded
OPJ_CODEC_JPP = 3, /**< JPP-stream (JPEG 2000, JPIP) : */
to be coded */ OPJ_CODEC_JPX = 4 /**< JPX file format (JPEG 2000 Part-2) : to be
OPJ_CODEC_JPX = 4 /**< JPX file format (JPEG 2000 Part-2) : to coded */
be coded */
} OPJ_CODEC_FORMAT; } OPJ_CODEC_FORMAT;
/* /*
========================================================== ==========================================================
event manager typedef definitions event manager typedef definitions
========================================================== ==========================================================
*/ */
/** /**
* Callback function prototype for events * Callback function prototype for events
* @param msg Event message * @param msg Event message
* @param client_data Client object where will be return the event me ssage * @param client_data Client object where will be return the event me ssage
* */ * */
typedef void (*opj_msg_callback) (const char *msg, void *client_data); typedef void (*opj_msg_callback)(const char *msg, void *client_data);
/* /*
========================================================== ==========================================================
codec typedef definitions codec typedef definitions
========================================================== ==========================================================
*/ */
/** /**
* Progression order changes * Progression order changes
* *
*/ */
typedef struct opj_poc { typedef struct opj_poc {
/** Resolution num start, Component num start, given by POC */ /** Resolution num start, Component num start, given by POC */
OPJ_UINT32 resno0, compno0; OPJ_UINT32 resno0, compno0;
/** Layer num end,Resolution num end, Component num end, given by PO /** Layer num end,Resolution num end, Component num end, given by POC *
C */ /
OPJ_UINT32 layno1, resno1, compno1; OPJ_UINT32 layno1, resno1, compno1;
/** Layer num start,Precinct num start, Precinct num end */ /** Layer num start,Precinct num start, Precinct num end */
OPJ_UINT32 layno0, precno0, precno1; OPJ_UINT32 layno0, precno0, precno1;
/** Progression order enum*/ /** Progression order enum*/
OPJ_PROG_ORDER prg1,prg; OPJ_PROG_ORDER prg1, prg;
/** Progression order string*/ /** Progression order string*/
OPJ_CHAR progorder[5]; OPJ_CHAR progorder[5];
/** Tile number */ /** Tile number */
OPJ_UINT32 tile; OPJ_UINT32 tile;
/** Start and end values for Tile width and height*/ /** Start and end values for Tile width and height*/
OPJ_INT32 tx0,tx1,ty0,ty1; OPJ_INT32 tx0, tx1, ty0, ty1;
/** Start value, initialised in pi_initialise_encode*/ /** Start value, initialised in pi_initialise_encode*/
OPJ_UINT32 layS, resS, compS, prcS; OPJ_UINT32 layS, resS, compS, prcS;
/** End value, initialised in pi_initialise_encode */ /** End value, initialised in pi_initialise_encode */
OPJ_UINT32 layE, resE, compE, prcE; OPJ_UINT32 layE, resE, compE, prcE;
/** Start and end values of Tile width and height, initialised in pi /** Start and end values of Tile width and height, initialised in pi_in
_initialise_encode*/ itialise_encode*/
OPJ_UINT32 txS,txE,tyS,tyE,dx,dy; OPJ_UINT32 txS, txE, tyS, tyE, dx, dy;
/** Temporary values for Tile parts, initialised in pi_create_encode /** Temporary values for Tile parts, initialised in pi_create_encode */
*/ OPJ_UINT32 lay_t, res_t, comp_t, prc_t, tx0_t, ty0_t;
OPJ_UINT32 lay_t, res_t, comp_t, prc_t,tx0_t,ty0_t;
} opj_poc_t; } opj_poc_t;
/** /**
* Compression parameters * Compression parameters
* */ * */
typedef struct opj_cparameters { typedef struct opj_cparameters {
/** size of tile: tile_size_on = false (not in argument) or = true ( /** size of tile: tile_size_on = false (not in argument) or = true (in
in argument) */ argument) */
OPJ_BOOL tile_size_on; OPJ_BOOL tile_size_on;
/** XTOsiz */ /** XTOsiz */
int cp_tx0; int cp_tx0;
/** YTOsiz */ /** YTOsiz */
int cp_ty0; int cp_ty0;
/** XTsiz */ /** XTsiz */
int cp_tdx; int cp_tdx;
/** YTsiz */ /** YTsiz */
int cp_tdy; int cp_tdy;
/** allocation by rate/distortion */ /** allocation by rate/distortion */
int cp_disto_alloc; int cp_disto_alloc;
/** allocation by fixed layer */ /** allocation by fixed layer */
int cp_fixed_alloc; int cp_fixed_alloc;
/** add fixed_quality */ /** add fixed_quality */
int cp_fixed_quality; int cp_fixed_quality;
/** fixed layer */ /** fixed layer */
int *cp_matrice; int *cp_matrice;
/** comment for coding */ /** comment for coding */
char *cp_comment; char *cp_comment;
/** csty : coding style */ /** csty : coding style */
int csty; int csty;
/** progression order (default OPJ_LRCP) */ /** progression order (default OPJ_LRCP) */
OPJ_PROG_ORDER prog_order; OPJ_PROG_ORDER prog_order;
/** progression order changes */ /** progression order changes */
opj_poc_t POC[32]; opj_poc_t POC[32];
/** number of progression order changes (POC), default to 0 */ /** number of progression order changes (POC), default to 0 */
OPJ_UINT32 numpocs; OPJ_UINT32 numpocs;
/** number of layers */ /** number of layers */
int tcp_numlayers; int tcp_numlayers;
/** rates of layers - might be subsequently limited by the max_cs_size field */ /** rates of layers - might be subsequently limited by the max_cs_size field */
float tcp_rates[100]; float tcp_rates[100];
/** different psnr for successive layers */ /** different psnr for successive layers */
float tcp_distoratio[100]; float tcp_distoratio[100];
/** number of resolutions */ /** number of resolutions */
int numresolution; int numresolution;
/** initial code block width, default to 64 */ /** initial code block width, default to 64 */
int cblockw_init; int cblockw_init;
/** initial code block height, default to 64 */ /** initial code block height, default to 64 */
int cblockh_init; int cblockh_init;
/** mode switch (cblk_style) */ /** mode switch (cblk_style) */
int mode; int mode;
/** 1 : use the irreversible DWT 9-7, 0 : use lossless compression ( /** 1 : use the irreversible DWT 9-7, 0 : use lossless compression (def
default) */ ault) */
int irreversible; int irreversible;
/** region of interest: affected component in [0..3], -1 means no RO /** region of interest: affected component in [0..3], -1 means no ROI *
I */ /
int roi_compno; int roi_compno;
/** region of interest: upshift value */ /** region of interest: upshift value */
int roi_shift; int roi_shift;
/* number of precinct size specifications */ /* number of precinct size specifications */
int res_spec; int res_spec;
/** initial precinct width */ /** initial precinct width */
int prcw_init[OPJ_J2K_MAXRLVLS]; int prcw_init[OPJ_J2K_MAXRLVLS];
/** initial precinct height */ /** initial precinct height */
int prch_init[OPJ_J2K_MAXRLVLS]; int prch_init[OPJ_J2K_MAXRLVLS];
/**@name command line encoder parameters (not used inside the librar /**@name command line encoder parameters (not used inside the library)
y) */ */
/*@{*/ /*@{*/
/** input file name */ /** input file name */
char infile[OPJ_PATH_LEN]; char infile[OPJ_PATH_LEN];
/** output file name */ /** output file name */
char outfile[OPJ_PATH_LEN]; char outfile[OPJ_PATH_LEN];
/** DEPRECATED. Index generation is now handeld with the opj_encode_ /** DEPRECATED. Index generation is now handeld with the opj_encode_wit
with_info() function. Set to NULL */ h_info() function. Set to NULL */
int index_on; int index_on;
/** DEPRECATED. Index generation is now handeld with the opj_encode_ /** DEPRECATED. Index generation is now handeld with the opj_encode_wit
with_info() function. Set to NULL */ h_info() function. Set to NULL */
char index[OPJ_PATH_LEN]; char index[OPJ_PATH_LEN];
/** subimage encoding: origin image offset in x direction */ /** subimage encoding: origin image offset in x direction */
int image_offset_x0; int image_offset_x0;
/** subimage encoding: origin image offset in y direction */ /** subimage encoding: origin image offset in y direction */
int image_offset_y0; int image_offset_y0;
/** subsampling value for dx */ /** subsampling value for dx */
int subsampling_dx; int subsampling_dx;
/** subsampling value for dy */ /** subsampling value for dy */
int subsampling_dy; int subsampling_dy;
/** input file format 0: PGX, 1: PxM, 2: BMP 3:TIF*/ /** input file format 0: PGX, 1: PxM, 2: BMP 3:TIF*/
int decod_format; int decod_format;
/** output file format 0: J2K, 1: JP2, 2: JPT */ /** output file format 0: J2K, 1: JP2, 2: JPT */
int cod_format; int cod_format;
/*@}*/ /*@}*/
/* UniPG>> */ /* NOT YET USED IN THE V2 VERSION OF OPENJPEG */ /* UniPG>> */ /* NOT YET USED IN THE V2 VERSION OF OPENJPEG */
/**@name JPWL encoding parameters */ /**@name JPWL encoding parameters */
/*@{*/ /*@{*/
/** enables writing of EPC in MH, thus activating JPWL */ /** enables writing of EPC in MH, thus activating JPWL */
OPJ_BOOL jpwl_epc_on; OPJ_BOOL jpwl_epc_on;
/** error protection method for MH (0,1,16,32,37-128) */ /** error protection method for MH (0,1,16,32,37-128) */
int jpwl_hprot_MH; int jpwl_hprot_MH;
/** tile number of header protection specification (>=0) */ /** tile number of header protection specification (>=0) */
int jpwl_hprot_TPH_tileno[JPWL_MAX_NO_TILESPECS]; int jpwl_hprot_TPH_tileno[JPWL_MAX_NO_TILESPECS];
/** error protection methods for TPHs (0,1,16,32,37-128) */ /** error protection methods for TPHs (0,1,16,32,37-128) */
int jpwl_hprot_TPH[JPWL_MAX_NO_TILESPECS]; int jpwl_hprot_TPH[JPWL_MAX_NO_TILESPECS];
/** tile number of packet protection specification (>=0) */ /** tile number of packet protection specification (>=0) */
int jpwl_pprot_tileno[JPWL_MAX_NO_PACKSPECS]; int jpwl_pprot_tileno[JPWL_MAX_NO_PACKSPECS];
/** packet number of packet protection specification (>=0) */ /** packet number of packet protection specification (>=0) */
int jpwl_pprot_packno[JPWL_MAX_NO_PACKSPECS]; int jpwl_pprot_packno[JPWL_MAX_NO_PACKSPECS];
/** error protection methods for packets (0,1,16,32,37-128) */ /** error protection methods for packets (0,1,16,32,37-128) */
int jpwl_pprot[JPWL_MAX_NO_PACKSPECS]; int jpwl_pprot[JPWL_MAX_NO_PACKSPECS];
/** enables writing of ESD, (0=no/1/2 bytes) */ /** enables writing of ESD, (0=no/1/2 bytes) */
int jpwl_sens_size; int jpwl_sens_size;
/** sensitivity addressing size (0=auto/2/4 bytes) */ /** sensitivity addressing size (0=auto/2/4 bytes) */
int jpwl_sens_addr; int jpwl_sens_addr;
/** sensitivity range (0-3) */ /** sensitivity range (0-3) */
int jpwl_sens_range; int jpwl_sens_range;
/** sensitivity method for MH (-1=no,0-7) */ /** sensitivity method for MH (-1=no,0-7) */
int jpwl_sens_MH; int jpwl_sens_MH;
/** tile number of sensitivity specification (>=0) */ /** tile number of sensitivity specification (>=0) */
int jpwl_sens_TPH_tileno[JPWL_MAX_NO_TILESPECS]; int jpwl_sens_TPH_tileno[JPWL_MAX_NO_TILESPECS];
/** sensitivity methods for TPHs (-1=no,0-7) */ /** sensitivity methods for TPHs (-1=no,0-7) */
int jpwl_sens_TPH[JPWL_MAX_NO_TILESPECS]; int jpwl_sens_TPH[JPWL_MAX_NO_TILESPECS];
/*@}*/ /*@}*/
/* <<UniPG */ /* <<UniPG */
/** /**
* DEPRECATED: use RSIZ, OPJ_PROFILE_* and MAX_COMP_SIZE instead * DEPRECATED: use RSIZ, OPJ_PROFILE_* and MAX_COMP_SIZE instead
* Digital Cinema compliance 0-not compliant, 1-compliant * Digital Cinema compliance 0-not compliant, 1-compliant
* */ * */
OPJ_CINEMA_MODE cp_cinema; OPJ_CINEMA_MODE cp_cinema;
/** /**
* Maximum size (in bytes) for each component. * Maximum size (in bytes) for each component.
* If == 0, component size limitation is not considered * If == 0, component size limitation is not considered
* */ * */
int max_comp_size; int max_comp_size;
/** /**
* DEPRECATED: use RSIZ, OPJ_PROFILE_* and OPJ_EXTENSION_* instead * DEPRECATED: use RSIZ, OPJ_PROFILE_* and OPJ_EXTENSION_* instead
* Profile name * Profile name
* */ * */
OPJ_RSIZ_CAPABILITIES cp_rsiz; OPJ_RSIZ_CAPABILITIES cp_rsiz;
/** Tile part generation*/ /** Tile part generation*/
char tp_on; char tp_on;
/** Flag for Tile part generation*/ /** Flag for Tile part generation*/
char tp_flag; char tp_flag;
/** MCT (multiple component transform) */ /** MCT (multiple component transform) */
char tcp_mct; char tcp_mct;
/** Enable JPIP indexing*/ /** Enable JPIP indexing*/
OPJ_BOOL jpip_on; OPJ_BOOL jpip_on;
/** Naive implementation of MCT restricted to a single reversible ar /** Naive implementation of MCT restricted to a single reversible array
ray based based
encoding without offset concerning all the components. */ encoding without offset concerning all the components. */
void * mct_data; void * mct_data;
/** /**
* Maximum size (in bytes) for the whole codestream. * Maximum size (in bytes) for the whole codestream.
* If == 0, codestream size limitation is not considered * If == 0, codestream size limitation is not considered
* If it does not comply with tcp_rates, max_cs_size prevails * If it does not comply with tcp_rates, max_cs_size prevails
* and a warning is issued. * and a warning is issued.
* */ * */
int max_cs_size; int max_cs_size;
/** RSIZ value /** RSIZ value
To be used to combine OPJ_PROFILE_*, OPJ_EXTENSION_* and (sub)level s values. */ To be used to combine OPJ_PROFILE_*, OPJ_EXTENSION_* and (sub)level s values. */
OPJ_UINT16 rsiz; OPJ_UINT16 rsiz;
} opj_cparameters_t; } opj_cparameters_t;
#define OPJ_DPARAMETERS_IGNORE_PCLR_CMAP_CDEF_FLAG 0x0001 #define OPJ_DPARAMETERS_IGNORE_PCLR_CMAP_CDEF_FLAG 0x0001
#define OPJ_DPARAMETERS_DUMP_FLAG 0x0002
/** /**
* Decompression parameters * Decompression parameters
* */ * */
typedef struct opj_dparameters { typedef struct opj_dparameters {
/** /**
Set the number of highest resolution levels to be discarded. Set the number of highest resolution levels to be discarded.
The image resolution is effectively divided by 2 to the power of the The image resolution is effectively divided by 2 to the power of the nu
number of discarded levels. mber of discarded levels.
The reduce factor is limited by the smallest total number of decompo The reduce factor is limited by the smallest total number of decomposit
sition levels among tiles. ion levels among tiles.
if != 0, then original dimension divided by 2^(reduce); if != 0, then original dimension divided by 2^(reduce);
if == 0 or not used, image is decoded to the full resolution if == 0 or not used, image is decoded to the full resolution
*/ */
OPJ_UINT32 cp_reduce; OPJ_UINT32 cp_reduce;
/** /**
Set the maximum number of quality layers to decode. Set the maximum number of quality layers to decode.
If there are less quality layers than the specified number, all the If there are less quality layers than the specified number, all the qua
quality layers are decoded. lity layers are decoded.
if != 0, then only the first "layer" layers are decoded; if != 0, then only the first "layer" layers are decoded;
if == 0 or not used, all the quality layers are decoded if == 0 or not used, all the quality layers are decoded
*/ */
OPJ_UINT32 cp_layer; OPJ_UINT32 cp_layer;
/**@name command line decoder parameters (not used inside the librar /**@name command line decoder parameters (not used inside the library)
y) */ */
/*@{*/ /*@{*/
/** input file name */ /** input file name */
char infile[OPJ_PATH_LEN]; char infile[OPJ_PATH_LEN];
/** output file name */ /** output file name */
char outfile[OPJ_PATH_LEN]; char outfile[OPJ_PATH_LEN];
/** input file format 0: J2K, 1: JP2, 2: JPT */ /** input file format 0: J2K, 1: JP2, 2: JPT */
int decod_format; int decod_format;
/** output file format 0: PGX, 1: PxM, 2: BMP */ /** output file format 0: PGX, 1: PxM, 2: BMP */
int cod_format; int cod_format;
/** Decoding area left boundary */ /** Decoding area left boundary */
OPJ_UINT32 DA_x0; OPJ_UINT32 DA_x0;
/** Decoding area right boundary */ /** Decoding area right boundary */
OPJ_UINT32 DA_x1; OPJ_UINT32 DA_x1;
/** Decoding area up boundary */ /** Decoding area up boundary */
OPJ_UINT32 DA_y0; OPJ_UINT32 DA_y0;
/** Decoding area bottom boundary */ /** Decoding area bottom boundary */
OPJ_UINT32 DA_y1; OPJ_UINT32 DA_y1;
/** Verbose mode */ /** Verbose mode */
OPJ_BOOL m_verbose; OPJ_BOOL m_verbose;
/** tile number ot the decoded tile*/ /** tile number ot the decoded tile*/
OPJ_UINT32 tile_index; OPJ_UINT32 tile_index;
/** Nb of tile to decode */ /** Nb of tile to decode */
OPJ_UINT32 nb_tile_to_decode; OPJ_UINT32 nb_tile_to_decode;
/*@}*/ /*@}*/
/* UniPG>> */ /* NOT YET USED IN THE V2 VERSION OF OPENJPEG */ /* UniPG>> */ /* NOT YET USED IN THE V2 VERSION OF OPENJPEG */
/**@name JPWL decoding parameters */ /**@name JPWL decoding parameters */
/*@{*/ /*@{*/
/** activates the JPWL correction capabilities */ /** activates the JPWL correction capabilities */
OPJ_BOOL jpwl_correct; OPJ_BOOL jpwl_correct;
/** expected number of components */ /** expected number of components */
int jpwl_exp_comps; int jpwl_exp_comps;
/** maximum number of tiles */ /** maximum number of tiles */
int jpwl_max_tiles; int jpwl_max_tiles;
/*@}*/ /*@}*/
/* <<UniPG */ /* <<UniPG */
unsigned int flags; unsigned int flags;
} opj_dparameters_t; } opj_dparameters_t;
/** /**
* JPEG2000 codec V2. * JPEG2000 codec V2.
* */ * */
typedef void * opj_codec_t; typedef void * opj_codec_t;
/* /*
========================================================== ==========================================================
I/O stream typedef definitions I/O stream typedef definitions
========================================================== ==========================================================
*/ */
/** /**
* Stream open flags. * Stream open flags.
* */ * */
/** The stream was opened for reading. */ /** The stream was opened for reading. */
#define OPJ_STREAM_READ OPJ_TRUE #define OPJ_STREAM_READ OPJ_TRUE
/** The stream was opened for writing. */ /** The stream was opened for writing. */
#define OPJ_STREAM_WRITE OPJ_FALSE #define OPJ_STREAM_WRITE OPJ_FALSE
/* /*
* Callback function prototype for read function * Callback function prototype for read function
*/ */
typedef OPJ_SIZE_T (* opj_stream_read_fn) (void * p_buffer, OPJ_SIZE_T p_nb typedef OPJ_SIZE_T(* opj_stream_read_fn)(void * p_buffer, OPJ_SIZE_T p_nb_b
_bytes, void * p_user_data) ; ytes,
void * p_user_data) ;
/* /*
* Callback function prototype for write function * Callback function prototype for write function
*/ */
typedef OPJ_SIZE_T (* opj_stream_write_fn) (void * p_buffer, OPJ_SIZE_T p_n typedef OPJ_SIZE_T(* opj_stream_write_fn)(void * p_buffer,
b_bytes, void * p_user_data) ; OPJ_SIZE_T p_nb_bytes, void * p_user_data) ;
/* /*
* Callback function prototype for skip function * Callback function prototype for skip function
*/ */
typedef OPJ_OFF_T (* opj_stream_skip_fn) (OPJ_OFF_T p_nb_bytes, void * p_us typedef OPJ_OFF_T(* opj_stream_skip_fn)(OPJ_OFF_T p_nb_bytes,
er_data) ; void * p_user_data) ;
/* /*
* Callback function prototype for seek function * Callback function prototype for seek function
*/ */
typedef OPJ_BOOL (* opj_stream_seek_fn) (OPJ_OFF_T p_nb_bytes, void * p_use typedef OPJ_BOOL(* opj_stream_seek_fn)(OPJ_OFF_T p_nb_bytes,
r_data) ; void * p_user_data) ;
/* /*
* Callback function prototype for free user data function * Callback function prototype for free user data function
*/ */
typedef void (* opj_stream_free_user_data_fn) (void * p_user_data) ; typedef void (* opj_stream_free_user_data_fn)(void * p_user_data) ;
/* /*
* JPEG2000 Stream. * JPEG2000 Stream.
*/ */
typedef void * opj_stream_t; typedef void * opj_stream_t;
/* /*
========================================================== ==========================================================
image typedef definitions image typedef definitions
========================================================== ==========================================================
*/ */
/** /**
* Defines a single image component * Defines a single image component
* */ * */
typedef struct opj_image_comp { typedef struct opj_image_comp {
/** XRsiz: horizontal separation of a sample of ith component with r /** XRsiz: horizontal separation of a sample of ith component with resp
espect to the reference grid */ ect to the reference grid */
OPJ_UINT32 dx; OPJ_UINT32 dx;
/** YRsiz: vertical separation of a sample of ith component with res /** YRsiz: vertical separation of a sample of ith component with respec
pect to the reference grid */ t to the reference grid */
OPJ_UINT32 dy; OPJ_UINT32 dy;
/** data width */ /** data width */
OPJ_UINT32 w; OPJ_UINT32 w;
/** data height */ /** data height */
OPJ_UINT32 h; OPJ_UINT32 h;
/** x component offset compared to the whole image */ /** x component offset compared to the whole image */
OPJ_UINT32 x0; OPJ_UINT32 x0;
/** y component offset compared to the whole image */ /** y component offset compared to the whole image */
OPJ_UINT32 y0; OPJ_UINT32 y0;
/** precision */ /** precision */
OPJ_UINT32 prec; OPJ_UINT32 prec;
/** image depth in bits */ /** image depth in bits */
OPJ_UINT32 bpp; OPJ_UINT32 bpp;
/** signed (1) / unsigned (0) */ /** signed (1) / unsigned (0) */
OPJ_UINT32 sgnd; OPJ_UINT32 sgnd;
/** number of decoded resolution */ /** number of decoded resolution */
OPJ_UINT32 resno_decoded; OPJ_UINT32 resno_decoded;
/** number of division by 2 of the out image compared to the origina /** number of division by 2 of the out image compared to the original s
l size of image */ ize of image */
OPJ_UINT32 factor; OPJ_UINT32 factor;
/** image component data */ /** image component data */
OPJ_INT32 *data; OPJ_INT32 *data;
/** alpha channel */ /** alpha channel */
OPJ_UINT16 alpha; OPJ_UINT16 alpha;
} opj_image_comp_t; } opj_image_comp_t;
/** /**
* Defines image data and characteristics * Defines image data and characteristics
* */ * */
typedef struct opj_image { typedef struct opj_image {
/** XOsiz: horizontal offset from the origin of the reference grid t /** XOsiz: horizontal offset from the origin of the reference grid to t
o the left side of the image area */ he left side of the image area */
OPJ_UINT32 x0; OPJ_UINT32 x0;
/** YOsiz: vertical offset from the origin of the reference grid to /** YOsiz: vertical offset from the origin of the reference grid to the
the top side of the image area */ top side of the image area */
OPJ_UINT32 y0; OPJ_UINT32 y0;
/** Xsiz: width of the reference grid */ /** Xsiz: width of the reference grid */
OPJ_UINT32 x1; OPJ_UINT32 x1;
/** Ysiz: height of the reference grid */ /** Ysiz: height of the reference grid */
OPJ_UINT32 y1; OPJ_UINT32 y1;
/** number of components in the image */ /** number of components in the image */
OPJ_UINT32 numcomps; OPJ_UINT32 numcomps;
/** color space: sRGB, Greyscale or YUV */ /** color space: sRGB, Greyscale or YUV */
OPJ_COLOR_SPACE color_space; OPJ_COLOR_SPACE color_space;
/** image components */ /** image components */
opj_image_comp_t *comps; opj_image_comp_t *comps;
/** 'restricted' ICC profile */ /** 'restricted' ICC profile */
OPJ_BYTE *icc_profile_buf; OPJ_BYTE *icc_profile_buf;
/** size of ICC profile */ /** size of ICC profile */
OPJ_UINT32 icc_profile_len; OPJ_UINT32 icc_profile_len;
} opj_image_t; } opj_image_t;
/** /**
* Component parameters structure used by the opj_image_create function * Component parameters structure used by the opj_image_create function
* */ * */
typedef struct opj_image_comptparm { typedef struct opj_image_comptparm {
/** XRsiz: horizontal separation of a sample of ith component with r /** XRsiz: horizontal separation of a sample of ith component with resp
espect to the reference grid */ ect to the reference grid */
OPJ_UINT32 dx; OPJ_UINT32 dx;
/** YRsiz: vertical separation of a sample of ith component with res /** YRsiz: vertical separation of a sample of ith component with respec
pect to the reference grid */ t to the reference grid */
OPJ_UINT32 dy; OPJ_UINT32 dy;
/** data width */ /** data width */
OPJ_UINT32 w; OPJ_UINT32 w;
/** data height */ /** data height */
OPJ_UINT32 h; OPJ_UINT32 h;
/** x component offset compared to the whole image */ /** x component offset compared to the whole image */
OPJ_UINT32 x0; OPJ_UINT32 x0;
/** y component offset compared to the whole image */ /** y component offset compared to the whole image */
OPJ_UINT32 y0; OPJ_UINT32 y0;
/** precision */ /** precision */
OPJ_UINT32 prec; OPJ_UINT32 prec;
/** image depth in bits */ /** image depth in bits */
OPJ_UINT32 bpp; OPJ_UINT32 bpp;
/** signed (1) / unsigned (0) */ /** signed (1) / unsigned (0) */
OPJ_UINT32 sgnd; OPJ_UINT32 sgnd;
} opj_image_cmptparm_t; } opj_image_cmptparm_t;
/* /*
========================================================== ==========================================================
Information on the JPEG 2000 codestream Information on the JPEG 2000 codestream
========================================================== ==========================================================
*/ */
/* QUITE EXPERIMENTAL FOR THE MOMENT */ /* QUITE EXPERIMENTAL FOR THE MOMENT */
/** /**
* Index structure : Information concerning a packet inside tile * Index structure : Information concerning a packet inside tile
* */ * */
typedef struct opj_packet_info { typedef struct opj_packet_info {
/** packet start position (including SOP marker if it exists) */ /** packet start position (including SOP marker if it exists) */
OPJ_OFF_T start_pos; OPJ_OFF_T start_pos;
/** end of packet header position (including EPH marker if it exists /** end of packet header position (including EPH marker if it exists)*/
)*/ OPJ_OFF_T end_ph_pos;
OPJ_OFF_T end_ph_pos; /** packet end position */
/** packet end position */ OPJ_OFF_T end_pos;
OPJ_OFF_T end_pos; /** packet distorsion */
/** packet distorsion */ double disto;
double disto;
} opj_packet_info_t; } opj_packet_info_t;
/* UniPG>> */ /* UniPG>> */
/** /**
* Marker structure * Marker structure
* */ * */
typedef struct opj_marker_info { typedef struct opj_marker_info {
/** marker type */ /** marker type */
unsigned short int type; unsigned short int type;
/** position in codestream */ /** position in codestream */
OPJ_OFF_T pos; OPJ_OFF_T pos;
/** length, marker val included */ /** length, marker val included */
int len; int len;
} opj_marker_info_t; } opj_marker_info_t;
/* <<UniPG */ /* <<UniPG */
/** /**
* Index structure : Information concerning tile-parts * Index structure : Information concerning tile-parts
*/ */
typedef struct opj_tp_info { typedef struct opj_tp_info {
/** start position of tile part */ /** start position of tile part */
int tp_start_pos; int tp_start_pos;
/** end position of tile part header */ /** end position of tile part header */
int tp_end_header; int tp_end_header;
/** end position of tile part */ /** end position of tile part */
int tp_end_pos; int tp_end_pos;
/** start packet of tile part */ /** start packet of tile part */
int tp_start_pack; int tp_start_pack;
/** number of packets of tile part */ /** number of packets of tile part */
int tp_numpacks; int tp_numpacks;
} opj_tp_info_t; } opj_tp_info_t;
/** /**
* Index structure : information regarding tiles * Index structure : information regarding tiles
*/ */
typedef struct opj_tile_info { typedef struct opj_tile_info {
/** value of thresh for each layer by tile cfr. Marcela */ /** value of thresh for each layer by tile cfr. Marcela */
double *thresh; double *thresh;
/** number of tile */ /** number of tile */
int tileno; int tileno;
/** start position */ /** start position */
int start_pos; int start_pos;
/** end position of the header */ /** end position of the header */
int end_header; int end_header;
/** end position */ /** end position */
int end_pos; int end_pos;
/** precinct number for each resolution level (width) */ /** precinct number for each resolution level (width) */
int pw[33]; int pw[33];
/** precinct number for each resolution level (height) */ /** precinct number for each resolution level (height) */
int ph[33]; int ph[33];
/** precinct size (in power of 2), in X for each resolution level */ /** precinct size (in power of 2), in X for each resolution level */
int pdx[33]; int pdx[33];
/** precinct size (in power of 2), in Y for each resolution level */ /** precinct size (in power of 2), in Y for each resolution level */
int pdy[33]; int pdy[33];
/** information concerning packets inside tile */ /** information concerning packets inside tile */
opj_packet_info_t *packet; opj_packet_info_t *packet;
/** add fixed_quality */ /** add fixed_quality */
int numpix; int numpix;
/** add fixed_quality */ /** add fixed_quality */
double distotile; double distotile;
/** number of markers */ /** number of markers */
int marknum; int marknum;
/** list of markers */ /** list of markers */
opj_marker_info_t *marker; opj_marker_info_t *marker;
/** actual size of markers array */ /** actual size of markers array */
int maxmarknum; int maxmarknum;
/** number of tile parts */ /** number of tile parts */
int num_tps; int num_tps;
/** information concerning tile parts */ /** information concerning tile parts */
opj_tp_info_t *tp; opj_tp_info_t *tp;
} opj_tile_info_t; } opj_tile_info_t;
/** /**
* Index structure of the codestream * Index structure of the codestream
*/ */
typedef struct opj_codestream_info { typedef struct opj_codestream_info {
/** maximum distortion reduction on the whole image (add for Marcela /** maximum distortion reduction on the whole image (add for Marcela) *
) */ /
double D_max; double D_max;
/** packet number */ /** packet number */
int packno; int packno;
/** writing the packet in the index with t2_encode_packets */ /** writing the packet in the index with t2_encode_packets */
int index_write; int index_write;
/** image width */ /** image width */
int image_w; int image_w;
/** image height */ /** image height */
int image_h; int image_h;
/** progression order */ /** progression order */
OPJ_PROG_ORDER prog; OPJ_PROG_ORDER prog;
/** tile size in x */ /** tile size in x */
int tile_x; int tile_x;
/** tile size in y */ /** tile size in y */
int tile_y; int tile_y;
/** */ /** */
int tile_Ox; int tile_Ox;
/** */ /** */
int tile_Oy; int tile_Oy;
/** number of tiles in X */ /** number of tiles in X */
int tw; int tw;
/** number of tiles in Y */ /** number of tiles in Y */
int th; int th;
/** component numbers */ /** component numbers */
int numcomps; int numcomps;
/** number of layer */ /** number of layer */
int numlayers; int numlayers;
/** number of decomposition for each component */ /** number of decomposition for each component */
int *numdecompos; int *numdecompos;
/* UniPG>> */ /* UniPG>> */
/** number of markers */ /** number of markers */
int marknum; int marknum;
/** list of markers */ /** list of markers */
opj_marker_info_t *marker; opj_marker_info_t *marker;
/** actual size of markers array */ /** actual size of markers array */
int maxmarknum; int maxmarknum;
/* <<UniPG */ /* <<UniPG */
/** main header position */ /** main header position */
int main_head_start; int main_head_start;
/** main header position */ /** main header position */
int main_head_end; int main_head_end;
/** codestream's size */ /** codestream's size */
int codestream_size; int codestream_size;
/** information regarding tiles inside image */ /** information regarding tiles inside image */
opj_tile_info_t *tile; opj_tile_info_t *tile;
} opj_codestream_info_t; } opj_codestream_info_t;
/* <----------------------------------------------------------- */ /* <----------------------------------------------------------- */
/* new output management of the codestream information and index */ /* new output management of the codestream information and index */
/** /**
* Tile-component coding parameters information * Tile-component coding parameters information
*/ */
typedef struct opj_tccp_info typedef struct opj_tccp_info {
{ /** component index */
/** component index */ OPJ_UINT32 compno;
OPJ_UINT32 compno; /** coding style */
/** coding style */ OPJ_UINT32 csty;
OPJ_UINT32 csty; /** number of resolutions */
/** number of resolutions */ OPJ_UINT32 numresolutions;
OPJ_UINT32 numresolutions; /** code-blocks width */
/** code-blocks width */ OPJ_UINT32 cblkw;
OPJ_UINT32 cblkw; /** code-blocks height */
/** code-blocks height */ OPJ_UINT32 cblkh;
OPJ_UINT32 cblkh; /** code-block coding style */
/** code-block coding style */ OPJ_UINT32 cblksty;
OPJ_UINT32 cblksty; /** discrete wavelet transform identifier: 0 = 9-7 irreversible, 1 = 5-
/** discrete wavelet transform identifier */ 3 reversible */
OPJ_UINT32 qmfbid; OPJ_UINT32 qmfbid;
/** quantisation style */ /** quantisation style */
OPJ_UINT32 qntsty; OPJ_UINT32 qntsty;
/** stepsizes used for quantization */ /** stepsizes used for quantization */
OPJ_UINT32 stepsizes_mant[OPJ_J2K_MAXBANDS]; OPJ_UINT32 stepsizes_mant[OPJ_J2K_MAXBANDS];
/** stepsizes used for quantization */ /** stepsizes used for quantization */
OPJ_UINT32 stepsizes_expn[OPJ_J2K_MAXBANDS]; OPJ_UINT32 stepsizes_expn[OPJ_J2K_MAXBANDS];
/** number of guard bits */ /** number of guard bits */
OPJ_UINT32 numgbits; OPJ_UINT32 numgbits;
/** Region Of Interest shift */ /** Region Of Interest shift */
OPJ_INT32 roishift; OPJ_INT32 roishift;
/** precinct width */ /** precinct width */
OPJ_UINT32 prcw[OPJ_J2K_MAXRLVLS]; OPJ_UINT32 prcw[OPJ_J2K_MAXRLVLS];
/** precinct height */ /** precinct height */
OPJ_UINT32 prch[OPJ_J2K_MAXRLVLS]; OPJ_UINT32 prch[OPJ_J2K_MAXRLVLS];
} }
opj_tccp_info_t; opj_tccp_info_t;
/** /**
* Tile coding parameters information * Tile coding parameters information
*/ */
typedef struct opj_tile_v2_info { typedef struct opj_tile_v2_info {
/** number (index) of tile */ /** number (index) of tile */
int tileno; int tileno;
/** coding style */ /** coding style */
OPJ_UINT32 csty; OPJ_UINT32 csty;
/** progression order */ /** progression order */
OPJ_PROG_ORDER prg; OPJ_PROG_ORDER prg;
/** number of layers */ /** number of layers */
OPJ_UINT32 numlayers; OPJ_UINT32 numlayers;
/** multi-component transform identifier */ /** multi-component transform identifier */
OPJ_UINT32 mct; OPJ_UINT32 mct;
/** information concerning tile component parameters*/ /** information concerning tile component parameters*/
opj_tccp_info_t *tccp_info; opj_tccp_info_t *tccp_info;
} opj_tile_info_v2_t; } opj_tile_info_v2_t;
/** /**
* Information structure about the codestream (FIXME should be expand and e nhance) * Information structure about the codestream (FIXME should be expand and e nhance)
*/ */
typedef struct opj_codestream_info_v2 { typedef struct opj_codestream_info_v2 {
/* Tile info */ /* Tile info */
/** tile origin in x = XTOsiz */ /** tile origin in x = XTOsiz */
OPJ_UINT32 tx0; OPJ_UINT32 tx0;
/** tile origin in y = YTOsiz */ /** tile origin in y = YTOsiz */
OPJ_UINT32 ty0; OPJ_UINT32 ty0;
/** tile size in x = XTsiz */ /** tile size in x = XTsiz */
OPJ_UINT32 tdx; OPJ_UINT32 tdx;
/** tile size in y = YTsiz */ /** tile size in y = YTsiz */
OPJ_UINT32 tdy; OPJ_UINT32 tdy;
/** number of tiles in X */ /** number of tiles in X */
OPJ_UINT32 tw; OPJ_UINT32 tw;
/** number of tiles in Y */ /** number of tiles in Y */
OPJ_UINT32 th; OPJ_UINT32 th;
/** number of components*/ /** number of components*/
OPJ_UINT32 nbcomps; OPJ_UINT32 nbcomps;
/** Default information regarding tiles inside image */ /** Default information regarding tiles inside image */
opj_tile_info_v2_t m_default_tile_info; opj_tile_info_v2_t m_default_tile_info;
/** information regarding tiles inside image */ /** information regarding tiles inside image */
opj_tile_info_v2_t *tile_info; /* FIXME not used for the moment */ opj_tile_info_v2_t *tile_info; /* FIXME not used for the moment */
} opj_codestream_info_v2_t; } opj_codestream_info_v2_t;
/** /**
* Index structure about a tile part * Index structure about a tile part
*/ */
typedef struct opj_tp_index { typedef struct opj_tp_index {
/** start position */ /** start position */
OPJ_OFF_T start_pos; OPJ_OFF_T start_pos;
/** end position of the header */ /** end position of the header */
OPJ_OFF_T end_header; OPJ_OFF_T end_header;
/** end position */ /** end position */
OPJ_OFF_T end_pos; OPJ_OFF_T end_pos;
} opj_tp_index_t; } opj_tp_index_t;
/** /**
* Index structure about a tile * Index structure about a tile
*/ */
typedef struct opj_tile_index { typedef struct opj_tile_index {
/** tile index */ /** tile index */
OPJ_UINT32 tileno; OPJ_UINT32 tileno;
/** number of tile parts */ /** number of tile parts */
OPJ_UINT32 nb_tps; OPJ_UINT32 nb_tps;
/** current nb of tile part (allocated)*/ /** current nb of tile part (allocated)*/
OPJ_UINT32 current_nb_tps; OPJ_UINT32 current_nb_tps;
/** current tile-part index */ /** current tile-part index */
OPJ_UINT32 current_tpsno; OPJ_UINT32 current_tpsno;
/** information concerning tile parts */ /** information concerning tile parts */
opj_tp_index_t *tp_index; opj_tp_index_t *tp_index;
/* UniPG>> */ /* NOT USED FOR THE MOMENT IN THE V2 VERSION */ /* UniPG>> */ /* NOT USED FOR THE MOMENT IN THE V2 VERSION */
/** number of markers */ /** number of markers */
OPJ_UINT32 marknum; OPJ_UINT32 marknum;
/** list of markers */ /** list of markers */
opj_marker_info_t *marker; opj_marker_info_t *marker;
/** actual size of markers array */ /** actual size of markers array */
OPJ_UINT32 maxmarknum; OPJ_UINT32 maxmarknum;
/* <<UniPG */ /* <<UniPG */
/** packet number */ /** packet number */
OPJ_UINT32 nb_packet; OPJ_UINT32 nb_packet;
/** information concerning packets inside tile */ /** information concerning packets inside tile */
opj_packet_info_t *packet_index; opj_packet_info_t *packet_index;
} opj_tile_index_t; } opj_tile_index_t;
/** /**
* Index structure of the codestream (FIXME should be expand and enhance) * Index structure of the codestream (FIXME should be expand and enhance)
*/ */
typedef struct opj_codestream_index { typedef struct opj_codestream_index {
/** main header start position (SOC position) */ /** main header start position (SOC position) */
OPJ_OFF_T main_head_start; OPJ_OFF_T main_head_start;
/** main header end position (first SOT position) */ /** main header end position (first SOT position) */
OPJ_OFF_T main_head_end; OPJ_OFF_T main_head_end;
/** codestream's size */ /** codestream's size */
OPJ_UINT64 codestream_size; OPJ_UINT64 codestream_size;
/* UniPG>> */ /* NOT USED FOR THE MOMENT IN THE V2 VERSION */ /* UniPG>> */ /* NOT USED FOR THE MOMENT IN THE V2 VERSION */
/** number of markers */ /** number of markers */
OPJ_UINT32 marknum; OPJ_UINT32 marknum;
/** list of markers */ /** list of markers */
opj_marker_info_t *marker; opj_marker_info_t *marker;
/** actual size of markers array */ /** actual size of markers array */
OPJ_UINT32 maxmarknum; OPJ_UINT32 maxmarknum;
/* <<UniPG */ /* <<UniPG */
/** */ /** */
OPJ_UINT32 nb_of_tiles; OPJ_UINT32 nb_of_tiles;
/** */ /** */
opj_tile_index_t *tile_index; /* FIXME not used for the moment */ opj_tile_index_t *tile_index; /* FIXME not used for the moment */
}opj_codestream_index_t; } opj_codestream_index_t;
/* -----------------------------------------------------------> */ /* -----------------------------------------------------------> */
/* /*
========================================================== ==========================================================
Metadata from the JP2file Metadata from the JP2file
========================================================== ==========================================================
*/ */
/** /**
* Info structure of the JP2 file * Info structure of the JP2 file
* EXPERIMENTAL FOR THE MOMENT * EXPERIMENTAL FOR THE MOMENT
*/ */
typedef struct opj_jp2_metadata { typedef struct opj_jp2_metadata {
/** */ /** */
OPJ_INT32 not_used; OPJ_INT32 not_used;
} opj_jp2_metadata_t; } opj_jp2_metadata_t;
/** /**
* Index structure of the JP2 file * Index structure of the JP2 file
* EXPERIMENTAL FOR THE MOMENT * EXPERIMENTAL FOR THE MOMENT
*/ */
typedef struct opj_jp2_index { typedef struct opj_jp2_index {
/** */ /** */
OPJ_INT32 not_used; OPJ_INT32 not_used;
} opj_jp2_index_t; } opj_jp2_index_t;
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
/* /*
========================================================== ==========================================================
openjpeg version openjpeg version
skipping to change at line 1062 skipping to change at line 1066
*/ */
/** /**
* Create an image * Create an image
* *
* @param numcmpts number of components * @param numcmpts number of components
* @param cmptparms components parameters * @param cmptparms components parameters
* @param clrspc image color space * @param clrspc image color space
* @return returns a new image structure if successful, returns NULL o therwise * @return returns a new image structure if successful, returns NULL o therwise
* */ * */
OPJ_API opj_image_t* OPJ_CALLCONV opj_image_create(OPJ_UINT32 numcmpts, opj OPJ_API opj_image_t* OPJ_CALLCONV opj_image_create(OPJ_UINT32 numcmpts,
_image_cmptparm_t *cmptparms, OPJ_COLOR_SPACE clrspc); opj_image_cmptparm_t *cmptparms, OPJ_COLOR_SPACE clrspc);
/** /**
* Deallocate any resources associated with an image * Deallocate any resources associated with an image
* *
* @param image image to be destroyed * @param image image to be destroyed
*/ */
OPJ_API void OPJ_CALLCONV opj_image_destroy(opj_image_t *image); OPJ_API void OPJ_CALLCONV opj_image_destroy(opj_image_t *image);
/** /**
* Creates an image without allocating memory for the image (used in the ne w version of the library). * Creates an image without allocating memory for the image (used in the ne w version of the library).
* *
* @param numcmpts the number of components * @param numcmpts the number of components
* @param cmptparms the components parameters * @param cmptparms the components parameters
* @param clrspc the image color space * @param clrspc the image color space
* *
* @return a new image structure if successful, NULL otherwise. * @return a new image structure if successful, NULL otherwise.
*/ */
OPJ_API opj_image_t* OPJ_CALLCONV opj_image_tile_create(OPJ_UINT32 numcmpts OPJ_API opj_image_t* OPJ_CALLCONV opj_image_tile_create(OPJ_UINT32 numcmpts
, opj_image_cmptparm_t *cmptparms, OPJ_COLOR_SPACE clrspc); ,
opj_image_cmptparm_t *cmptparms, OPJ_COLOR_SPACE clrspc);
/**
* Allocator for opj_image_t->comps[].data
* To be paired with opj_image_data_free.
*
* @param size number of bytes to allocate
*
* @return a new pointer if successful, NULL otherwise.
* @since 2.2.0
*/
OPJ_API void* OPJ_CALLCONV opj_image_data_alloc(OPJ_SIZE_T size);
/**
* Destructor for opj_image_t->comps[].data
* To be paired with opj_image_data_alloc.
*
* @param ptr Pointer to free
*
* @since 2.2.0
*/
OPJ_API void OPJ_CALLCONV opj_image_data_free(void* ptr);
/* /*
========================================================== ==========================================================
stream functions definitions stream functions definitions
========================================================== ==========================================================
*/ */
/** /**
* Creates an abstract stream. This function does nothing except allocating memory and initializing the abstract stream. * Creates an abstract stream. This function does nothing except allocating memory and initializing the abstract stream.
* *
* @param p_is_input if set to true then the stream will be an input stream, an output stream else. * @param p_is_input if set to true then the stream will be an input stream, an output stream else.
* *
* @return a stream object. * @return a stream object.
*/ */
OPJ_API opj_stream_t* OPJ_CALLCONV opj_stream_default_create(OPJ_BOOL p_is_ OPJ_API opj_stream_t* OPJ_CALLCONV opj_stream_default_create(
input); OPJ_BOOL p_is_input);
/** /**
* Creates an abstract stream. This function does nothing except allocating memory and initializing the abstract stream. * Creates an abstract stream. This function does nothing except allocating memory and initializing the abstract stream.
* *
* @param p_buffer_size FIXME DOC * @param p_buffer_size FIXME DOC
* @param p_is_input if set to true then the stream will * @param p_is_input if set to true then the stream will be an input
be an input stream, an output stream else. stream, an output stream else.
* *
* @return a stream object. * @return a stream object.
*/ */
OPJ_API opj_stream_t* OPJ_CALLCONV opj_stream_create(OPJ_SIZE_T p_buffer_si OPJ_API opj_stream_t* OPJ_CALLCONV opj_stream_create(OPJ_SIZE_T p_buffer_si
ze, OPJ_BOOL p_is_input); ze,
OPJ_BOOL p_is_input);
/** /**
* Destroys a stream created by opj_create_stream. This function does NOT c lose the abstract stream. If needed the user must * Destroys a stream created by opj_create_stream. This function does NOT c lose the abstract stream. If needed the user must
* close its own implementation of the stream. * close its own implementation of the stream.
* *
* @param p_stream the stream to destroy. * @param p_stream the stream to destroy.
*/ */
OPJ_API void OPJ_CALLCONV opj_stream_destroy(opj_stream_t* p_stream); OPJ_API void OPJ_CALLCONV opj_stream_destroy(opj_stream_t* p_stream);
/** /**
* Sets the given function to be used as a read function. * Sets the given function to be used as a read function.
* @param p_stream the stream to modify * @param p_stream the stream to modify
* @param p_function the function to use a read function. * @param p_function the function to use a read function.
*/ */
OPJ_API void OPJ_CALLCONV opj_stream_set_read_function(opj_stream_t* p_stre OPJ_API void OPJ_CALLCONV opj_stream_set_read_function(opj_stream_t* p_stre
am, opj_stream_read_fn p_function); am,
opj_stream_read_fn p_function);
/** /**
* Sets the given function to be used as a write function. * Sets the given function to be used as a write function.
* @param p_stream the stream to modify * @param p_stream the stream to modify
* @param p_function the function to use a write function * @param p_function the function to use a write function.
.
*/ */
OPJ_API void OPJ_CALLCONV opj_stream_set_write_function(opj_stream_t* p_str OPJ_API void OPJ_CALLCONV opj_stream_set_write_function(opj_stream_t* p_str
eam, opj_stream_write_fn p_function); eam,
opj_stream_write_fn p_function);
/** /**
* Sets the given function to be used as a skip function. * Sets the given function to be used as a skip function.
* @param p_stream the stream to modify * @param p_stream the stream to modify
* @param p_function the function to use a skip function. * @param p_function the function to use a skip function.
*/ */
OPJ_API void OPJ_CALLCONV opj_stream_set_skip_function(opj_stream_t* p_stre OPJ_API void OPJ_CALLCONV opj_stream_set_skip_function(opj_stream_t* p_stre
am, opj_stream_skip_fn p_function); am,
opj_stream_skip_fn p_function);
/** /**
* Sets the given function to be used as a seek function, the stream is the n seekable. * Sets the given function to be used as a seek function, the stream is the n seekable.
* @param p_stream the stream to modify * @param p_stream the stream to modify
* @param p_function the function to use a skip function. * @param p_function the function to use a skip function.
*/ */
OPJ_API void OPJ_CALLCONV opj_stream_set_seek_function(opj_stream_t* p_stre OPJ_API void OPJ_CALLCONV opj_stream_set_seek_function(opj_stream_t* p_stre
am, opj_stream_seek_fn p_function); am,
opj_stream_seek_fn p_function);
/** /**
* Sets the given data to be used as a user data for the stream. * Sets the given data to be used as a user data for the stream.
* @param p_stream the stream to modify * @param p_stream the stream to modify
* @param p_data the data to set. * @param p_data the data to set.
* @param p_function the function to free p_data when opj * @param p_function the function to free p_data when opj_stream_des
_stream_destroy() is called. troy() is called.
*/ */
OPJ_API void OPJ_CALLCONV opj_stream_set_user_data (opj_stream_t* p_stream, OPJ_API void OPJ_CALLCONV opj_stream_set_user_data(opj_stream_t* p_stream,
void * p_data, opj_stream_free_user_data_fn p_function); void * p_data, opj_stream_free_user_data_fn p_function);
/** /**
* Sets the length of the user data for the stream. * Sets the length of the user data for the stream.
* *
* @param p_stream the stream to modify * @param p_stream the stream to modify
* @param data_length length of the user_data. * @param data_length length of the user_data.
*/ */
OPJ_API void OPJ_CALLCONV opj_stream_set_user_data_length(opj_stream_t* p_s OPJ_API void OPJ_CALLCONV opj_stream_set_user_data_length(
tream, OPJ_UINT64 data_length); opj_stream_t* p_stream, OPJ_UINT64 data_length);
/** /**
* Create a stream from a file identified with its filename with default pa rameters (helper function) * Create a stream from a file identified with its filename with default pa rameters (helper function)
* @param fname the filename of the file to stream * @param fname the filename of the file to stream
* @param p_is_read_stream whether the stream is a read stream (true) or n ot (false) * @param p_is_read_stream whether the stream is a read stream (true) or n ot (false)
*/ */
OPJ_API opj_stream_t* OPJ_CALLCONV opj_stream_create_default_file_stream (c OPJ_API opj_stream_t* OPJ_CALLCONV opj_stream_create_default_file_stream(
onst char *fname, OPJ_BOOL p_is_read_stream); const char *fname, OPJ_BOOL p_is_read_stream);
/** Create a stream from a file identified with its filename with a specifi c buffer size /** Create a stream from a file identified with its filename with a specifi c buffer size
* @param fname the filename of the file to stream * @param fname the filename of the file to stream
* @param p_buffer_size size of the chunk used to stream * @param p_buffer_size size of the chunk used to stream
* @param p_is_read_stream whether the stream is a read stream (true) or n ot (false) * @param p_is_read_stream whether the stream is a read stream (true) or n ot (false)
*/ */
OPJ_API opj_stream_t* OPJ_CALLCONV opj_stream_create_file_stream (const cha OPJ_API opj_stream_t* OPJ_CALLCONV opj_stream_create_file_stream(
r *fname, const char *fname,
OPJ_SI OPJ_SIZE_T p_buffer_size,
ZE_T p_buffer_size, OPJ_BOOL p_is_read_stream);
OPJ_BO
OL p_is_read_stream);
/* /*
========================================================== ==========================================================
event manager functions definitions event manager functions definitions
========================================================== ==========================================================
*/ */
/** /**
* Set the info handler use by openjpeg. * Set the info handler use by openjpeg.
* @param p_codec the codec previously initialise * @param p_codec the codec previously initialise
* @param p_callback the callback function which will be used * @param p_callback the callback function which will be used
* @param p_user_data client object where will be returned the message * @param p_user_data client object where will be returned the message
*/ */
OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_info_handler(opj_codec_t * p_codec, OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_info_handler(opj_codec_t * p_codec,
opj_msg_callback p_callb opj_msg_callback p_callback,
ack, void * p_user_data);
void * p_user_data);
/** /**
* Set the warning handler use by openjpeg. * Set the warning handler use by openjpeg.
* @param p_codec the codec previously initialise * @param p_codec the codec previously initialise
* @param p_callback the callback function which will be used * @param p_callback the callback function which will be used
* @param p_user_data client object where will be returned the message * @param p_user_data client object where will be returned the message
*/ */
OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_warning_handler(opj_codec_t * p_codec , OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_warning_handler(opj_codec_t * p_codec ,
opj_msg_callback p_ca opj_msg_callback p_callback,
llback, void * p_user_data);
void * p_user_data);
/** /**
* Set the error handler use by openjpeg. * Set the error handler use by openjpeg.
* @param p_codec the codec previously initialise * @param p_codec the codec previously initialise
* @param p_callback the callback function which will be used * @param p_callback the callback function which will be used
* @param p_user_data client object where will be returned the message * @param p_user_data client object where will be returned the message
*/ */
OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_error_handler(opj_codec_t * p_codec, OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_error_handler(opj_codec_t * p_codec,
opj_msg_callback p_call opj_msg_callback p_callback,
back, void * p_user_data);
void * p_user_data);
/* /*
========================================================== ==========================================================
codec functions definitions codec functions definitions
========================================================== ==========================================================
*/ */
/** /**
* Creates a J2K/JP2 decompression structure * Creates a J2K/JP2 decompression structure
* @param format Decoder to select * @param format Decoder to select
* *
* @return Returns a handle to a decompressor if successful, returns NULL o therwise * @return Returns a handle to a decompressor if successful, returns NULL o therwise
* */ * */
OPJ_API opj_codec_t* OPJ_CALLCONV opj_create_decompress(OPJ_CODEC_FORMAT fo OPJ_API opj_codec_t* OPJ_CALLCONV opj_create_decompress(
rmat); OPJ_CODEC_FORMAT format);
/** /**
* Destroy a decompressor handle * Destroy a decompressor handle
* *
* @param p_codec decompressor handle to destroy * @param p_codec decompressor handle to destroy
*/ */
OPJ_API void OPJ_CALLCONV opj_destroy_codec(opj_codec_t * p_codec); OPJ_API void OPJ_CALLCONV opj_destroy_codec(opj_codec_t * p_codec);
/** /**
* Read after the codestream if necessary * Read after the codestream if necessary
* @param p_codec the JPEG2000 codec to read. * @param p_codec the JPEG2000 codec to read.
* @param p_stream the JPEG2000 stream. * @param p_stream the JPEG2000 stream.
*/ */
OPJ_API OPJ_BOOL OPJ_CALLCONV opj_end_decompress ( opj_codec_t *p_codec OPJ_API OPJ_BOOL OPJ_CALLCONV opj_end_decompress(opj_codec_t *p_codec,
, opj_stream_t *p_stream);
opj_stream_t *p_stream);
/** /**
* Set decoding parameters to default values * Set decoding parameters to default values
* @param parameters Decompression parameters * @param parameters Decompression parameters
*/ */
OPJ_API void OPJ_CALLCONV opj_set_default_decoder_parameters(opj_dparameter OPJ_API void OPJ_CALLCONV opj_set_default_decoder_parameters(
s_t *parameters); opj_dparameters_t *parameters);
/** /**
* Setup the decoder with decompression parameters provided by the user and with the message handler * Setup the decoder with decompression parameters provided by the user and with the message handler
* provided by the user. * provided by the user.
* *
* @param p_codec decompressor handler * @param p_codec decompressor handler
* @param parameters decompression parameters * @param parameters decompression parameters
* *
* @return true if the decoder is correctly set * @return true if the decoder is correctly set
*/ */
OPJ_API OPJ_BOOL OPJ_CALLCONV opj_setup_decoder(opj_codec_t *p_codec, OPJ_API OPJ_BOOL OPJ_CALLCONV opj_setup_decoder(opj_codec_t *p_codec,
opj_dparameters_t *parameters);
opj_dparameters_t *parameters );
/**
* Allocates worker threads for the compressor/decompressor.
*
* By default, only the main thread is used. If this function is not used,
* but the OPJ_NUM_THREADS environment variable is set, its value will be
* used to initialize the number of threads. The value can be either an int
eger
* number, or "ALL_CPUS". If OPJ_NUM_THREADS is set and this function is ca
lled,
* this function will override the behaviour of the environment variable.
*
* Note: currently only has effect on the decompressor.
*
* @param p_codec decompressor handler
* @param num_threads number of threads.
*
* @return OPJ_TRUE if the decoder is correctly set
*/
OPJ_API OPJ_BOOL OPJ_CALLCONV opj_codec_set_threads(opj_codec_t *p_codec,
int num_threads);
/** /**
* Decodes an image header. * Decodes an image header.
* *
* @param p_stream the jpeg2000 stream. * @param p_stream the jpeg2000 stream.
* @param p_codec the jpeg2000 codec to read. * @param p_codec the jpeg2000 codec to read.
* @param p_image the image structure initialized with * @param p_image the image structure initialized with the charac
the characteristics of encoded image. teristics of encoded image.
* *
* @return true if the main header of the co destream and the JP2 header is correctly read. * @return true if the main header of the codestream and the JP 2 header is correctly read.
*/ */
OPJ_API OPJ_BOOL OPJ_CALLCONV opj_read_header ( opj_stream_t *p_stre OPJ_API OPJ_BOOL OPJ_CALLCONV opj_read_header(opj_stream_t *p_stream,
am, opj_codec_t *p_codec,
opj_image_t **p_image);
opj_codec_t *p_codec,
opj_image_t **p_image);
/** /**
* Sets the given area to be decoded. This function should be called right after opj_read_header and before any tile header reading. * Sets the given area to be decoded. This function should be called right after opj_read_header and before any tile header reading.
* *
* @param p_codec the jpeg2000 codec. * @param p_codec the jpeg2000 codec.
* @param p_image the decoded image previously setted by opj_r * @param p_image the decoded image previously setted by opj_read
ead_header _header
* @param p_start_x the left position of the rectangle t * @param p_start_x the left position of the rectangle to decode (i
o decode (in image coordinates). n image coordinates).
* @param p_end_x the right position of the rectangle * @param p_end_x the right position of the rectangle to decode (
to decode (in image coordinates). in image coordinates).
* @param p_start_y the up position of the rectangle to * @param p_start_y the up position of the rectangle to decode (in
decode (in image coordinates). image coordinates).
* @param p_end_y the bottom position of the rectangle * @param p_end_y the bottom position of the rectangle to decode
to decode (in image coordinates). (in image coordinates).
* *
* @return true if the area could be set. * @return true if the area could be set.
*/ */
OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_decode_area( opj_codec_t *p_codec OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_decode_area(opj_codec_t *p_codec,
, opj_image_t* p_image,
OPJ_INT32 p_start_x, OPJ_INT32 p_start_y,
opj_image_t* p_image, OPJ_INT32 p_end_x, OPJ_INT32 p_end_y);
OPJ_INT32 p_start_x, OPJ_INT32 p_start_y,
OPJ_INT32 p_end_x, OPJ_INT32 p_end_y );
/** /**
* Decode an image from a JPEG-2000 codestream * Decode an image from a JPEG-2000 codestream
* *
* @param p_decompressor decompressor handle * @param p_decompressor decompressor handle
* @param p_stream Input buffer stream * @param p_stream Input buffer stream
* @param p_image the decoded image * @param p_image the decoded image
* @return true if success, otherwise f * @return true if success, otherwise false
alse
* */ * */
OPJ_API OPJ_BOOL OPJ_CALLCONV opj_decode( opj_codec_t *p_decompressor, OPJ_API OPJ_BOOL OPJ_CALLCONV opj_decode(opj_codec_t *p_decompressor,
opj_stream_t *p_stream, opj_stream_t *p_stream,
opj_image_t *p_image); opj_image_t *p_image);
/** /**
* Get the decoded tile from the codec * Get the decoded tile from the codec
* *
* @param p_codec the jpeg2000 codec. * @param p_codec the jpeg2000 codec.
* @param p_stream input streamm * @param p_stream input streamm
* @param p_image output image * @param p_image output image
* @param tile_index index of the tile which will be deco * @param tile_index index of the tile which will be decode
de
* *
* @return true if success, otherwise f alse * @return true if success, otherwise false
*/ */
OPJ_API OPJ_BOOL OPJ_CALLCONV opj_get_decoded_tile( opj_codec_t *p_codec OPJ_API OPJ_BOOL OPJ_CALLCONV opj_get_decoded_tile(opj_codec_t *p_codec,
, opj_stream_t *p_stream,
opj_image_t *p_image,
opj_stream_t *p_stream, OPJ_UINT32 tile_index);
opj_image_t *p_image,
OPJ_UINT32 tile_index);
/** /**
* Set the resolution factor of the decoded image * Set the resolution factor of the decoded image
* @param p_codec the jpeg2000 codec. * @param p_codec the jpeg2000 codec.
* @param res_factor resolution factor to set * @param res_factor resolution factor to set
* *
* @return true if success, otherwise f alse * @return true if success, otherwise false
*/ */
OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_decoded_resolution_factor(opj_codec_t OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_decoded_resolution_factor(
*p_codec, OPJ_UINT32 res_factor); opj_codec_t *p_codec, OPJ_UINT32 res_factor);
/** /**
* Writes a tile with the given data. * Writes a tile with the given data.
* *
* @param p_codec the jpeg2000 codec. * @param p_codec the jpeg2000 codec.
* @param p_tile_index the index of the tile to write. At t * @param p_tile_index the index of the tile to write. At the mome
he moment, the tiles must be written from 0 to n-1 in sequence. nt, the tiles must be written from 0 to n-1 in sequence.
* @param p_data pointer to the data to write * @param p_data pointer to the data to write. Data is arran
. Data is arranged in sequence, data_comp0, then data_comp1, then ... NO IN ged in sequence, data_comp0, then data_comp1, then ... NO INTERLEAVING shou
TERLEAVING should be set. ld be set.
* @param p_data_size this value os used to make s * @param p_data_size this value os used to make sure the data be
ure the data being written is correct. The size must be equal to the sum fo ing written is correct. The size must be equal to the sum for each componen
r each component of t of
* tile_width * tile_height * component_size. component_size can be 1,2 or 4 bytes, depending on the precision of the giv en component. * tile_width * tile_height * component_size. component_size can be 1,2 or 4 bytes, depending on the precision of the giv en component.
* @param p_stream the stream to write data to. * @param p_stream the stream to write data to.
* *
* @return true if the data could be written. * @return true if the data could be written.
*/ */
OPJ_API OPJ_BOOL OPJ_CALLCONV opj_write_tile ( opj_codec_t *p_codec, OPJ_API OPJ_BOOL OPJ_CALLCONV opj_write_tile(opj_codec_t *p_codec,
OPJ_UINT32 p_tile_index,
OPJ_UINT32 p_tile_index, OPJ_BYTE * p_data,
OPJ_UINT32 p_data_size,
OPJ_BYTE * p_data, opj_stream_t *p_stream);
OPJ_UINT32 p_data_size,
opj_stream_t *p_stream );
/** /**
* Reads a tile header. This function is compulsory and allows one to know the size of the tile that will be decoded. * Reads a tile header. This function is compulsory and allows one to know the size of the tile that will be decoded.
* The user may need to refer to the image got by opj_read_header to unders tand the size being taken by the tile. * The user may need to refer to the image got by opj_read_header to unders tand the size being taken by the tile.
* *
* @param p_codec the jpeg2000 codec. * @param p_codec the jpeg2000 codec.
* @param p_tile_index pointer to a value that will hold the index * @param p_tile_index pointer to a value that will hold the index of
of the tile being decoded, in case of success. the tile being decoded, in case of success.
* @param p_data_size pointer to a value that will hold th * @param p_data_size pointer to a value that will hold the maximum s
e maximum size of the decoded data, in case of success. In case ize of the decoded data, in case of success. In case
* of truncated codestr * of truncated codestreams, the actual number of
eams, the actual number of bytes decoded may be lower. The computation of t bytes decoded may be lower. The computation of the size is the same
he size is the same * as depicted in opj_write_tile.
* as depicted in opj_w * @param p_tile_x0 pointer to a value that will hold the x0 pos of
rite_tile. the tile (in the image).
* @param p_tile_x0 pointer to a value that will hold th * @param p_tile_y0 pointer to a value that will hold the y0 pos of
e x0 pos of the tile (in the image). the tile (in the image).
* @param p_tile_y0 pointer to a value that will hold th * @param p_tile_x1 pointer to a value that will hold the x1 pos of
e y0 pos of the tile (in the image). the tile (in the image).
* @param p_tile_x1 pointer to a value that will hold th * @param p_tile_y1 pointer to a value that will hold the y1 pos of
e x1 pos of the tile (in the image). the tile (in the image).
* @param p_tile_y1 pointer to a value that will hold th * @param p_nb_comps pointer to a value that will hold the number of
e y1 pos of the tile (in the image). components in the tile.
* @param p_nb_comps pointer to a value that will hold th * @param p_should_go_on pointer to a boolean that will hold the fact th
e number of components in the tile. at the decoding should go on. In case the
* @param p_should_go_on pointer to a boolean that will hold the fact * codestream is over at the time of the call, the
that the decoding should go on. In case the value will be set to false. The user should then stop
* codestream is over a * the decoding.
t the time of the call, the value will be set to false. The user should the * @param p_stream the stream to decode.
n stop * @return true if the tile header could be decoded. In case th
* the decoding. e decoding should end, the returned value is still true.
* @param p_stream the stream to decode. * returning false may be the result of a shortage
* @return true if the tile header could be decoded. of memory or an internal error.
In case the decoding should end, the returned value is still true.
* returning false may
be the result of a shortage of memory or an internal error.
*/ */
OPJ_API OPJ_BOOL OPJ_CALLCONV opj_read_tile_header( opj_codec_t *p_codec OPJ_API OPJ_BOOL OPJ_CALLCONV opj_read_tile_header(opj_codec_t *p_codec,
, opj_stream_t * p_stream,
OPJ_UINT32 * p_tile_index,
opj_stream_t * p_stream, OPJ_UINT32 * p_data_size,
OPJ_INT32 * p_tile_x0, OPJ_INT32 * p_tile_y0,
OPJ_UINT32 * p_tile_index, OPJ_INT32 * p_tile_x1, OPJ_INT32 * p_tile_y1,
OPJ_UINT32 * p_nb_comps,
OPJ_UINT32 * p_data_size, OPJ_BOOL * p_should_go_on);
OPJ_INT32 * p_tile_x0, OPJ_INT32 * p_tile_y0,
OPJ_INT32 * p_tile_x1, OPJ_INT32 * p_tile_y1,
OPJ_UINT32 * p_nb_comps,
OPJ_BOOL * p_should_go_on );
/** /**
* Reads a tile data. This function is compulsory and allows one to decode tile data. opj_read_tile_header should be called before. * Reads a tile data. This function is compulsory and allows one to decode tile data. opj_read_tile_header should be called before.
* The user may need to refer to the image got by opj_read_header to unders tand the size being taken by the tile. * The user may need to refer to the image got by opj_read_header to unders tand the size being taken by the tile.
* *
* @param p_codec the jpeg2000 codec. * @param p_codec the jpeg2000 codec.
* @param p_tile_index the index of the tile being decoded, this sh * @param p_tile_index the index of the tile being decoded, this shoul
ould be the value set by opj_read_tile_header. d be the value set by opj_read_tile_header.
* @param p_data pointer to a memory block that will * @param p_data pointer to a memory block that will hold the de
hold the decoded data. coded data.
* @param p_data_size size of p_data. p_data_size should b * @param p_data_size size of p_data. p_data_size should be bigger or
e bigger or equal to the value set by opj_read_tile_header. equal to the value set by opj_read_tile_header.
* @param p_stream the stream to decode. * @param p_stream the stream to decode.
* *
* @return true if the data could be decoded. * @return true if the data could be decoded.
*/ */
OPJ_API OPJ_BOOL OPJ_CALLCONV opj_decode_tile_data( opj_codec_t *p_codec OPJ_API OPJ_BOOL OPJ_CALLCONV opj_decode_tile_data(opj_codec_t *p_codec,
, OPJ_UINT32 p_tile_index,
OPJ_BYTE * p_data,
OPJ_UINT32 p_tile_index, OPJ_UINT32 p_data_size,
opj_stream_t *p_stream);
OPJ_BYTE * p_data,
OPJ_UINT32 p_data_size,
opj_stream_t *p_stream );
/* COMPRESSION FUNCTIONS*/ /* COMPRESSION FUNCTIONS*/
/** /**
* Creates a J2K/JP2 compression structure * Creates a J2K/JP2 compression structure
* @param format Coder to select * @param format Coder to select
* @return Returns a handle to a compressor if * @return Returns a handle to a compressor if successful, ret
successful, returns NULL otherwise urns NULL otherwise
*/ */
OPJ_API opj_codec_t* OPJ_CALLCONV opj_create_compress(OPJ_CODEC_FORMAT form at); OPJ_API opj_codec_t* OPJ_CALLCONV opj_create_compress(OPJ_CODEC_FORMAT form at);
/** /**
Set encoding parameters to default values, that means : Set encoding parameters to default values, that means :
<ul> <ul>
<li>Lossless <li>Lossless
<li>1 tile <li>1 tile
<li>Size of precinct : 2^15 x 2^15 (means 1 precinct) <li>Size of precinct : 2^15 x 2^15 (means 1 precinct)
<li>Size of code-block : 64 x 64 <li>Size of code-block : 64 x 64
skipping to change at line 1417 skipping to change at line 1476
<li>No mode switch activated <li>No mode switch activated
<li>Progression order: LRCP <li>Progression order: LRCP
<li>No index file <li>No index file
<li>No ROI upshifted <li>No ROI upshifted
<li>No offset of the origin of the image <li>No offset of the origin of the image
<li>No offset of the origin of the tiles <li>No offset of the origin of the tiles
<li>Reversible DWT 5-3 <li>Reversible DWT 5-3
</ul> </ul>
@param parameters Compression parameters @param parameters Compression parameters
*/ */
OPJ_API void OPJ_CALLCONV opj_set_default_encoder_parameters(opj_cparameter OPJ_API void OPJ_CALLCONV opj_set_default_encoder_parameters(
s_t *parameters); opj_cparameters_t *parameters);
/** /**
* Setup the encoder parameters using the current image and using user para meters. * Setup the encoder parameters using the current image and using user para meters.
* @param p_codec Compressor handle * @param p_codec Compressor handle
* @param parameters Compression parameters * @param parameters Compression parameters
* @param image Input filled image * @param image Input filled image
*/ */
OPJ_API OPJ_BOOL OPJ_CALLCONV opj_setup_encoder(opj_codec_t *p_codec, OPJ_API OPJ_BOOL OPJ_CALLCONV opj_setup_encoder(opj_codec_t *p_codec,
opj_cparameters_t *parameters,
opj_cparameters_t *parameters, opj_image_t *image);
opj_image_t *image);
/** /**
* Start to compress the current image. * Start to compress the current image.
* @param p_codec Compressor handle * @param p_codec Compressor handle
* @param image Input filled image * @param p_image Input filled image
* @param p_stream Input stgream * @param p_stream Input stgream
*/ */
OPJ_API OPJ_BOOL OPJ_CALLCONV opj_start_compress ( opj_codec_t *p_codec OPJ_API OPJ_BOOL OPJ_CALLCONV opj_start_compress(opj_codec_t *p_codec,
, opj_image_t * p_image,
opj_stream_t *p_stream);
opj_image_t * p_image,
opj_stream_t *p_stream);
/** /**
* End to compress the current image. * End to compress the current image.
* @param p_codec Compressor handle * @param p_codec Compressor handle
* @param p_stream Input stgream * @param p_stream Input stgream
*/ */
OPJ_API OPJ_BOOL OPJ_CALLCONV opj_end_compress (opj_codec_t *p_codec, OPJ_API OPJ_BOOL OPJ_CALLCONV opj_end_compress(opj_codec_t *p_codec,
opj_stream_t *p_stream);
opj_stream_t *p_stream);
/** /**
* Encode an image into a JPEG-2000 codestream * Encode an image into a JPEG-2000 codestream
* @param p_codec compressor handle * @param p_codec compressor handle
* @param p_stream Output buffer stream * @param p_stream Output buffer stream
* *
* @return Returns true if successful, returns false otherwise * @return Returns true if successful, returns false otherwise
*/ */
OPJ_API OPJ_BOOL OPJ_CALLCONV opj_encode(opj_codec_t *p_codec, OPJ_API OPJ_BOOL OPJ_CALLCONV opj_encode(opj_codec_t *p_codec,
opj_stream_t *p_stream); opj_stream_t *p_stream);
/* /*
========================================================== ==========================================================
codec output functions definitions codec output functions definitions
========================================================== ==========================================================
*/ */
/* EXPERIMENTAL FUNCTIONS FOR NOW, USED ONLY IN J2K_DUMP*/ /* EXPERIMENTAL FUNCTIONS FOR NOW, USED ONLY IN J2K_DUMP*/
/** /**
Destroy Codestream information after compression or decompression Destroy Codestream information after compression or decompression
@param cstr_info Codestream information structure @param cstr_info Codestream information structure
*/ */
OPJ_API void OPJ_CALLCONV opj_destroy_cstr_info(opj_codestream_info_v2_t ** OPJ_API void OPJ_CALLCONV opj_destroy_cstr_info(opj_codestream_info_v2_t
cstr_info); **cstr_info);
/** /**
* Dump the codec information into the output stream * Dump the codec information into the output stream
* *
* @param p_codec the jpeg2000 codec. * @param p_codec the jpeg2000 codec.
* @param info_flag type of information dump. * @param info_flag type of information dump.
* @param output_stream output stream where dump the informations ge * @param output_stream output stream where dump the information gotten
t from the codec. from the codec.
* *
*/ */
OPJ_API void OPJ_CALLCONV opj_dump_codec( opj_codec_t *p_codec, OPJ_API void OPJ_CALLCONV opj_dump_codec(opj_codec_t *p_codec,
OPJ_INT32 info_flag,
OPJ_INT32 info_flag, FILE* output_stream);
FILE* output_stream);
/** /**
* Get the codestream information from the codec * Get the codestream information from the codec
* *
* @param p_codec the jpeg2000 codec. * @param p_codec the jpeg2000 codec.
* *
* @return a pointer to a codestream in formation structure. * @return a pointer to a codestream information structure .
* *
*/ */
OPJ_API opj_codestream_info_v2_t* OPJ_CALLCONV opj_get_cstr_info(opj_codec_ OPJ_API opj_codestream_info_v2_t* OPJ_CALLCONV opj_get_cstr_info(
t *p_codec); opj_codec_t *p_codec);
/** /**
* Get the codestream index from the codec * Get the codestream index from the codec
* *
* @param p_codec the jpeg2000 codec. * @param p_codec the jpeg2000 codec.
* *
* @return a pointer to a codestream in dex structure. * @return a pointer to a codestream index structure.
* *
*/ */
OPJ_API opj_codestream_index_t * OPJ_CALLCONV opj_get_cstr_index(opj_codec_ OPJ_API opj_codestream_index_t * OPJ_CALLCONV opj_get_cstr_index(
t *p_codec); opj_codec_t *p_codec);
OPJ_API void OPJ_CALLCONV opj_destroy_cstr_index(opj_codestream_index_t **p OPJ_API void OPJ_CALLCONV opj_destroy_cstr_index(opj_codestream_index_t
_cstr_index); **p_cstr_index);
/** /**
* Get the JP2 file information from the codec FIXME * Get the JP2 file information from the codec FIXME
* *
* @param p_codec the jpeg2000 codec. * @param p_codec the jpeg2000 codec.
* *
* @return a pointer to a JP2 metadata structure. * @return a pointer to a JP2 metadata structure.
* *
*/ */
OPJ_API opj_jp2_metadata_t* OPJ_CALLCONV opj_get_jp2_metadata(opj_codec_t * OPJ_API opj_jp2_metadata_t* OPJ_CALLCONV opj_get_jp2_metadata(
p_codec); opj_codec_t *p_codec);
/** /**
* Get the JP2 file index from the codec FIXME * Get the JP2 file index from the codec FIXME
* *
* @param p_codec the jpeg2000 codec. * @param p_codec the jpeg2000 codec.
* *
* @return a pointer to a JP2 index str ucture. * @return a pointer to a JP2 index structure.
* *
*/ */
OPJ_API opj_jp2_index_t* OPJ_CALLCONV opj_get_jp2_index(opj_codec_t *p_code c); OPJ_API opj_jp2_index_t* OPJ_CALLCONV opj_get_jp2_index(opj_codec_t *p_code c);
/* /*
========================================================== ==========================================================
MCT functions MCT functions
========================================================== ==========================================================
*/ */
/** /**
* Sets the MCT matrix to use. * Sets the MCT matrix to use.
* *
* @param parameters the parameters to change. * @param parameters the parameters to change.
* @param pEncodingMatrix the encoding matrix. * @param pEncodingMatrix the encoding matrix.
* @param p_dc_shift the dc shift coefficients to use. * @param p_dc_shift the dc shift coefficients to use.
* @param pNbComp the number of components of the imag * @param pNbComp the number of components of the image.
e.
* *
* @return true if the parameters could be set. * @return true if the parameters could be set.
*/ */
OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_MCT( opj_cparameters_t *parameters, OPJ_API OPJ_BOOL OPJ_CALLCONV opj_set_MCT(opj_cparameters_t *parameters,
OPJ_FLOAT32 * pEncodingMa OPJ_FLOAT32 * pEncodingMatrix,
trix, OPJ_INT32 * p_dc_shift,
OPJ_INT32 * p_dc_shift, OPJ_UINT32 pNbComp);
OPJ_UINT32 pNbComp);
/*
==========================================================
Thread functions
==========================================================
*/
/** Returns if the library is built with thread support.
* OPJ_TRUE if mutex, condition, thread, thread pool are available.
*/
OPJ_API OPJ_BOOL OPJ_CALLCONV opj_has_thread_support(void);
/** Return the number of virtual CPUs */
OPJ_API int OPJ_CALLCONV opj_get_num_cpus(void);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif /* OPENJPEG_H */ #endif /* OPENJPEG_H */
 End of changes. 158 change blocks. 
949 lines changed or deleted 952 lines changed or added


 opj_config.h (2.1.2)   opj_config.h (current) 
/* create opj_config.h for CMake */ /* create opj_config.h for CMake */
#define OPJ_HAVE_STDINT_H 1 #define OPJ_HAVE_STDINT_H 1
/*------------------------------------------------------------------------- -*/ /*------------------------------------------------------------------------- -*/
/* OpenJPEG Versioning */ /* OpenJPEG Versioning */
/* Version number. */ /* Version number. */
#define OPJ_VERSION_MAJOR 2 #define OPJ_VERSION_MAJOR 2
#define OPJ_VERSION_MINOR 1 #define OPJ_VERSION_MINOR 2
#define OPJ_VERSION_BUILD 2 #define OPJ_VERSION_BUILD 0
 End of changes. 1 change blocks. 
0 lines changed or deleted 0 lines changed or added

This html diff was produced by rfcdiff 1.41.The latest version is available from http://tools.ietf.org/tools/rfcdiff/