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