00001 /* 00002 * The copyright in this software is being made available under the 2-clauses 00003 * BSD License, included below. This software may be subject to other third 00004 * party and contributor rights, including patent rights, and no such rights 00005 * are granted under this license. 00006 * 00007 * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium 00008 * Copyright (c) 2002-2014, Professor Benoit Macq 00009 * Copyright (c) 2001-2003, David Janssens 00010 * Copyright (c) 2002-2003, Yannick Verschueren 00011 * Copyright (c) 2003-2007, Francois-Olivier Devaux 00012 * Copyright (c) 2003-2014, Antonin Descampe 00013 * Copyright (c) 2005, Herve Drolon, FreeImage Team 00014 * All rights reserved. 00015 * 00016 * Redistribution and use in source and binary forms, with or without 00017 * modification, are permitted provided that the following conditions 00018 * are met: 00019 * 1. Redistributions of source code must retain the above copyright 00020 * notice, this list of conditions and the following disclaimer. 00021 * 2. Redistributions in binary form must reproduce the above copyright 00022 * notice, this list of conditions and the following disclaimer in the 00023 * documentation and/or other materials provided with the distribution. 00024 * 00025 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS' 00026 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00027 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 00028 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 00029 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 00030 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 00031 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 00032 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 00033 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 00034 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 00035 * POSSIBILITY OF SUCH DAMAGE. 00036 */ 00037 00038 #ifndef OPJ_PI_H 00039 #define OPJ_PI_H 00040 00051 00055 typedef struct opj_pi_resolution { 00056 OPJ_UINT32 pdx, pdy; 00057 OPJ_UINT32 pw, ph; 00058 } opj_pi_resolution_t; 00059 00063 typedef struct opj_pi_comp { 00064 OPJ_UINT32 dx, dy; 00066 OPJ_UINT32 numresolutions; 00067 opj_pi_resolution_t *resolutions; 00068 } opj_pi_comp_t; 00069 00073 typedef struct opj_pi_iterator { 00075 OPJ_BYTE tp_on; 00077 OPJ_INT16 *include; 00079 OPJ_UINT32 include_size; 00081 OPJ_UINT32 step_l; 00083 OPJ_UINT32 step_r; 00085 OPJ_UINT32 step_c; 00087 OPJ_UINT32 step_p; 00089 OPJ_UINT32 compno; 00091 OPJ_UINT32 resno; 00093 OPJ_UINT32 precno; 00095 OPJ_UINT32 layno; 00097 OPJ_BOOL first; 00099 opj_poc_t poc; 00101 OPJ_UINT32 numcomps; 00103 opj_pi_comp_t *comps; 00105 OPJ_INT32 tx0, ty0, tx1, ty1; 00107 OPJ_INT32 x, y; 00109 OPJ_UINT32 dx, dy; 00110 } opj_pi_iterator_t; 00111 00114 /* ----------------------------------------------------------------------- */ 00125 opj_pi_iterator_t *opj_pi_initialise_encode(const opj_image_t *image, 00126 opj_cp_t *cp, 00127 OPJ_UINT32 tileno, 00128 J2K_T2_MODE t2_mode); 00129 00137 void opj_pi_update_encoding_parameters(const opj_image_t *p_image, 00138 opj_cp_t *p_cp, 00139 OPJ_UINT32 p_tile_no); 00140 00151 void opj_pi_create_encode(opj_pi_iterator_t *pi, 00152 opj_cp_t *cp, 00153 OPJ_UINT32 tileno, 00154 OPJ_UINT32 pino, 00155 OPJ_UINT32 tpnum, 00156 OPJ_INT32 tppos, 00157 J2K_T2_MODE t2_mode); 00158 00167 opj_pi_iterator_t *opj_pi_create_decode(opj_image_t * image, 00168 opj_cp_t * cp, 00169 OPJ_UINT32 tileno); 00176 void opj_pi_destroy(opj_pi_iterator_t *p_pi, 00177 OPJ_UINT32 p_nb_elements); 00178 00184 OPJ_BOOL opj_pi_next(opj_pi_iterator_t * pi); 00185 /* ----------------------------------------------------------------------- */ 00189 00190 #endif /* OPJ_PI_H */