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