summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatsuu Takuto <matsuu@gentoo.org>2007-03-26 14:39:16 +0000
committerMatsuu Takuto <matsuu@gentoo.org>2007-03-26 14:39:16 +0000
commitc197d15d7777ccb3e500a24dbfb5364de1c8ffb0 (patch)
tree139504bbfdcb5719a4f7817e875d04baeb1154af
parentInitial import. (diff)
downloadsecondlife-c197d15d7777ccb3e500a24dbfb5364de1c8ffb0.tar.gz
secondlife-c197d15d7777ccb3e500a24dbfb5364de1c8ffb0.tar.bz2
secondlife-c197d15d7777ccb3e500a24dbfb5364de1c8ffb0.zip
Removed dev-libs/ELFIO and media-libs/openjpeg.
svn path=/secondlife/; revision=2
-rw-r--r--dev-libs/ELFIO/ELFIO-1.0.3.ebuild30
-rw-r--r--dev-libs/ELFIO/Manifest8
-rw-r--r--dev-libs/ELFIO/files/digest-ELFIO-1.0.33
-rw-r--r--games-simulation/secondlife/Manifest8
-rw-r--r--games-simulation/secondlife/secondlife-1.13.3.59558.ebuild2
-rw-r--r--media-libs/openjpeg/Manifest20
-rw-r--r--media-libs/openjpeg/files/OPJ_limit_tags_for_decode_UPDATED.patch3765
-rw-r--r--media-libs/openjpeg/files/digest-openjpeg-1.1.13
-rw-r--r--media-libs/openjpeg/files/openjpeg-1.1.1-gentoo.patch20
-rw-r--r--media-libs/openjpeg/openjpeg-1.1.1.ebuild38
10 files changed, 5 insertions, 3892 deletions
diff --git a/dev-libs/ELFIO/ELFIO-1.0.3.ebuild b/dev-libs/ELFIO/ELFIO-1.0.3.ebuild
deleted file mode 100644
index 0edbfeb..0000000
--- a/dev-libs/ELFIO/ELFIO-1.0.3.ebuild
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright 1999-2007 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: $
-
-inherit flag-o-matic toolchain-funcs
-
-DESCRIPTION="ELF (Executable and Linkable Format) reader and producer implemented as a C++ library."
-HOMEPAGE="http://elfio.sourceforge.net/"
-SRC_URI="mirror://sourceforge/elfio/${P}.tar.gz"
-
-LICENSE="LGPL-2.1"
-SLOT="0"
-KEYWORDS="~amd64 ~mips ~sparc ~x86"
-IUSE=""
-
-src_compile() {
- append-flags -fPIC
- econf || die "econf failed"
- emake || die "emake failed"
-
- # for secondlife
- cd ELFIO && $(tc-getCC) -shared *.o -o libelfio.so || die
-}
-
-src_install() {
- emake DESTDIR="${D}" install || die "install failed"
- dolib.so ELFIO/libelfio.so || die
-
- dodoc AUTHORS NEWS README
-}
diff --git a/dev-libs/ELFIO/Manifest b/dev-libs/ELFIO/Manifest
deleted file mode 100644
index d932f83..0000000
--- a/dev-libs/ELFIO/Manifest
+++ /dev/null
@@ -1,8 +0,0 @@
-DIST ELFIO-1.0.3.tar.gz 308560 RMD160 f89212b30df5ede1339aca0f66f4e40b36d083ca SHA1 1339541932653a29ef937210e7ae283d33462ec5 SHA256 e8cdd3895c4f6e5ed2422a2151e7940f9085a1c10d1f0508ed03b1c4860bcada
-EBUILD ELFIO-1.0.3.ebuild 734 RMD160 2acdd641a1d05764cb3a6ce3b4ad1fabc30660db SHA1 470c853548c1e1346a4374e1fbb8a471f5ee74fe SHA256 39d141d7ca1e72440ccf85df3e0cc3fca87ac782eb131f7503a7a8af02a9dcd7
-MD5 6ff7b6fd275efb641cbcd84027aebbf7 ELFIO-1.0.3.ebuild 734
-RMD160 2acdd641a1d05764cb3a6ce3b4ad1fabc30660db ELFIO-1.0.3.ebuild 734
-SHA256 39d141d7ca1e72440ccf85df3e0cc3fca87ac782eb131f7503a7a8af02a9dcd7 ELFIO-1.0.3.ebuild 734
-MD5 596e1cfa4b31cd034210677307e67210 files/digest-ELFIO-1.0.3 235
-RMD160 fd808ad68224b17092591f9aaf4a0f70d33ec942 files/digest-ELFIO-1.0.3 235
-SHA256 cec4da390170d5a59c1c2c3cf4751ea6f10499f2006b92e0809f507767d601f2 files/digest-ELFIO-1.0.3 235
diff --git a/dev-libs/ELFIO/files/digest-ELFIO-1.0.3 b/dev-libs/ELFIO/files/digest-ELFIO-1.0.3
deleted file mode 100644
index 1f72a89..0000000
--- a/dev-libs/ELFIO/files/digest-ELFIO-1.0.3
+++ /dev/null
@@ -1,3 +0,0 @@
-MD5 fd6fca12c7b43f6c01d30b23d22aaefe ELFIO-1.0.3.tar.gz 308560
-RMD160 f89212b30df5ede1339aca0f66f4e40b36d083ca ELFIO-1.0.3.tar.gz 308560
-SHA256 e8cdd3895c4f6e5ed2422a2151e7940f9085a1c10d1f0508ed03b1c4860bcada ELFIO-1.0.3.tar.gz 308560
diff --git a/games-simulation/secondlife/Manifest b/games-simulation/secondlife/Manifest
index 1c58797..ac7632b 100644
--- a/games-simulation/secondlife/Manifest
+++ b/games-simulation/secondlife/Manifest
@@ -16,10 +16,10 @@ RMD160 aefb846e2d92e93fd9ee845f610ea2e39b44b08a files/secondlife-1.13.3.59558-ge
SHA256 dde90f2a3ecb9622bd2f366f82af91e0fe026afd593f1289a9be8095845971d1 files/secondlife-1.13.3.59558-gentoo.patch 8011
DIST slviewer-artwork-FL-1.13.3.59558.zip 20005643 RMD160 bdc64269107054da2176d462f146140ea953e272 SHA1 da987b9201ce44ba72c530e50f0d270fda1c8921 SHA256 0bd2f8c2135184bcab756517c95bc5154e11666014439c56040332d4817b64a0
DIST slviewer-src-FL-1.13.3.59558.tar.gz 9706079 RMD160 2ab28df4625813f629365c193c447915fb37dd1d SHA1 9ea1223291e304a36004ea3912b101228fd368ac SHA256 fc56a90120915d5b229458cf0d158e3cafac14338aa5e4f9f4c2a44c5b168f87
-EBUILD secondlife-1.13.3.59558.ebuild 3593 RMD160 21822f31a0137f1ee4b1c0eebbb338b53b2c7c4a SHA1 13d968252a0cc18448fb54811e5db6c498a5fd4d SHA256 6618a1691be9ca5e49f7b2c622f61871e9406a3840d54b884119e241a710ee10
-MD5 2513541c828dd4289f023c801a43156d secondlife-1.13.3.59558.ebuild 3593
-RMD160 21822f31a0137f1ee4b1c0eebbb338b53b2c7c4a secondlife-1.13.3.59558.ebuild 3593
-SHA256 6618a1691be9ca5e49f7b2c622f61871e9406a3840d54b884119e241a710ee10 secondlife-1.13.3.59558.ebuild 3593
+EBUILD secondlife-1.13.3.59558.ebuild 3593 RMD160 6f3f6a505a9d32ffbb69006b18a27b9e5d1220de SHA1 a36ae4abe73c10b755cdeeb46b3e1ff90843e016 SHA256 05c31ca98dbf3d8a3564353ce3955cd77fc092345ecf95c71c80bd4dc0428237
+MD5 c30810965b99927436aee9ce1c8bbe18 secondlife-1.13.3.59558.ebuild 3593
+RMD160 6f3f6a505a9d32ffbb69006b18a27b9e5d1220de secondlife-1.13.3.59558.ebuild 3593
+SHA256 05c31ca98dbf3d8a3564353ce3955cd77fc092345ecf95c71c80bd4dc0428237 secondlife-1.13.3.59558.ebuild 3593
MD5 5c5223731df04a37b47f37a14572e7c1 files/digest-secondlife-1.13.3.59558 584
RMD160 fa83237fb5a462f2ff8a49664b9a78371c322220 files/digest-secondlife-1.13.3.59558 584
SHA256 2f7dffdd4cecc746870e0ac2a6905b555adc6914aa908f06dc66ba35f74e8878 files/digest-secondlife-1.13.3.59558 584
diff --git a/games-simulation/secondlife/secondlife-1.13.3.59558.ebuild b/games-simulation/secondlife/secondlife-1.13.3.59558.ebuild
index b04af45..4869a95 100644
--- a/games-simulation/secondlife/secondlife-1.13.3.59558.ebuild
+++ b/games-simulation/secondlife/secondlife-1.13.3.59558.ebuild
@@ -35,7 +35,7 @@ RDEPEND=">=x11-libs/gtk+-2
dev-libs/expat
sys-libs/zlib
>=dev-libs/xmlrpc-epi-0.51
- dev-libs/ELFIO
+ dev-libs/elfio
>=media-libs/openjpeg-1.1.1
media-fonts/kochi-substitute"
# xulrunner? ( net-libs/xulrunner )
diff --git a/media-libs/openjpeg/Manifest b/media-libs/openjpeg/Manifest
deleted file mode 100644
index af58122..0000000
--- a/media-libs/openjpeg/Manifest
+++ /dev/null
@@ -1,20 +0,0 @@
-AUX OPJ_limit_tags_for_decode_UPDATED.patch 121951 RMD160 876e9c90ee0a18b3f4f9077e9b7f1b7b6491b3a1 SHA1 d3ad1f7da7e318b1575123e7e7032ef22ea8e362 SHA256 a661e2a121e627522736416844dcba854e532beb7d72015217d0ea6b187c6786
-MD5 8233f9be998cb6ca326ec1aa1a5cf136 files/OPJ_limit_tags_for_decode_UPDATED.patch 121951
-RMD160 876e9c90ee0a18b3f4f9077e9b7f1b7b6491b3a1 files/OPJ_limit_tags_for_decode_UPDATED.patch 121951
-SHA256 a661e2a121e627522736416844dcba854e532beb7d72015217d0ea6b187c6786 files/OPJ_limit_tags_for_decode_UPDATED.patch 121951
-AUX openjpeg-1.1.1-gentoo.patch 595 RMD160 eea4058aae591a8a50a78c06788412ddda978195 SHA1 1139bd57dcea2ecadac6597691ccffa835f5e8de SHA256 1e2677bb0635d06fe8f3a37167bf0bd339fa59e20ee7364793e103631c2e989b
-MD5 8248d3ca7ba44598b52dcfe9626554a0 files/openjpeg-1.1.1-gentoo.patch 595
-RMD160 eea4058aae591a8a50a78c06788412ddda978195 files/openjpeg-1.1.1-gentoo.patch 595
-SHA256 1e2677bb0635d06fe8f3a37167bf0bd339fa59e20ee7364793e103631c2e989b files/openjpeg-1.1.1-gentoo.patch 595
-DIST openjpeg_v1_1_1.tar.gz 1406460 RMD160 08b2318441075a8704d6b9b0ac3d9d277c44d85e SHA1 1de6f9ccebe8844c96416daca521a20a84df23f5 SHA256 6076db131bfaa966a691d718044e5b5cdbec028436be3b7a3f146d1a0e3a7ec6
-EBUILD openjpeg-1.1.1.ebuild 876 RMD160 0839119e8c5b1be4817b283a3bee5b37fb629e4f SHA1 a2459ccbac53254b97878051a5745b2fa10b5b34 SHA256 faabd254957b6a7903c566e85e34daa9de861cd6668a5d01b05bab28abf2da40
-MD5 233ec2c814bae7bc17d2c08cce133ac3 openjpeg-1.1.1.ebuild 876
-RMD160 0839119e8c5b1be4817b283a3bee5b37fb629e4f openjpeg-1.1.1.ebuild 876
-SHA256 faabd254957b6a7903c566e85e34daa9de861cd6668a5d01b05bab28abf2da40 openjpeg-1.1.1.ebuild 876
-MISC .swp 4096 RMD160 654e0e4af7c51347966f4e45088874477c3d8a12 SHA1 30c6d8301b2a1b5c9f568ad859bbde7487ffad46 SHA256 fe70d97bd7e13f5c121b33a9e6fd682dbfaec845b07edb261c661ef8de411206
-MD5 327b5dbac44adeca74794fcf547e3122 .swp 4096
-RMD160 654e0e4af7c51347966f4e45088874477c3d8a12 .swp 4096
-SHA256 fe70d97bd7e13f5c121b33a9e6fd682dbfaec845b07edb261c661ef8de411206 .swp 4096
-MD5 fcdc3157bb74483f5e444836db0580b6 files/digest-openjpeg-1.1.1 250
-RMD160 f90411a7b6c5b72cc42ab7e7c217f554dad5d4f6 files/digest-openjpeg-1.1.1 250
-SHA256 d1a1fb2cc3299dae27b36b9ef21418fa213b29ee2709dcd67a2dd597498e4155 files/digest-openjpeg-1.1.1 250
diff --git a/media-libs/openjpeg/files/OPJ_limit_tags_for_decode_UPDATED.patch b/media-libs/openjpeg/files/OPJ_limit_tags_for_decode_UPDATED.patch
deleted file mode 100644
index be5cd8b..0000000
--- a/media-libs/openjpeg/files/OPJ_limit_tags_for_decode_UPDATED.patch
+++ /dev/null
@@ -1,3765 +0,0 @@
-diff -Naur OpenJPEG/libopenjpeg/j2k.c OpenJPEG-patched/libopenjpeg/j2k.c
---- OpenJPEG/libopenjpeg/j2k.c 2007-02-19 10:59:29.000000000 +0100
-+++ OpenJPEG-patched/libopenjpeg/j2k.c 2007-03-17 14:18:44.000000000 +0100
-@@ -1342,37 +1342,39 @@
- int states;
- /** action linked to the marker */
- void (*handler) (opj_j2k_t *j2k);
-+ /** The enum value used to limit decode to specific tags. */
-+ OPJ_LIMIT_TAGS limit_tag;
- } opj_dec_mstabent_t;
-
- opj_dec_mstabent_t j2k_dec_mstab[] = {
-- {J2K_MS_SOC, J2K_STATE_MHSOC, j2k_read_soc},
-- {J2K_MS_SOT, J2K_STATE_MH | J2K_STATE_TPHSOT, j2k_read_sot},
-- {J2K_MS_SOD, J2K_STATE_TPH, j2k_read_sod},
-- {J2K_MS_EOC, J2K_STATE_TPHSOT, j2k_read_eoc},
-- {J2K_MS_SIZ, J2K_STATE_MHSIZ, j2k_read_siz},
-- {J2K_MS_COD, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_cod},
-- {J2K_MS_COC, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_coc},
-- {J2K_MS_RGN, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_rgn},
-- {J2K_MS_QCD, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_qcd},
-- {J2K_MS_QCC, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_qcc},
-- {J2K_MS_POC, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_poc},
-- {J2K_MS_TLM, J2K_STATE_MH, j2k_read_tlm},
-- {J2K_MS_PLM, J2K_STATE_MH, j2k_read_plm},
-- {J2K_MS_PLT, J2K_STATE_TPH, j2k_read_plt},
-- {J2K_MS_PPM, J2K_STATE_MH, j2k_read_ppm},
-- {J2K_MS_PPT, J2K_STATE_TPH, j2k_read_ppt},
-- {J2K_MS_SOP, 0, 0},
-- {J2K_MS_CRG, J2K_STATE_MH, j2k_read_crg},
-- {J2K_MS_COM, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_com},
-+ {J2K_MS_SOC, J2K_STATE_MHSOC, j2k_read_soc, OPJ_TAG_SOC},
-+ {J2K_MS_SOT, J2K_STATE_MH | J2K_STATE_TPHSOT, j2k_read_sot, OPJ_TAG_SOT},
-+ {J2K_MS_SOD, J2K_STATE_TPH, j2k_read_sod, OPJ_TAG_SOD},
-+ {J2K_MS_EOC, J2K_STATE_TPHSOT, j2k_read_eoc, OPJ_TAG_EOC},
-+ {J2K_MS_SIZ, J2K_STATE_MHSIZ, j2k_read_siz, OPJ_TAG_SIZ},
-+ {J2K_MS_COD, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_cod, OPJ_TAG_COD},
-+ {J2K_MS_COC, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_coc, OPJ_TAG_COC},
-+ {J2K_MS_RGN, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_rgn, OPJ_TAG_RGN},
-+ {J2K_MS_QCD, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_qcd, OPJ_TAG_QCD},
-+ {J2K_MS_QCC, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_qcc, OPJ_TAG_QCC},
-+ {J2K_MS_POC, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_poc, OPJ_TAG_POC},
-+ {J2K_MS_TLM, J2K_STATE_MH, j2k_read_tlm, OPJ_TAG_TLM},
-+ {J2K_MS_PLM, J2K_STATE_MH, j2k_read_plm, OPJ_TAG_PLM},
-+ {J2K_MS_PLT, J2K_STATE_TPH, j2k_read_plt, OPJ_TAG_PLT},
-+ {J2K_MS_PPM, J2K_STATE_MH, j2k_read_ppm, OPJ_TAG_PPM},
-+ {J2K_MS_PPT, J2K_STATE_TPH, j2k_read_ppt, OPJ_TAG_PPT},
-+ {J2K_MS_SOP, 0, 0, OPJ_TAG_SOP},
-+ {J2K_MS_CRG, J2K_STATE_MH, j2k_read_crg, OPJ_TAG_CRG},
-+ {J2K_MS_COM, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_com, OPJ_TAG_COM},
- /* UniPG>> */
- #ifdef USE_JPWL
-- {J2K_MS_EPC, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_epc},
-- {J2K_MS_EPB, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_epb},
-- {J2K_MS_ESD, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_esd},
-- {J2K_MS_RED, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_red},
-+ {J2K_MS_EPC, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_epc, OPJ_TAG_EPC},
-+ {J2K_MS_EPB, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_epb, OPJ_TAG_EPB},
-+ {J2K_MS_ESD, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_esd, OPJ_TAG_ESD},
-+ {J2K_MS_RED, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_red, OPJ_TAG_RED},
- #endif /* USE_JPWL */
- /* <<UniPG */
-- {0, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_unk}
-+ {0, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_unk, -1}
- };
-
- static void j2k_read_unk(opj_j2k_t *j2k) {
-@@ -1689,6 +1691,12 @@
- opj_event_msg(cinfo, EVT_ERROR, "%.8x: unexpected marker %x\n", cio_tell(cio) - 2, id);
- return 0;
- }
-+ /* If a partial decode is requested, stop if the current tag
-+ * isn't in the list.
-+ */
-+ if (j2k->cp->limit_tags && !(j2k->cp->limit_tags & e->limit_tag)) {
-+ return image;
-+ }
- if (e->handler) {
- (*e->handler)(j2k);
- }
-diff -Naur OpenJPEG/libopenjpeg/j2k.c.orig OpenJPEG-patched/libopenjpeg/j2k.c.orig
---- OpenJPEG/libopenjpeg/j2k.c.orig 1970-01-01 01:00:00.000000000 +0100
-+++ OpenJPEG-patched/libopenjpeg/j2k.c.orig 2007-02-19 10:59:29.000000000 +0100
-@@ -0,0 +1,2392 @@
-+/*
-+ * Copyright (c) 2002-2007, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium
-+ * Copyright (c) 2002-2007, Professor Benoit Macq
-+ * Copyright (c) 2001-2003, David Janssens
-+ * Copyright (c) 2002-2003, Yannick Verschueren
-+ * Copyright (c) 2003-2007, Francois-Olivier Devaux and Antonin Descampe
-+ * Copyright (c) 2005, Herve Drolon, FreeImage Team
-+ * All rights reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ * 1. Redistributions of source code must retain the above copyright
-+ * notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ * notice, this list of conditions and the following disclaimer in the
-+ * documentation and/or other materials provided with the distribution.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
-+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-+ * POSSIBILITY OF SUCH DAMAGE.
-+ */
-+
-+#include "opj_includes.h"
-+
-+/** @defgroup J2K J2K - JPEG-2000 codestream reader/writer */
-+/*@{*/
-+
-+/** @name Local static functions */
-+/*@{*/
-+
-+/**
-+Write the SOC marker (Start Of Codestream)
-+@param j2k J2K handle
-+*/
-+static void j2k_write_soc(opj_j2k_t *j2k);
-+/**
-+Read the SOC marker (Start of Codestream)
-+@param j2k J2K handle
-+*/
-+static void j2k_read_soc(opj_j2k_t *j2k);
-+/**
-+Write the SIZ marker (image and tile size)
-+@param j2k J2K handle
-+*/
-+static void j2k_write_siz(opj_j2k_t *j2k);
-+/**
-+Read the SIZ marker (image and tile size)
-+@param j2k J2K handle
-+*/
-+static void j2k_read_siz(opj_j2k_t *j2k);
-+/**
-+Write the COM marker (comment)
-+@param j2k J2K handle
-+*/
-+static void j2k_write_com(opj_j2k_t *j2k);
-+/**
-+Read the COM marker (comment)
-+@param j2k J2K handle
-+*/
-+static void j2k_read_com(opj_j2k_t *j2k);
-+/**
-+Write the value concerning the specified component in the marker COD and COC
-+@param j2k J2K handle
-+@param compno Number of the component concerned by the information written
-+*/
-+static void j2k_write_cox(opj_j2k_t *j2k, int compno);
-+/**
-+Read the value concerning the specified component in the marker COD and COC
-+@param j2k J2K handle
-+@param compno Number of the component concerned by the information read
-+*/
-+static void j2k_read_cox(opj_j2k_t *j2k, int compno);
-+/**
-+Write the COD marker (coding style default)
-+@param j2k J2K handle
-+*/
-+static void j2k_write_cod(opj_j2k_t *j2k);
-+/**
-+Read the COD marker (coding style default)
-+@param j2k J2K handle
-+*/
-+static void j2k_read_cod(opj_j2k_t *j2k);
-+/**
-+Write the COC marker (coding style component)
-+@param j2k J2K handle
-+@param compno Number of the component concerned by the information written
-+*/
-+static void j2k_write_coc(opj_j2k_t *j2k, int compno);
-+/**
-+Read the COC marker (coding style component)
-+@param j2k J2K handle
-+*/
-+static void j2k_read_coc(opj_j2k_t *j2k);
-+/**
-+Write the value concerning the specified component in the marker QCD and QCC
-+@param j2k J2K handle
-+@param compno Number of the component concerned by the information written
-+*/
-+static void j2k_write_qcx(opj_j2k_t *j2k, int compno);
-+/**
-+Read the value concerning the specified component in the marker QCD and QCC
-+@param j2k J2K handle
-+@param compno Number of the component concern by the information read
-+@param len Length of the information in the QCX part of the marker QCD/QCC
-+*/
-+static void j2k_read_qcx(opj_j2k_t *j2k, int compno, int len);
-+/**
-+Write the QCD marker (quantization default)
-+@param j2k J2K handle
-+*/
-+static void j2k_write_qcd(opj_j2k_t *j2k);
-+/**
-+Read the QCD marker (quantization default)
-+@param j2k J2K handle
-+*/
-+static void j2k_read_qcd(opj_j2k_t *j2k);
-+/**
-+Write the QCC marker (quantization component)
-+@param j2k J2K handle
-+@param compno Number of the component concerned by the information written
-+*/
-+static void j2k_write_qcc(opj_j2k_t *j2k, int compno);
-+/**
-+Read the QCC marker (quantization component)
-+@param j2k J2K handle
-+*/
-+static void j2k_read_qcc(opj_j2k_t *j2k);
-+/**
-+Write the POC marker (progression order change)
-+@param j2k J2K handle
-+*/
-+static void j2k_write_poc(opj_j2k_t *j2k);
-+/**
-+Read the POC marker (progression order change)
-+@param j2k J2K handle
-+*/
-+static void j2k_read_poc(opj_j2k_t *j2k);
-+/**
-+Read the CRG marker (component registration)
-+@param j2k J2K handle
-+*/
-+static void j2k_read_crg(opj_j2k_t *j2k);
-+/**
-+Read the TLM marker (tile-part lengths)
-+@param j2k J2K handle
-+*/
-+static void j2k_read_tlm(opj_j2k_t *j2k);
-+/**
-+Read the PLM marker (packet length, main header)
-+@param j2k J2K handle
-+*/
-+static void j2k_read_plm(opj_j2k_t *j2k);
-+/**
-+Read the PLT marker (packet length, tile-part header)
-+@param j2k J2K handle
-+*/
-+static void j2k_read_plt(opj_j2k_t *j2k);
-+/**
-+Read the PPM marker (packet packet headers, main header)
-+@param j2k J2K handle
-+*/
-+static void j2k_read_ppm(opj_j2k_t *j2k);
-+/**
-+Read the PPT marker (packet packet headers, tile-part header)
-+@param j2k J2K handle
-+*/
-+static void j2k_read_ppt(opj_j2k_t *j2k);
-+/**
-+Write the SOT marker (start of tile-part)
-+@param j2k J2K handle
-+*/
-+static void j2k_write_sot(opj_j2k_t *j2k);
-+/**
-+Read the SOT marker (start of tile-part)
-+@param j2k J2K handle
-+*/
-+static void j2k_read_sot(opj_j2k_t *j2k);
-+/**
-+Write the SOD marker (start of data)
-+@param j2k J2K handle
-+@param tile_coder Pointer to a TCD handle
-+*/
-+static void j2k_write_sod(opj_j2k_t *j2k, void *tile_coder);
-+/**
-+Read the SOD marker (start of data)
-+@param j2k J2K handle
-+*/
-+static void j2k_read_sod(opj_j2k_t *j2k);
-+/**
-+Write the RGN marker (region-of-interest)
-+@param j2k J2K handle
-+@param compno Number of the component concerned by the information written
-+@param tileno Number of the tile concerned by the information written
-+*/
-+static void j2k_write_rgn(opj_j2k_t *j2k, int compno, int tileno);
-+/**
-+Read the RGN marker (region-of-interest)
-+@param j2k J2K handle
-+*/
-+static void j2k_read_rgn(opj_j2k_t *j2k);
-+/**
-+Write the EOC marker (end of codestream)
-+@param j2k J2K handle
-+*/
-+static void j2k_write_eoc(opj_j2k_t *j2k);
-+/**
-+Read the EOC marker (end of codestream)
-+@param j2k J2K handle
-+*/
-+static void j2k_read_eoc(opj_j2k_t *j2k);
-+/**
-+Read an unknown marker
-+@param j2k J2K handle
-+*/
-+static void j2k_read_unk(opj_j2k_t *j2k);
-+
-+/*@}*/
-+
-+/*@}*/
-+
-+/* ----------------------------------------------------------------------- */
-+
-+void j2k_dump_image(FILE *fd, opj_image_t * img) {
-+ int compno;
-+ fprintf(fd, "image {\n");
-+ fprintf(fd, " x0=%d, y0=%d, x1=%d, y1=%d\n", img->x0, img->y0, img->x1, img->y1);
-+ fprintf(fd, " numcomps=%d\n", img->numcomps);
-+ for (compno = 0; compno < img->numcomps; compno++) {
-+ opj_image_comp_t *comp = &img->comps[compno];
-+ fprintf(fd, " comp %d {\n", compno);
-+ fprintf(fd, " dx=%d, dy=%d\n", comp->dx, comp->dy);
-+ fprintf(fd, " prec=%d\n", comp->prec);
-+ fprintf(fd, " sgnd=%d\n", comp->sgnd);
-+ fprintf(fd, " }\n");
-+ }
-+ fprintf(fd, "}\n");
-+}
-+
-+void j2k_dump_cp(FILE *fd, opj_image_t * img, opj_cp_t * cp) {
-+ int tileno, compno, layno, bandno, resno, numbands;
-+ fprintf(fd, "coding parameters {\n");
-+ fprintf(fd, " tx0=%d, ty0=%d\n", cp->tx0, cp->ty0);
-+ fprintf(fd, " tdx=%d, tdy=%d\n", cp->tdx, cp->tdy);
-+ fprintf(fd, " tw=%d, th=%d\n", cp->tw, cp->th);
-+ for (tileno = 0; tileno < cp->tw * cp->th; tileno++) {
-+ opj_tcp_t *tcp = &cp->tcps[tileno];
-+ fprintf(fd, " tile %d {\n", tileno);
-+ fprintf(fd, " csty=%x\n", tcp->csty);
-+ fprintf(fd, " prg=%d\n", tcp->prg);
-+ fprintf(fd, " numlayers=%d\n", tcp->numlayers);
-+ fprintf(fd, " mct=%d\n", tcp->mct);
-+ fprintf(fd, " rates=");
-+ for (layno = 0; layno < tcp->numlayers; layno++) {
-+ fprintf(fd, "%.1f ", tcp->rates[layno]);
-+ }
-+ fprintf(fd, "\n");
-+ for (compno = 0; compno < img->numcomps; compno++) {
-+ opj_tccp_t *tccp = &tcp->tccps[compno];
-+ fprintf(fd, " comp %d {\n", compno);
-+ fprintf(fd, " csty=%x\n", tccp->csty);
-+ fprintf(fd, " numresolutions=%d\n", tccp->numresolutions);
-+ fprintf(fd, " cblkw=%d\n", tccp->cblkw);
-+ fprintf(fd, " cblkh=%d\n", tccp->cblkh);
-+ fprintf(fd, " cblksty=%x\n", tccp->cblksty);
-+ fprintf(fd, " qmfbid=%d\n", tccp->qmfbid);
-+ fprintf(fd, " qntsty=%d\n", tccp->qntsty);
-+ fprintf(fd, " numgbits=%d\n", tccp->numgbits);
-+ fprintf(fd, " roishift=%d\n", tccp->roishift);
-+ fprintf(fd, " stepsizes=");
-+ numbands = tccp->qntsty == J2K_CCP_QNTSTY_SIQNT ? 1 : tccp->numresolutions * 3 - 2;
-+ for (bandno = 0; bandno < numbands; bandno++) {
-+ fprintf(fd, "(%d,%d) ", tccp->stepsizes[bandno].mant,
-+ tccp->stepsizes[bandno].expn);
-+ }
-+ fprintf(fd, "\n");
-+
-+ if (tccp->csty & J2K_CCP_CSTY_PRT) {
-+ fprintf(fd, " prcw=");
-+ for (resno = 0; resno < tccp->numresolutions; resno++) {
-+ fprintf(fd, "%d ", tccp->prcw[resno]);
-+ }
-+ fprintf(fd, "\n");
-+ fprintf(fd, " prch=");
-+ for (resno = 0; resno < tccp->numresolutions; resno++) {
-+ fprintf(fd, "%d ", tccp->prch[resno]);
-+ }
-+ fprintf(fd, "\n");
-+ }
-+ fprintf(fd, " }\n");
-+ }
-+ fprintf(fd, " }\n");
-+ }
-+ fprintf(fd, "}\n");
-+}
-+
-+/* ----------------------------------------------------------------------- */
-+
-+static void j2k_write_soc(opj_j2k_t *j2k) {
-+ opj_cio_t *cio = j2k->cio;
-+ cio_write(cio, J2K_MS_SOC, 2);
-+}
-+
-+static void j2k_read_soc(opj_j2k_t *j2k) {
-+ j2k->state = J2K_STATE_MHSIZ;
-+}
-+
-+static void j2k_write_siz(opj_j2k_t *j2k) {
-+ int i;
-+ int lenp, len;
-+
-+ opj_cio_t *cio = j2k->cio;
-+ opj_image_t *image = j2k->image;
-+ opj_cp_t *cp = j2k->cp;
-+
-+ cio_write(cio, J2K_MS_SIZ, 2); /* SIZ */
-+ lenp = cio_tell(cio);
-+ cio_skip(cio, 2);
-+ cio_write(cio, 0, 2); /* Rsiz (capabilities) */
-+ cio_write(cio, image->x1, 4); /* Xsiz */
-+ cio_write(cio, image->y1, 4); /* Ysiz */
-+ cio_write(cio, image->x0, 4); /* X0siz */
-+ cio_write(cio, image->y0, 4); /* Y0siz */
-+ cio_write(cio, cp->tdx, 4); /* XTsiz */
-+ cio_write(cio, cp->tdy, 4); /* YTsiz */
-+ cio_write(cio, cp->tx0, 4); /* XT0siz */
-+ cio_write(cio, cp->ty0, 4); /* YT0siz */
-+ cio_write(cio, image->numcomps, 2); /* Csiz */
-+ for (i = 0; i < image->numcomps; i++) {
-+ cio_write(cio, image->comps[i].prec - 1 + (image->comps[i].sgnd << 7), 1); /* Ssiz_i */
-+ cio_write(cio, image->comps[i].dx, 1); /* XRsiz_i */
-+ cio_write(cio, image->comps[i].dy, 1); /* YRsiz_i */
-+ }
-+ len = cio_tell(cio) - lenp;
-+ cio_seek(cio, lenp);
-+ cio_write(cio, len, 2); /* Lsiz */
-+ cio_seek(cio, lenp + len);
-+}
-+
-+static void j2k_read_siz(opj_j2k_t *j2k) {
-+ int len, i;
-+
-+ opj_cio_t *cio = j2k->cio;
-+ opj_image_t *image = j2k->image;
-+ opj_cp_t *cp = j2k->cp;
-+
-+ len = cio_read(cio, 2); /* Lsiz */
-+ cio_read(cio, 2); /* Rsiz (capabilities) */
-+ image->x1 = cio_read(cio, 4); /* Xsiz */
-+ image->y1 = cio_read(cio, 4); /* Ysiz */
-+ image->x0 = cio_read(cio, 4); /* X0siz */
-+ image->y0 = cio_read(cio, 4); /* Y0siz */
-+ cp->tdx = cio_read(cio, 4); /* XTsiz */
-+ cp->tdy = cio_read(cio, 4); /* YTsiz */
-+ cp->tx0 = cio_read(cio, 4); /* XT0siz */
-+ cp->ty0 = cio_read(cio, 4); /* YT0siz */
-+
-+ image->numcomps = cio_read(cio, 2); /* Csiz */
-+/* UniPG>> */
-+#ifdef USE_JPWL
-+ if (j2k->cp->correct) {
-+ /* if JPWL is on, we check whether TX errors have damaged
-+ too much the SIZ parameters */
-+ if (!(image->x1 * image->y1)) {
-+ opj_event_msg(j2k->cinfo, EVT_ERROR,
-+ "JPWL: bad image size (%d x %d)\n",
-+ image->x1, image->y1);
-+ if (!JPWL_ASSUME || JPWL_ASSUME)
-+ exit(1);
-+ }
-+ if (image->numcomps != ((len - 38) / 3)) {
-+ opj_event_msg(j2k->cinfo, JPWL_ASSUME ? EVT_WARNING : EVT_ERROR,
-+ "JPWL: Csiz is %d => space in SIZ only for %d comps.!!!\n",
-+ image->numcomps, ((len - 38) / 3));
-+ if (!JPWL_ASSUME)
-+ exit(1);
-+ /* we try to correct */
-+ opj_event_msg(j2k->cinfo, EVT_WARNING, "- trying to adjust this\n");
-+ if (image->numcomps < ((len - 38) / 3)) {
-+ len = 38 + 3 * image->numcomps;
-+ opj_event_msg(j2k->cinfo, EVT_WARNING, "- setting Lsiz to %d => HYPOTHESIS!!!\n",
-+ len);
-+ } else {
-+ image->numcomps = ((len - 38) / 3);
-+ opj_event_msg(j2k->cinfo, EVT_WARNING, "- setting Csiz to %d => HYPOTHESIS!!!\n",
-+ image->numcomps);
-+ }
-+ }
-+
-+ /* update components number in the jpwl_exp_comps filed */
-+ cp->exp_comps = image->numcomps;
-+ }
-+#endif /* USE_JPWL */
-+/* <<UniPG */
-+ image->comps = (opj_image_comp_t *) opj_malloc(image->numcomps * sizeof(opj_image_comp_t));
-+ for (i = 0; i < image->numcomps; i++) {
-+ int tmp, w, h;
-+ tmp = cio_read(cio, 1); /* Ssiz_i */
-+ image->comps[i].prec = (tmp & 0x7f) + 1;
-+ image->comps[i].sgnd = tmp >> 7;
-+ image->comps[i].dx = cio_read(cio, 1); /* XRsiz_i */
-+ image->comps[i].dy = cio_read(cio, 1); /* YRsiz_i */
-+
-+/* UniPG>> */
-+#ifdef USE_JPWL
-+ if (j2k->cp->correct) {
-+ /* if JPWL is on, we check whether TX errors have damaged
-+ too much the SIZ parameters, again */
-+ if (!(image->comps[i].dx * image->comps[i].dy)) {
-+ opj_event_msg(j2k->cinfo, JPWL_ASSUME ? EVT_WARNING : EVT_ERROR,
-+ "JPWL: bad XRsiz_%d/YRsiz_%d (%d x %d)\n",
-+ i, i, image->comps[i].dx, image->comps[i].dy);
-+ if (!JPWL_ASSUME)
-+ exit(1);
-+ /* we try to correct */
-+ opj_event_msg(j2k->cinfo, EVT_WARNING, "- trying to adjust them\n");
-+ if (!image->comps[i].dx) {
-+ image->comps[i].dx = 1;
-+ opj_event_msg(j2k->cinfo, EVT_WARNING, "- setting XRsiz_%d to %d => HYPOTHESIS!!!\n",
-+ i, image->comps[i].dx);
-+ }
-+ if (!image->comps[i].dy) {
-+ image->comps[i].dy = 1;
-+ opj_event_msg(j2k->cinfo, EVT_WARNING, "- setting YRsiz_%d to %d => HYPOTHESIS!!!\n",
-+ i, image->comps[i].dy);
-+ }
-+ }
-+
-+ }
-+#endif /* USE_JPWL */
-+/* <<UniPG */
-+
-+
-+ /* TODO: unused ? */
-+ w = int_ceildiv(image->x1 - image->x0, image->comps[i].dx);
-+ h = int_ceildiv(image->y1 - image->y0, image->comps[i].dy);
-+
-+ image->comps[i].resno_decoded = 0; /* number of resolution decoded */
-+ image->comps[i].factor = 0; /* reducing factor per component */
-+ }
-+
-+ cp->tw = int_ceildiv(image->x1 - cp->tx0, cp->tdx);
-+ cp->th = int_ceildiv(image->y1 - cp->ty0, cp->tdy);
-+/* UniPG>> */
-+#ifdef USE_JPWL
-+ if (j2k->cp->correct) {
-+ /* if JPWL is on, we check whether TX errors have damaged
-+ too much the SIZ parameters */
-+ if ((cp->tw < 1) || (cp->th < 1) || (cp->tw > cp->max_tiles) || (cp->th > cp->max_tiles)) {
-+ opj_event_msg(j2k->cinfo, JPWL_ASSUME ? EVT_WARNING : EVT_ERROR,
-+ "JPWL: bad number of tiles (%d x %d)\n",
-+ cp->tw, cp->th);
-+ if (!JPWL_ASSUME)
-+ exit(1);
-+ /* we try to correct */
-+ opj_event_msg(j2k->cinfo, EVT_WARNING, "- trying to adjust them\n");
-+ if (cp->tw < 1) {
-+ cp->tw= 1;
-+ opj_event_msg(j2k->cinfo, EVT_WARNING, "- setting %d tiles in x => HYPOTHESIS!!!\n",
-+ cp->tw);
-+ }
-+ if (cp->tw > cp->max_tiles) {
-+ opj_event_msg(j2k->cinfo, EVT_WARNING, "- too large x, increase expectance of %d\n",
-+ cp->max_tiles);
-+ cp->tw= 1;
-+ opj_event_msg(j2k->cinfo, EVT_WARNING, "- setting %d tiles in x => HYPOTHESIS!!!\n",
-+ cp->tw);
-+ }
-+ if (cp->th < 1) {
-+ cp->th= 1;
-+ opj_event_msg(j2k->cinfo, EVT_WARNING, "- setting %d tiles in y => HYPOTHESIS!!!\n",
-+ cp->th);
-+ }
-+ if (cp->th > cp->max_tiles) {
-+ opj_event_msg(j2k->cinfo, EVT_WARNING, "- too large y, increase expectance of %d to continue\n",
-+ cp->max_tiles);
-+ cp->th= 1;
-+ opj_event_msg(j2k->cinfo, EVT_WARNING, "- setting %d tiles in y => HYPOTHESIS!!!\n",
-+ cp->th);
-+ }
-+ }
-+ }
-+#endif /* USE_JPWL */
-+/* <<UniPG */
-+ cp->tcps = (opj_tcp_t *) opj_malloc(cp->tw * cp->th * sizeof(opj_tcp_t));
-+ cp->tileno = (int *) opj_malloc(cp->tw * cp->th * sizeof(int));
-+ cp->tileno_size = 0;
-+
-+/* UniPG>> */
-+#ifdef USE_JPWL
-+ if (j2k->cp->correct) {
-+ if (!cp->tcps) {
-+ opj_event_msg(j2k->cinfo, JPWL_ASSUME ? EVT_WARNING : EVT_ERROR,
-+ "JPWL: could not alloc tcps field of cp\n");
-+ if (!JPWL_ASSUME || JPWL_ASSUME)
-+ exit(1);
-+ }
-+ }
-+#endif /* USE_JPWL */
-+/* <<UniPG */
-+ for (i = 0; i < cp->tw * cp->th; i++) {
-+ cp->tcps[i].POC = 0;
-+ cp->tcps[i].numpocs = 0;
-+ cp->tcps[i].first = 1;
-+ }
-+
-+ /* Initialization for PPM marker */
-+ cp->ppm = 0;
-+ cp->ppm_data = NULL;
-+ cp->ppm_data_first = NULL;
-+ cp->ppm_previous = 0;
-+ cp->ppm_store = 0;
-+
-+ j2k->default_tcp->tccps = (opj_tccp_t *) opj_malloc(sizeof(opj_tccp_t) * image->numcomps);
-+ for (i = 0; i < cp->tw * cp->th; i++) {
-+ cp->tcps[i].tccps = (opj_tccp_t *) opj_malloc(sizeof(opj_tccp_t) * image->numcomps);
-+ }
-+ j2k->tile_data = (unsigned char **) opj_malloc(cp->tw * cp->th * sizeof(unsigned char *));
-+ j2k->tile_len = (int *) opj_malloc(cp->tw * cp->th * sizeof(int));
-+ j2k->state = J2K_STATE_MH;
-+}
-+
-+static void j2k_write_com(opj_j2k_t *j2k) {
-+ unsigned int i;
-+ int lenp, len;
-+
-+ if(j2k->cp->comment) {
-+ opj_cio_t *cio = j2k->cio;
-+ char *comment = j2k->cp->comment;
-+
-+ cio_write(cio, J2K_MS_COM, 2);
-+ lenp = cio_tell(cio);
-+ cio_skip(cio, 2);
-+ cio_write(cio, 0, 2);
-+ for (i = 0; i < strlen(comment); i++) {
-+ cio_write(cio, comment[i], 1);
-+ }
-+ len = cio_tell(cio) - lenp;
-+ cio_seek(cio, lenp);
-+ cio_write(cio, len, 2);
-+ cio_seek(cio, lenp + len);
-+ }
-+}
-+
-+static void j2k_read_com(opj_j2k_t *j2k) {
-+ int len;
-+
-+ opj_cio_t *cio = j2k->cio;
-+
-+ len = cio_read(cio, 2);
-+ cio_skip(cio, len - 2);
-+}
-+
-+static void j2k_write_cox(opj_j2k_t *j2k, int compno) {
-+ int i;
-+
-+ opj_cp_t *cp = j2k->cp;
-+ opj_tcp_t *tcp = &cp->tcps[j2k->curtileno];
-+ opj_tccp_t *tccp = &tcp->tccps[compno];
-+ opj_cio_t *cio = j2k->cio;
-+
-+ cio_write(cio, tccp->numresolutions - 1, 1); /* SPcox (D) */
-+ cio_write(cio, tccp->cblkw - 2, 1); /* SPcox (E) */
-+ cio_write(cio, tccp->cblkh - 2, 1); /* SPcox (F) */
-+ cio_write(cio, tccp->cblksty, 1); /* SPcox (G) */
-+ cio_write(cio, tccp->qmfbid, 1); /* SPcox (H) */
-+
-+ if (tccp->csty & J2K_CCP_CSTY_PRT) {
-+ for (i = 0; i < tccp->numresolutions; i++) {
-+ cio_write(cio, tccp->prcw[i] + (tccp->prch[i] << 4), 1); /* SPcox (I_i) */
-+ }
-+ }
-+}
-+
-+static void j2k_read_cox(opj_j2k_t *j2k, int compno) {
-+ int i;
-+
-+ opj_cp_t *cp = j2k->cp;
-+ opj_tcp_t *tcp = j2k->state == J2K_STATE_TPH ? &cp->tcps[j2k->curtileno] : j2k->default_tcp;
-+ opj_tccp_t *tccp = &tcp->tccps[compno];
-+ opj_cio_t *cio = j2k->cio;
-+
-+ tccp->numresolutions = cio_read(cio, 1) + 1; /* SPcox (D) */
-+
-+ /* check the reduce value */
-+ cp->reduce = int_min((tccp->numresolutions)-1, cp->reduce);
-+ tccp->cblkw = cio_read(cio, 1) + 2; /* SPcox (E) */
-+ tccp->cblkh = cio_read(cio, 1) + 2; /* SPcox (F) */
-+ tccp->cblksty = cio_read(cio, 1); /* SPcox (G) */
-+ tccp->qmfbid = cio_read(cio, 1); /* SPcox (H) */
-+ if (tccp->csty & J2K_CP_CSTY_PRT) {
-+ for (i = 0; i < tccp->numresolutions; i++) {
-+ int tmp = cio_read(cio, 1); /* SPcox (I_i) */
-+ tccp->prcw[i] = tmp & 0xf;
-+ tccp->prch[i] = tmp >> 4;
-+ }
-+ }
-+}
-+
-+static void j2k_write_cod(opj_j2k_t *j2k) {
-+ opj_cp_t *cp = NULL;
-+ opj_tcp_t *tcp = NULL;
-+ int lenp, len;
-+
-+ opj_cio_t *cio = j2k->cio;
-+
-+ cio_write(cio, J2K_MS_COD, 2); /* COD */
-+
-+ lenp = cio_tell(cio);
-+ cio_skip(cio, 2);
-+
-+ cp = j2k->cp;
-+ tcp = &cp->tcps[j2k->curtileno];
-+
-+ cio_write(cio, tcp->csty, 1); /* Scod */
-+ cio_write(cio, tcp->prg, 1); /* SGcod (A) */
-+ cio_write(cio, tcp->numlayers, 2); /* SGcod (B) */
-+ cio_write(cio, tcp->mct, 1); /* SGcod (C) */
-+
-+ j2k_write_cox(j2k, 0);
-+ len = cio_tell(cio) - lenp;
-+ cio_seek(cio, lenp);
-+ cio_write(cio, len, 2); /* Lcod */
-+ cio_seek(cio, lenp + len);
-+}
-+
-+static void j2k_read_cod(opj_j2k_t *j2k) {
-+ int len, i, pos;
-+
-+ opj_cio_t *cio = j2k->cio;
-+ opj_cp_t *cp = j2k->cp;
-+ opj_tcp_t *tcp = j2k->state == J2K_STATE_TPH ? &cp->tcps[j2k->curtileno] : j2k->default_tcp;
-+ opj_image_t *image = j2k->image;
-+
-+ len = cio_read(cio, 2); /* Lcod */
-+ tcp->csty = cio_read(cio, 1); /* Scod */
-+ tcp->prg = (OPJ_PROG_ORDER)cio_read(cio, 1); /* SGcod (A) */
-+ tcp->numlayers = cio_read(cio, 2); /* SGcod (B) */
-+ tcp->mct = cio_read(cio, 1); /* SGcod (C) */
-+
-+ pos = cio_tell(cio);
-+ for (i = 0; i < image->numcomps; i++) {
-+ tcp->tccps[i].csty = tcp->csty & J2K_CP_CSTY_PRT;
-+ cio_seek(cio, pos);
-+ j2k_read_cox(j2k, i);
-+ }
-+}
-+
-+static void j2k_write_coc(opj_j2k_t *j2k, int compno) {
-+ int lenp, len;
-+
-+ opj_cp_t *cp = j2k->cp;
-+ opj_tcp_t *tcp = &cp->tcps[j2k->curtileno];
-+ opj_image_t *image = j2k->image;
-+ opj_cio_t *cio = j2k->cio;
-+
-+ cio_write(cio, J2K_MS_COC, 2); /* COC */
-+ lenp = cio_tell(cio);
-+ cio_skip(cio, 2);
-+ cio_write(cio, compno, image->numcomps <= 256 ? 1 : 2); /* Ccoc */
-+ cio_write(cio, tcp->tccps[compno].csty, 1); /* Scoc */
-+ j2k_write_cox(j2k, compno);
-+ len = cio_tell(cio) - lenp;
-+ cio_seek(cio, lenp);
-+ cio_write(cio, len, 2); /* Lcoc */
-+ cio_seek(cio, lenp + len);
-+}
-+
-+static void j2k_read_coc(opj_j2k_t *j2k) {
-+ int len, compno;
-+
-+ opj_cp_t *cp = j2k->cp;
-+ opj_tcp_t *tcp = j2k->state == J2K_STATE_TPH ? &cp->tcps[j2k->curtileno] : j2k->default_tcp;
-+ opj_image_t *image = j2k->image;
-+ opj_cio_t *cio = j2k->cio;
-+
-+ len = cio_read(cio, 2); /* Lcoc */
-+ compno = cio_read(cio, image->numcomps <= 256 ? 1 : 2); /* Ccoc */
-+ tcp->tccps[compno].csty = cio_read(cio, 1); /* Scoc */
-+ j2k_read_cox(j2k, compno);
-+}
-+
-+static void j2k_write_qcx(opj_j2k_t *j2k, int compno) {
-+ int bandno, numbands;
-+ int expn, mant;
-+
-+ opj_cp_t *cp = j2k->cp;
-+ opj_tcp_t *tcp = &cp->tcps[j2k->curtileno];
-+ opj_tccp_t *tccp = &tcp->tccps[compno];
-+ opj_cio_t *cio = j2k->cio;
-+
-+ cio_write(cio, tccp->qntsty + (tccp->numgbits << 5), 1); /* Sqcx */
-+ numbands = tccp->qntsty == J2K_CCP_QNTSTY_SIQNT ? 1 : tccp->numresolutions * 3 - 2;
-+
-+ for (bandno = 0; bandno < numbands; bandno++) {
-+ expn = tccp->stepsizes[bandno].expn;
-+ mant = tccp->stepsizes[bandno].mant;
-+
-+ if (tccp->qntsty == J2K_CCP_QNTSTY_NOQNT) {
-+ cio_write(cio, expn << 3, 1); /* SPqcx_i */
-+ } else {
-+ cio_write(cio, (expn << 11) + mant, 2); /* SPqcx_i */
-+ }
-+ }
-+}
-+
-+static void j2k_read_qcx(opj_j2k_t *j2k, int compno, int len) {
-+ int tmp;
-+ int bandno, numbands;
-+
-+ opj_cp_t *cp = j2k->cp;
-+ opj_tcp_t *tcp = j2k->state == J2K_STATE_TPH ? &cp->tcps[j2k->curtileno] : j2k->default_tcp;
-+ opj_tccp_t *tccp = &tcp->tccps[compno];
-+ opj_cio_t *cio = j2k->cio;
-+
-+ tmp = cio_read(cio, 1); /* Sqcx */
-+ tccp->qntsty = tmp & 0x1f;
-+ tccp->numgbits = tmp >> 5;
-+ numbands = (tccp->qntsty == J2K_CCP_QNTSTY_SIQNT) ?
-+ 1 : ((tccp->qntsty == J2K_CCP_QNTSTY_NOQNT) ? len - 1 : (len - 1) / 2);
-+/* UniPG>> */
-+#ifdef USE_JPWL
-+ if (j2k->cp->correct) {
-+
-+ /* if JPWL is on, we check whether there are too many subbands */
-+ if ((numbands < 0) || (numbands >= J2K_MAXBANDS)) {
-+ opj_event_msg(j2k->cinfo, JPWL_ASSUME ? EVT_WARNING : EVT_ERROR,
-+ "JPWL: bad number of subbands in Sqcx (%d)\n",
-+ numbands);
-+ if (!JPWL_ASSUME)
-+ exit(1);
-+ /* we try to correct */
-+ opj_event_msg(j2k->cinfo, EVT_WARNING, "- trying to adjust them\n");
-+ numbands = 1;
-+ opj_event_msg(j2k->cinfo, EVT_WARNING, "- setting number of bands to %d => HYPOTHESIS!!!\n",
-+ numbands);
-+ };
-+
-+ };
-+#endif /* USE_JPWL */
-+/* <<UniPG */
-+ for (bandno = 0; bandno < numbands; bandno++) {
-+ int expn, mant;
-+ if (tccp->qntsty == J2K_CCP_QNTSTY_NOQNT) {
-+ expn = cio_read(cio, 1) >> 3; /* SPqcx_i */
-+ mant = 0;
-+ } else {
-+ tmp = cio_read(cio, 2); /* SPqcx_i */
-+ expn = tmp >> 11;
-+ mant = tmp & 0x7ff;
-+ }
-+ tccp->stepsizes[bandno].expn = expn;
-+ tccp->stepsizes[bandno].mant = mant;
-+ }
-+
-+ /* Add Antonin : if scalar_derived -> compute other stepsizes */
-+ if (tccp->qntsty == J2K_CCP_QNTSTY_SIQNT) {
-+ for (bandno = 1; bandno < J2K_MAXBANDS; bandno++) {
-+ tccp->stepsizes[bandno].expn =
-+ ((tccp->stepsizes[0].expn) - ((bandno - 1) / 3) > 0) ?
-+ (tccp->stepsizes[0].expn) - ((bandno - 1) / 3) : 0;
-+ tccp->stepsizes[bandno].mant = tccp->stepsizes[0].mant;
-+ }
-+ }
-+ /* ddA */
-+}
-+
-+static void j2k_write_qcd(opj_j2k_t *j2k) {
-+ int lenp, len;
-+
-+ opj_cio_t *cio = j2k->cio;
-+
-+ cio_write(cio, J2K_MS_QCD, 2); /* QCD */
-+ lenp = cio_tell(cio);
-+ cio_skip(cio, 2);
-+ j2k_write_qcx(j2k, 0);
-+ len = cio_tell(cio) - lenp;
-+ cio_seek(cio, lenp);
-+ cio_write(cio, len, 2); /* Lqcd */
-+ cio_seek(cio, lenp + len);
-+}
-+
-+static void j2k_read_qcd(opj_j2k_t *j2k) {
-+ int len, i, pos;
-+
-+ opj_cio_t *cio = j2k->cio;
-+ opj_image_t *image = j2k->image;
-+
-+ len = cio_read(cio, 2); /* Lqcd */
-+ pos = cio_tell(cio);
-+ for (i = 0; i < image->numcomps; i++) {
-+ cio_seek(cio, pos);
-+ j2k_read_qcx(j2k, i, len - 2);
-+ }
-+}
-+
-+static void j2k_write_qcc(opj_j2k_t *j2k, int compno) {
-+ int lenp, len;
-+
-+ opj_cio_t *cio = j2k->cio;
-+
-+ cio_write(cio, J2K_MS_QCC, 2); /* QCC */
-+ lenp = cio_tell(cio);
-+ cio_skip(cio, 2);
-+ cio_write(cio, compno, j2k->image->numcomps <= 256 ? 1 : 2); /* Cqcc */
-+ j2k_write_qcx(j2k, compno);
-+ len = cio_tell(cio) - lenp;
-+ cio_seek(cio, lenp);
-+ cio_write(cio, len, 2); /* Lqcc */
-+ cio_seek(cio, lenp + len);
-+}
-+
-+static void j2k_read_qcc(opj_j2k_t *j2k) {
-+ int len, compno;
-+ int numcomp = j2k->image->numcomps;
-+ opj_cio_t *cio = j2k->cio;
-+
-+ len = cio_read(cio, 2); /* Lqcc */
-+ compno = cio_read(cio, numcomp <= 256 ? 1 : 2); /* Cqcc */
-+/* UniPG>> */
-+#ifdef USE_JPWL
-+ if (j2k->cp->correct) {
-+
-+ static int backup_compno = 0;
-+
-+ /* compno is negative or larger than the number of components!!! */
-+ if ((compno < 0) || (compno >= numcomp)) {
-+ opj_event_msg(j2k->cinfo, EVT_ERROR,
-+ "JPWL: bad component number in QCC (%d out of a maximum of %d)\n",
-+ compno, numcomp);
-+ if (!JPWL_ASSUME)
-+ exit(1);
-+ /* we try to correct */
-+ opj_event_msg(j2k->cinfo, EVT_WARNING, "- trying to adjust this\n");
-+ compno = backup_compno % numcomp;
-+ opj_event_msg(j2k->cinfo, EVT_WARNING, "- setting component number to %d\n",
-+ compno);
-+ }
-+
-+ /* keep your private count of tiles */
-+ backup_compno++;
-+ };
-+#endif /* USE_JPWL */
-+/* <<UniPG */
-+ j2k_read_qcx(j2k, compno, len - 2 - (numcomp <= 256 ? 1 : 2));
-+}
-+
-+static void j2k_write_poc(opj_j2k_t *j2k) {
-+ int len, numpchgs, i;
-+
-+ int numcomps = j2k->image->numcomps;
-+
-+ opj_cp_t *cp = j2k->cp;
-+ opj_tcp_t *tcp = &cp->tcps[j2k->curtileno];
-+ opj_tccp_t *tccp = &tcp->tccps[0];
-+ opj_cio_t *cio = j2k->cio;
-+
-+ numpchgs = tcp->numpocs;
-+ cio_write(cio, J2K_MS_POC, 2); /* POC */
-+ len = 2 + (5 + 2 * (numcomps <= 256 ? 1 : 2)) * numpchgs;
-+ cio_write(cio, len, 2); /* Lpoc */
-+ for (i = 0; i < numpchgs; i++) {
-+ opj_poc_t *poc = &tcp->pocs[i];
-+ cio_write(cio, poc->resno0, 1); /* RSpoc_i */
-+ cio_write(cio, poc->compno0, (numcomps <= 256 ? 1 : 2)); /* CSpoc_i */
-+ cio_write(cio, poc->layno1, 2); /* LYEpoc_i */
-+ poc->layno1 = int_min(poc->layno1, tcp->numlayers);
-+ cio_write(cio, poc->resno1, 1); /* REpoc_i */
-+ poc->resno1 = int_min(poc->resno1, tccp->numresolutions);
-+ cio_write(cio, poc->compno1, (numcomps <= 256 ? 1 : 2)); /* CEpoc_i */
-+ poc->compno1 = int_min(poc->compno1, numcomps);
-+ cio_write(cio, poc->prg, 1); /* Ppoc_i */
-+ }
-+}
-+
-+static void j2k_read_poc(opj_j2k_t *j2k) {
-+ int len, numpchgs, i, old_poc;
-+
-+ int numcomps = j2k->image->numcomps;
-+
-+ opj_cp_t *cp = j2k->cp;
-+ opj_tcp_t *tcp = j2k->state == J2K_STATE_TPH ? &cp->tcps[j2k->curtileno] : j2k->default_tcp;
-+ opj_tccp_t *tccp = &tcp->tccps[0];
-+ opj_cio_t *cio = j2k->cio;
-+
-+ old_poc = tcp->POC ? tcp->numpocs + 1 : 0;
-+ tcp->POC = 1;
-+ len = cio_read(cio, 2); /* Lpoc */
-+ numpchgs = (len - 2) / (5 + 2 * (numcomps <= 256 ? 1 : 2));
-+
-+ for (i = old_poc; i < numpchgs + old_poc; i++) {
-+ opj_poc_t *poc;
-+ poc = &tcp->pocs[i];
-+ poc->resno0 = cio_read(cio, 1); /* RSpoc_i */
-+ poc->compno0 = cio_read(cio, numcomps <= 256 ? 1 : 2); /* CSpoc_i */
-+ poc->layno1 = int_min(cio_read(cio, 2), (unsigned int) tcp->numlayers); /* LYEpoc_i */
-+ poc->resno1 = int_min(cio_read(cio, 1), (unsigned int) tccp->numresolutions); /* REpoc_i */
-+ poc->compno1 = int_min(
-+ cio_read(cio, numcomps <= 256 ? 1 : 2), (unsigned int) numcomps); /* CEpoc_i */
-+ poc->prg = (OPJ_PROG_ORDER)cio_read(cio, 1); /* Ppoc_i */
-+ }
-+
-+ tcp->numpocs = numpchgs + old_poc - 1;
-+}
-+
-+static void j2k_read_crg(opj_j2k_t *j2k) {
-+ int len, i, Xcrg_i, Ycrg_i;
-+
-+ opj_cio_t *cio = j2k->cio;
-+ int numcomps = j2k->image->numcomps;
-+
-+ len = cio_read(cio, 2); /* Lcrg */
-+ for (i = 0; i < numcomps; i++) {
-+ Xcrg_i = cio_read(cio, 2); /* Xcrg_i */
-+ Ycrg_i = cio_read(cio, 2); /* Ycrg_i */
-+ }
-+}
-+
-+static void j2k_read_tlm(opj_j2k_t *j2k) {
-+ int len, Ztlm, Stlm, ST, SP, tile_tlm, i;
-+ long int Ttlm_i, Ptlm_i;
-+
-+ opj_cio_t *cio = j2k->cio;
-+
-+ len = cio_read(cio, 2); /* Ltlm */
-+ Ztlm = cio_read(cio, 1); /* Ztlm */
-+ Stlm = cio_read(cio, 1); /* Stlm */
-+ ST = ((Stlm >> 4) & 0x01) + ((Stlm >> 4) & 0x02);
-+ SP = (Stlm >> 6) & 0x01;
-+ tile_tlm = (len - 4) / ((SP + 1) * 2 + ST);
-+ for (i = 0; i < tile_tlm; i++) {
-+ Ttlm_i = cio_read(cio, ST); /* Ttlm_i */
-+ Ptlm_i = cio_read(cio, SP ? 4 : 2); /* Ptlm_i */
-+ }
-+}
-+
-+static void j2k_read_plm(opj_j2k_t *j2k) {
-+ int len, i, Zplm, Nplm, add, packet_len = 0;
-+
-+ opj_cio_t *cio = j2k->cio;
-+
-+ len = cio_read(cio, 2); /* Lplm */
-+ Zplm = cio_read(cio, 1); /* Zplm */
-+ len -= 3;
-+ while (len > 0) {
-+ Nplm = cio_read(cio, 4); /* Nplm */
-+ len -= 4;
-+ for (i = Nplm; i > 0; i--) {
-+ add = cio_read(cio, 1);
-+ len--;
-+ packet_len = (packet_len << 7) + add; /* Iplm_ij */
-+ if ((add & 0x80) == 0) {
-+ /* New packet */
-+ packet_len = 0;
-+ }
-+ if (len <= 0)
-+ break;
-+ }
-+ }
-+}
-+
-+static void j2k_read_plt(opj_j2k_t *j2k) {
-+ int len, i, Zplt, packet_len = 0, add;
-+
-+ opj_cio_t *cio = j2k->cio;
-+
-+ len = cio_read(cio, 2); /* Lplt */
-+ Zplt = cio_read(cio, 1); /* Zplt */
-+ for (i = len - 3; i > 0; i--) {
-+ add = cio_read(cio, 1);
-+ packet_len = (packet_len << 7) + add; /* Iplt_i */
-+ if ((add & 0x80) == 0) {
-+ /* New packet */
-+ packet_len = 0;
-+ }
-+ }
-+}
-+
-+static void j2k_read_ppm(opj_j2k_t *j2k) {
-+ int len, Z_ppm, i, j;
-+ int N_ppm;
-+
-+ opj_cp_t *cp = j2k->cp;
-+ opj_cio_t *cio = j2k->cio;
-+
-+ len = cio_read(cio, 2);
-+ cp->ppm = 1;
-+
-+ Z_ppm = cio_read(cio, 1); /* Z_ppm */
-+ len -= 3;
-+ while (len > 0) {
-+ if (cp->ppm_previous == 0) {
-+ N_ppm = cio_read(cio, 4); /* N_ppm */
-+ len -= 4;
-+ } else {
-+ N_ppm = cp->ppm_previous;
-+ }
-+ j = cp->ppm_store;
-+ if (Z_ppm == 0) { /* First PPM marker */
-+ cp->ppm_data = (unsigned char *) opj_malloc(N_ppm * sizeof(unsigned char));
-+ cp->ppm_data_first = cp->ppm_data;
-+ cp->ppm_len = N_ppm;
-+ } else { /* NON-first PPM marker */
-+ cp->ppm_data = (unsigned char *) opj_realloc(cp->ppm_data, (N_ppm + cp->ppm_store) * sizeof(unsigned char));
-+/* UniPG>> */
-+#ifdef USE_JPWL
-+ /* this memory allocation check could be done even in non-JPWL cases */
-+ if (cp->correct) {
-+ if (!cp->ppm_data) {
-+ opj_event_msg(j2k->cinfo, EVT_ERROR,
-+ "JPWL: failed memory allocation during PPM marker parsing (pos. %x)\n",
-+ cio_tell(cio));
-+ if (!JPWL_ASSUME || JPWL_ASSUME)
-+ exit(1);
-+ }
-+ }
-+#endif
-+/* <<UniPG */
-+ cp->ppm_data_first = cp->ppm_data;
-+ cp->ppm_len = N_ppm + cp->ppm_store;
-+ }
-+ for (i = N_ppm; i > 0; i--) { /* Read packet header */
-+ cp->ppm_data[j] = cio_read(cio, 1);
-+ j++;
-+ len--;
-+ if (len == 0)
-+ break; /* Case of non-finished packet header in present marker but finished in next one */
-+ }
-+ cp->ppm_previous = i - 1;
-+ cp->ppm_store = j;
-+ }
-+}
-+
-+static void j2k_read_ppt(opj_j2k_t *j2k) {
-+ int len, Z_ppt, i, j = 0;
-+
-+ opj_cp_t *cp = j2k->cp;
-+ opj_tcp_t *tcp = cp->tcps + j2k->curtileno;
-+ opj_cio_t *cio = j2k->cio;
-+
-+ len = cio_read(cio, 2);
-+ Z_ppt = cio_read(cio, 1);
-+ tcp->ppt = 1;
-+ if (Z_ppt == 0) { /* First PPT marker */
-+ tcp->ppt_data = (unsigned char *) opj_malloc((len - 3) * sizeof(unsigned char));
-+ tcp->ppt_data_first = tcp->ppt_data;
-+ tcp->ppt_store = 0;
-+ tcp->ppt_len = len - 3;
-+ } else { /* NON-first PPT marker */
-+ tcp->ppt_data = (unsigned char *) opj_realloc(tcp->ppt_data, (len - 3 + tcp->ppt_store) * sizeof(unsigned char));
-+ tcp->ppt_data_first = tcp->ppt_data;
-+ tcp->ppt_len = len - 3 + tcp->ppt_store;
-+ }
-+ j = tcp->ppt_store;
-+ for (i = len - 3; i > 0; i--) {
-+ tcp->ppt_data[j] = cio_read(cio, 1);
-+ j++;
-+ }
-+ tcp->ppt_store = j;
-+}
-+
-+static void j2k_write_sot(opj_j2k_t *j2k) {
-+ int lenp, len;
-+
-+ opj_cio_t *cio = j2k->cio;
-+
-+ j2k->sot_start = cio_tell(cio);
-+ cio_write(cio, J2K_MS_SOT, 2); /* SOT */
-+ lenp = cio_tell(cio);
-+ cio_skip(cio, 2); /* Lsot (further) */
-+ cio_write(cio, j2k->curtileno, 2); /* Isot */
-+ cio_skip(cio, 4); /* Psot (further in j2k_write_sod) */
-+ cio_write(cio, 0, 1); /* TPsot */
-+ cio_write(cio, 1, 1); /* TNsot */
-+ len = cio_tell(cio) - lenp;
-+ cio_seek(cio, lenp);
-+ cio_write(cio, len, 2); /* Lsot */
-+ cio_seek(cio, lenp + len);
-+}
-+
-+static void j2k_read_sot(opj_j2k_t *j2k) {
-+ int len, tileno, totlen, partno, numparts, i;
-+ opj_tcp_t *tcp = NULL;
-+ char status = 0;
-+
-+ opj_cp_t *cp = j2k->cp;
-+ opj_cio_t *cio = j2k->cio;
-+
-+ len = cio_read(cio, 2);
-+ tileno = cio_read(cio, 2);
-+/* UniPG>> */
-+#ifdef USE_JPWL
-+ if (j2k->cp->correct) {
-+
-+ static int backup_tileno = 0;
-+
-+ /* tileno is negative or larger than the number of tiles!!! */
-+ if ((tileno < 0) || (tileno > (cp->tw * cp->th))) {
-+ opj_event_msg(j2k->cinfo, EVT_ERROR,
-+ "JPWL: bad tile number (%d out of a maximum of %d)\n",
-+ tileno, (cp->tw * cp->th));
-+ if (!JPWL_ASSUME)
-+ exit(1);
-+ /* we try to correct */
-+ opj_event_msg(j2k->cinfo, EVT_WARNING, "- trying to adjust this\n");
-+ tileno = backup_tileno;
-+ opj_event_msg(j2k->cinfo, EVT_WARNING, "- setting tile number to %d\n",
-+ tileno);
-+ }
-+
-+ /* keep your private count of tiles */
-+ backup_tileno++;
-+ };
-+#endif /* USE_JPWL */
-+/* <<UniPG */
-+
-+ if (cp->tileno_size == 0) {
-+ cp->tileno[cp->tileno_size] = tileno;
-+ cp->tileno_size++;
-+ } else {
-+ i = 0;
-+ while (i < cp->tileno_size && status == 0) {
-+ status = cp->tileno[i] == tileno ? 1 : 0;
-+ i++;
-+ }
-+ if (status == 0) {
-+ cp->tileno[cp->tileno_size] = tileno;
-+ cp->tileno_size++;
-+ }
-+ }
-+
-+ totlen = cio_read(cio, 4);
-+/* UniPG>> */
-+#ifdef USE_JPWL
-+ if (j2k->cp->correct) {
-+
-+ /* totlen is negative or larger than the bytes left!!! */
-+ if ((totlen < 0) || (totlen > (cio_numbytesleft(cio) + 8))) {
-+ opj_event_msg(j2k->cinfo, EVT_ERROR,
-+ "JPWL: bad tile byte size (%d bytes against %d bytes left)\n",
-+ totlen, cio_numbytesleft(cio) + 8);
-+ if (!JPWL_ASSUME)
-+ exit(1);
-+ /* we try to correct */
-+ opj_event_msg(j2k->cinfo, EVT_WARNING, "- trying to adjust this\n");
-+ totlen = 0;
-+ opj_event_msg(j2k->cinfo, EVT_WARNING, "- setting Psot to %d => "
-+ "assuming it is the last tile\n",
-+ totlen);
-+ }
-+
-+ };
-+#endif /* USE_JPWL */
-+/* <<UniPG */
-+ if (!totlen)
-+ totlen = cio_numbytesleft(cio) + 8;
-+
-+ partno = cio_read(cio, 1);
-+ numparts = cio_read(cio, 1);
-+
-+ j2k->curtileno = tileno;
-+ j2k->eot = cio_getbp(cio) - 12 + totlen;
-+ j2k->state = J2K_STATE_TPH;
-+ tcp = &cp->tcps[j2k->curtileno];
-+
-+ if (tcp->first == 1) {
-+
-+ /* Initialization PPT */
-+ opj_tccp_t *tmp = tcp->tccps;
-+ memcpy(tcp, j2k->default_tcp, sizeof(opj_tcp_t));
-+ tcp->ppt = 0;
-+ tcp->ppt_data = NULL;
-+ tcp->ppt_data_first = NULL;
-+ tcp->tccps = tmp;
-+
-+ for (i = 0; i < j2k->image->numcomps; i++) {
-+ tcp->tccps[i] = j2k->default_tcp->tccps[i];
-+ }
-+ cp->tcps[j2k->curtileno].first = 0;
-+ }
-+}
-+
-+static void j2k_write_sod(opj_j2k_t *j2k, void *tile_coder) {
-+ int l, layno;
-+ int totlen;
-+ opj_tcp_t *tcp = NULL;
-+ opj_image_info_t *image_info = NULL;
-+
-+ opj_tcd_t *tcd = (opj_tcd_t*)tile_coder; /* cast is needed because of conflicts in header inclusions */
-+ opj_cp_t *cp = j2k->cp;
-+ opj_cio_t *cio = j2k->cio;
-+
-+ cio_write(cio, J2K_MS_SOD, 2);
-+ if (j2k->curtileno == 0) {
-+ j2k->sod_start = cio_tell(cio) + j2k->pos_correction;
-+ }
-+
-+ /* INDEX >> */
-+ image_info = j2k->image_info;
-+ if (image_info && image_info->index_on) {
-+ image_info->tile[j2k->curtileno].end_header = cio_tell(cio) + j2k->pos_correction - 1;
-+ }
-+ /* << INDEX */
-+
-+ tcp = &cp->tcps[j2k->curtileno];
-+ for (layno = 0; layno < tcp->numlayers; layno++) {
-+ tcp->rates[layno] -= tcp->rates[layno] ? (j2k->sod_start / (cp->th * cp->tw)) : 0;
-+ }
-+ if(image_info) {
-+ image_info->num = 0;
-+ }
-+
-+ l = tcd_encode_tile(tcd, j2k->curtileno, cio_getbp(cio), cio_numbytesleft(cio) - 2, image_info);
-+
-+ /* Writing Psot in SOT marker */
-+ totlen = cio_tell(cio) + l - j2k->sot_start;
-+ cio_seek(cio, j2k->sot_start + 6);
-+ cio_write(cio, totlen, 4);
-+ cio_seek(cio, j2k->sot_start + totlen);
-+}
-+
-+static void j2k_read_sod(opj_j2k_t *j2k) {
-+ int len, truncate = 0, i;
-+ unsigned char *data = NULL, *data_ptr = NULL;
-+
-+ opj_cio_t *cio = j2k->cio;
-+ int curtileno = j2k->curtileno;
-+
-+ len = int_min(j2k->eot - cio_getbp(cio), cio_numbytesleft(cio) + 1);
-+
-+ if (len == cio_numbytesleft(cio) + 1) {
-+ truncate = 1; /* Case of a truncate codestream */
-+ }
-+
-+ data = (unsigned char *) opj_malloc((j2k->tile_len[curtileno] + len) * sizeof(unsigned char));
-+
-+ for (i = 0; i < j2k->tile_len[curtileno]; i++) {
-+ data[i] = j2k->tile_data[curtileno][i];
-+ }
-+
-+ data_ptr = data + j2k->tile_len[curtileno];
-+ for (i = 0; i < len; i++) {
-+ data_ptr[i] = cio_read(cio, 1);
-+ }
-+
-+ j2k->tile_len[curtileno] += len;
-+ opj_free(j2k->tile_data[curtileno]);
-+ j2k->tile_data[curtileno] = data;
-+
-+ if (!truncate) {
-+ j2k->state = J2K_STATE_TPHSOT;
-+ } else {
-+ j2k->state = J2K_STATE_NEOC; /* RAJOUTE !! */
-+ }
-+}
-+
-+static void j2k_write_rgn(opj_j2k_t *j2k, int compno, int tileno) {
-+
-+ opj_cp_t *cp = j2k->cp;
-+ opj_tcp_t *tcp = &cp->tcps[tileno];
-+ opj_cio_t *cio = j2k->cio;
-+ int numcomps = j2k->image->numcomps;
-+
-+ cio_write(cio, J2K_MS_RGN, 2); /* RGN */
-+ cio_write(cio, numcomps <= 256 ? 5 : 6, 2); /* Lrgn */
-+ cio_write(cio, compno, numcomps <= 256 ? 1 : 2); /* Crgn */
-+ cio_write(cio, 0, 1); /* Srgn */
-+ cio_write(cio, tcp->tccps[compno].roishift, 1); /* SPrgn */
-+}
-+
-+static void j2k_read_rgn(opj_j2k_t *j2k) {
-+ int len, compno, roisty;
-+
-+ opj_cp_t *cp = j2k->cp;
-+ opj_tcp_t *tcp = j2k->state == J2K_STATE_TPH ? &cp->tcps[j2k->curtileno] : j2k->default_tcp;
-+ opj_cio_t *cio = j2k->cio;
-+ int numcomps = j2k->image->numcomps;
-+
-+ len = cio_read(cio, 2); /* Lrgn */
-+ compno = cio_read(cio, numcomps <= 256 ? 1 : 2); /* Crgn */
-+ roisty = cio_read(cio, 1); /* Srgn */
-+/* UniPG>> */
-+#ifdef USE_JPWL
-+ if (j2k->cp->correct) {
-+ /* totlen is negative or larger than the bytes left!!! */
-+ if (compno >= numcomps) {
-+ opj_event_msg(j2k->cinfo, EVT_ERROR,
-+ "JPWL: bad component number in RGN (%d when there are only %d)\n",
-+ compno, numcomps);
-+ if (!JPWL_ASSUME || JPWL_ASSUME)
-+ exit(1);
-+ }
-+ };
-+#endif /* USE_JPWL */
-+/* <<UniPG */
-+ tcp->tccps[compno].roishift = cio_read(cio, 1); /* SPrgn */
-+}
-+
-+static void j2k_write_eoc(opj_j2k_t *j2k) {
-+ opj_cio_t *cio = j2k->cio;
-+ /* opj_event_msg(j2k->cinfo, "%.8x: EOC\n", cio_tell(cio) + j2k->pos_correction); */
-+ cio_write(cio, J2K_MS_EOC, 2);
-+}
-+
-+static void j2k_read_eoc(opj_j2k_t *j2k) {
-+ int i, tileno;
-+
-+#ifndef NO_PACKETS_DECODING
-+ opj_tcd_t *tcd = tcd_create(j2k->cinfo);
-+ tcd_malloc_decode(tcd, j2k->image, j2k->cp);
-+ for (i = 0; i < j2k->cp->tileno_size; i++) {
-+ tileno = j2k->cp->tileno[i];
-+ tcd_decode_tile(tcd, j2k->tile_data[tileno], j2k->tile_len[tileno], tileno);
-+ opj_free(j2k->tile_data[tileno]);
-+ j2k->tile_data[tileno] = NULL;
-+ }
-+ tcd_free_decode(tcd);
-+ tcd_destroy(tcd);
-+#else
-+ for (i = 0; i < j2k->cp->tileno_size; i++) {
-+ tileno = j2k->cp->tileno[i];
-+ opj_free(j2k->tile_data[tileno]);
-+ j2k->tile_data[tileno] = NULL;
-+ }
-+#endif
-+
-+ j2k->state = J2K_STATE_MT;
-+}
-+
-+typedef struct opj_dec_mstabent {
-+ /** marker value */
-+ int id;
-+ /** value of the state when the marker can appear */
-+ int states;
-+ /** action linked to the marker */
-+ void (*handler) (opj_j2k_t *j2k);
-+} opj_dec_mstabent_t;
-+
-+opj_dec_mstabent_t j2k_dec_mstab[] = {
-+ {J2K_MS_SOC, J2K_STATE_MHSOC, j2k_read_soc},
-+ {J2K_MS_SOT, J2K_STATE_MH | J2K_STATE_TPHSOT, j2k_read_sot},
-+ {J2K_MS_SOD, J2K_STATE_TPH, j2k_read_sod},
-+ {J2K_MS_EOC, J2K_STATE_TPHSOT, j2k_read_eoc},
-+ {J2K_MS_SIZ, J2K_STATE_MHSIZ, j2k_read_siz},
-+ {J2K_MS_COD, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_cod},
-+ {J2K_MS_COC, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_coc},
-+ {J2K_MS_RGN, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_rgn},
-+ {J2K_MS_QCD, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_qcd},
-+ {J2K_MS_QCC, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_qcc},
-+ {J2K_MS_POC, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_poc},
-+ {J2K_MS_TLM, J2K_STATE_MH, j2k_read_tlm},
-+ {J2K_MS_PLM, J2K_STATE_MH, j2k_read_plm},
-+ {J2K_MS_PLT, J2K_STATE_TPH, j2k_read_plt},
-+ {J2K_MS_PPM, J2K_STATE_MH, j2k_read_ppm},
-+ {J2K_MS_PPT, J2K_STATE_TPH, j2k_read_ppt},
-+ {J2K_MS_SOP, 0, 0},
-+ {J2K_MS_CRG, J2K_STATE_MH, j2k_read_crg},
-+ {J2K_MS_COM, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_com},
-+/* UniPG>> */
-+#ifdef USE_JPWL
-+ {J2K_MS_EPC, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_epc},
-+ {J2K_MS_EPB, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_epb},
-+ {J2K_MS_ESD, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_esd},
-+ {J2K_MS_RED, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_red},
-+#endif /* USE_JPWL */
-+/* <<UniPG */
-+ {0, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_unk}
-+};
-+
-+static void j2k_read_unk(opj_j2k_t *j2k) {
-+ opj_event_msg(j2k->cinfo, EVT_WARNING, "Unknown marker\n");
-+/* UniPG>> */
-+#ifdef USE_JPWL
-+ if (j2k->cp->correct) {
-+ int m = 0, id, i;
-+ int min_id = 0, min_dist = 17, cur_dist = 0, tmp_id;
-+ cio_seek(j2k->cio, cio_tell(j2k->cio) - 2);
-+ id = cio_read(j2k->cio, 2);
-+ opj_event_msg(j2k->cinfo, EVT_ERROR,
-+ "JPWL: really don't know this marker %x\n",
-+ id);
-+ if (!JPWL_ASSUME) {
-+ opj_event_msg(j2k->cinfo, EVT_ERROR,
-+ "- possible synch loss due to uncorrectable channel errors => Exiting\n");
-+ exit(1);
-+ }
-+ /* OK, activate this at your own risk!!! */
-+ /* we look for the marker at the minimum hamming distance from this */
-+ while (j2k_dec_mstab[m].id) {
-+
-+ /* 1's where they differ */
-+ tmp_id = j2k_dec_mstab[m].id ^ id;
-+
-+ /* compute the hamming distance between our id and the current */
-+ cur_dist = 0;
-+ for (i = 0; i < 16; i++) {
-+ if ((tmp_id >> i) & 0x0001) {
-+ cur_dist++;
-+ }
-+ }
-+
-+ /* if current distance is smaller, set the minimum */
-+ if (cur_dist < min_dist) {
-+ min_dist = cur_dist;
-+ min_id = j2k_dec_mstab[m].id;
-+ }
-+
-+ /* jump to the next marker */
-+ m++;
-+ }
-+
-+ /* do we substitute the marker? */
-+ if (min_dist < JPWL_MAXIMUM_HAMMING) {
-+ opj_event_msg(j2k->cinfo, EVT_ERROR,
-+ "- marker %x is at distance %d from the read %x\n",
-+ min_id, min_dist, id);
-+ opj_event_msg(j2k->cinfo, EVT_ERROR,
-+ "- trying to substitute in place and crossing fingers!\n");
-+ cio_seek(j2k->cio, cio_tell(j2k->cio) - 2);
-+ cio_write(j2k->cio, min_id, 2);
-+
-+ /* rewind */
-+ cio_seek(j2k->cio, cio_tell(j2k->cio) - 2);
-+
-+ }
-+
-+ };
-+#endif /* USE_JPWL */
-+/* <<UniPG */
-+}
-+
-+/**
-+Read the lookup table containing all the marker, status and action
-+@param id Marker value
-+*/
-+static opj_dec_mstabent_t *j2k_dec_mstab_lookup(int id) {
-+ opj_dec_mstabent_t *e;
-+ for (e = j2k_dec_mstab; e->id != 0; e++) {
-+ if (e->id == id) {
-+ break;
-+ }
-+ }
-+ return e;
-+}
-+
-+/* ----------------------------------------------------------------------- */
-+/* J2K / JPT decoder interface */
-+/* ----------------------------------------------------------------------- */
-+
-+opj_j2k_t* j2k_create_decompress(opj_common_ptr cinfo) {
-+ opj_j2k_t *j2k = (opj_j2k_t*)opj_malloc(sizeof(opj_j2k_t));
-+ if(j2k) {
-+ j2k->cinfo = cinfo;
-+ j2k->default_tcp = (opj_tcp_t*)opj_malloc(sizeof(opj_tcp_t));
-+ if(!j2k->default_tcp) {
-+ opj_free(j2k);
-+ return NULL;
-+ }
-+ }
-+ return j2k;
-+}
-+
-+void j2k_destroy_decompress(opj_j2k_t *j2k) {
-+ int i = 0;
-+
-+ if(j2k->tile_len != NULL) {
-+ opj_free(j2k->tile_len);
-+ }
-+ if(j2k->tile_data != NULL) {
-+ opj_free(j2k->tile_data);
-+ }
-+ if(j2k->default_tcp != NULL) {
-+ opj_tcp_t *default_tcp = j2k->default_tcp;
-+ if(default_tcp->ppt_data_first != NULL) {
-+ opj_free(default_tcp->ppt_data_first);
-+ }
-+ if(j2k->default_tcp->tccps != NULL) {
-+ opj_free(j2k->default_tcp->tccps);
-+ }
-+ opj_free(j2k->default_tcp);
-+ }
-+ if(j2k->cp != NULL) {
-+ opj_cp_t *cp = j2k->cp;
-+ if(cp->tcps != NULL) {
-+ for(i = 0; i < cp->tw * cp->th; i++) {
-+ if(cp->tcps[i].ppt_data_first != NULL) {
-+ opj_free(cp->tcps[i].ppt_data_first);
-+ }
-+ if(cp->tcps[i].tccps != NULL) {
-+ opj_free(cp->tcps[i].tccps);
-+ }
-+ }
-+ opj_free(cp->tcps);
-+ }
-+ if(cp->ppm_data_first != NULL) {
-+ opj_free(cp->ppm_data_first);
-+ }
-+ if(cp->tileno != NULL) {
-+ opj_free(cp->tileno);
-+ }
-+ if(cp->comment != NULL) {
-+ opj_free(cp->comment);
-+ }
-+
-+ opj_free(cp);
-+ }
-+
-+ opj_free(j2k);
-+}
-+
-+void j2k_setup_decoder(opj_j2k_t *j2k, opj_dparameters_t *parameters) {
-+ if(j2k && parameters) {
-+ /* create and initialize the coding parameters structure */
-+ opj_cp_t *cp = (opj_cp_t*)opj_malloc(sizeof(opj_cp_t));
-+ cp->reduce = parameters->cp_reduce;
-+ cp->layer = parameters->cp_layer;
-+ cp->limit_decoding = parameters->cp_limit_decoding;
-+/* UniPG>> */
-+#ifdef USE_JPWL
-+ cp->correct = parameters->jpwl_correct;
-+ cp->exp_comps = parameters->jpwl_exp_comps;
-+ cp->max_tiles = parameters->jpwl_max_tiles;
-+#endif /* USE_JPWL */
-+/* <<UniPG */
-+
-+ /* keep a link to cp so that we can destroy it later in j2k_destroy_decompress */
-+ j2k->cp = cp;
-+ }
-+}
-+
-+opj_image_t* j2k_decode(opj_j2k_t *j2k, opj_cio_t *cio) {
-+ opj_image_t *image = NULL;
-+
-+ opj_common_ptr cinfo = j2k->cinfo;
-+
-+ j2k->cio = cio;
-+
-+ /* create an empty image */
-+ image = opj_image_create0();
-+ j2k->image = image;
-+
-+ j2k->state = J2K_STATE_MHSOC;
-+
-+ for (;;) {
-+ opj_dec_mstabent_t *e;
-+ int id = cio_read(cio, 2);
-+
-+/* UniPG>> */
-+#ifdef USE_JPWL
-+ /* we try to honor JPWL correction power */
-+ if (j2k->cp->correct) {
-+
-+ int orig_pos = cio_tell(cio);
-+ bool status;
-+
-+ /* call the corrector */
-+ status = jpwl_correct(j2k);
-+
-+ /* go back to where you were */
-+ cio_seek(cio, orig_pos - 2);
-+
-+ /* re-read the marker */
-+ id = cio_read(cio, 2);
-+
-+ /* check whether it begins with ff */
-+ if (id >> 8 != 0xff) {
-+ opj_event_msg(j2k->cinfo, EVT_ERROR,
-+ "JPWL: possible bad marker %x at %d\n",
-+ id, cio_tell(cio) - 2);
-+ if (!JPWL_ASSUME)
-+ exit(1);
-+ /* we try to correct */
-+ opj_event_msg(j2k->cinfo, EVT_WARNING, "- trying to adjust this\n");
-+ id = id | 0xff00;
-+ cio_seek(cio, cio_tell(cio) - 2);
-+ cio_write(cio, id, 2);
-+ opj_event_msg(j2k->cinfo, EVT_WARNING, "- setting marker to %x\n",
-+ id);
-+ }
-+
-+ }
-+#endif /* USE_JPWL */
-+/* <<UniPG */
-+ if (id >> 8 != 0xff) {
-+ opj_image_destroy(image);
-+ opj_event_msg(cinfo, EVT_ERROR, "%.8x: expected a marker instead of %x\n", cio_tell(cio) - 2, id);
-+ return 0;
-+ }
-+ e = j2k_dec_mstab_lookup(id);
-+ // Check if the marker is known
-+ if (!(j2k->state & e->states)) {
-+ opj_image_destroy(image);
-+ opj_event_msg(cinfo, EVT_ERROR, "%.8x: unexpected marker %x\n", cio_tell(cio) - 2, id);
-+ return 0;
-+ }
-+ // Check if the decoding is limited to the main header
-+ if (e->id == J2K_MS_SOT && j2k->cp->limit_decoding == LIMIT_TO_MAIN_HEADER) {
-+ opj_event_msg(cinfo, EVT_INFO, "Main Header decoded.\n");
-+ return image;
-+ }
-+
-+ if (e->handler) {
-+ (*e->handler)(j2k);
-+ }
-+ if (j2k->state == J2K_STATE_MT) {
-+ break;
-+ }
-+ if (j2k->state == J2K_STATE_NEOC) {
-+ break;
-+ }
-+ }
-+ if (j2k->state == J2K_STATE_NEOC) {
-+ j2k_read_eoc(j2k);
-+ }
-+
-+ if (j2k->state != J2K_STATE_MT) {
-+ opj_event_msg(cinfo, EVT_WARNING, "Incomplete bitstream\n");
-+ }
-+
-+ return image;
-+}
-+
-+/*
-+* Read a JPT-stream and decode file
-+*
-+*/
-+opj_image_t* j2k_decode_jpt_stream(opj_j2k_t *j2k, opj_cio_t *cio) {
-+ opj_image_t *image = NULL;
-+ opj_jpt_msg_header_t header;
-+ int position;
-+
-+ opj_common_ptr cinfo = j2k->cinfo;
-+
-+ j2k->cio = cio;
-+
-+ /* create an empty image */
-+ image = opj_image_create0();
-+
-+ j2k->state = J2K_STATE_MHSOC;
-+
-+ /* Initialize the header */
-+ jpt_init_msg_header(&header);
-+ /* Read the first header of the message */
-+ jpt_read_msg_header(cinfo, cio, &header);
-+
-+ position = cio_tell(cio);
-+ if (header.Class_Id != 6) { /* 6 : Main header data-bin message */
-+ opj_image_destroy(image);
-+ opj_event_msg(cinfo, EVT_ERROR, "[JPT-stream] : Expecting Main header first [class_Id %d] !\n", header.Class_Id);
-+ return 0;
-+ }
-+
-+ for (;;) {
-+ opj_dec_mstabent_t *e = NULL;
-+ int id;
-+
-+ if (!cio_numbytesleft(cio)) {
-+ j2k_read_eoc(j2k);
-+ return image;
-+ }
-+ /* data-bin read -> need to read a new header */
-+ if ((unsigned int) (cio_tell(cio) - position) == header.Msg_length) {
-+ jpt_read_msg_header(cinfo, cio, &header);
-+ position = cio_tell(cio);
-+ if (header.Class_Id != 4) { /* 4 : Tile data-bin message */
-+ opj_image_destroy(image);
-+ opj_event_msg(cinfo, EVT_ERROR, "[JPT-stream] : Expecting Tile info !\n");
-+ return 0;
-+ }
-+ }
-+
-+ id = cio_read(cio, 2);
-+ if (id >> 8 != 0xff) {
-+ opj_image_destroy(image);
-+ opj_event_msg(cinfo, EVT_ERROR, "%.8x: expected a marker instead of %x\n", cio_tell(cio) - 2, id);
-+ return 0;
-+ }
-+ e = j2k_dec_mstab_lookup(id);
-+ if (!(j2k->state & e->states)) {
-+ opj_image_destroy(image);
-+ opj_event_msg(cinfo, EVT_ERROR, "%.8x: unexpected marker %x\n", cio_tell(cio) - 2, id);
-+ return 0;
-+ }
-+ if (e->handler) {
-+ (*e->handler)(j2k);
-+ }
-+ if (j2k->state == J2K_STATE_MT) {
-+ break;
-+ }
-+ if (j2k->state == J2K_STATE_NEOC) {
-+ break;
-+ }
-+ }
-+ if (j2k->state == J2K_STATE_NEOC) {
-+ j2k_read_eoc(j2k);
-+ }
-+
-+ if (j2k->state != J2K_STATE_MT) {
-+ opj_event_msg(cinfo, EVT_WARNING, "Incomplete bitstream\n");
-+ }
-+
-+ return image;
-+}
-+
-+/* ----------------------------------------------------------------------- */
-+/* J2K encoder interface */
-+/* ----------------------------------------------------------------------- */
-+
-+opj_j2k_t* j2k_create_compress(opj_common_ptr cinfo) {
-+ opj_j2k_t *j2k = (opj_j2k_t*)opj_malloc(sizeof(opj_j2k_t));
-+ if(j2k) {
-+ j2k->cinfo = cinfo;
-+ }
-+ return j2k;
-+}
-+
-+void j2k_destroy_compress(opj_j2k_t *j2k) {
-+ int tileno;
-+
-+ if(!j2k) return;
-+
-+ if(j2k->image_info != NULL) {
-+ opj_image_info_t *image_info = j2k->image_info;
-+ if (image_info->index_on && j2k->cp) {
-+ opj_cp_t *cp = j2k->cp;
-+ for (tileno = 0; tileno < cp->tw * cp->th; tileno++) {
-+ opj_tile_info_t *tile_info = &image_info->tile[tileno];
-+ opj_free(tile_info->thresh);
-+ opj_free(tile_info->packet);
-+ }
-+ opj_free(image_info->tile);
-+ }
-+ opj_free(image_info);
-+ }
-+ if(j2k->cp != NULL) {
-+ opj_cp_t *cp = j2k->cp;
-+
-+ if(cp->comment) {
-+ opj_free(cp->comment);
-+ }
-+ if(cp->matrice) {
-+ opj_free(cp->matrice);
-+ }
-+ for (tileno = 0; tileno < cp->tw * cp->th; tileno++) {
-+ opj_free(cp->tcps[tileno].tccps);
-+ }
-+ opj_free(cp->tcps);
-+ opj_free(cp);
-+ }
-+
-+ opj_free(j2k);
-+}
-+
-+void j2k_setup_encoder(opj_j2k_t *j2k, opj_cparameters_t *parameters, opj_image_t *image) {
-+ int i, j, tileno, numpocs_tile;
-+ opj_cp_t *cp = NULL;
-+
-+ if(!j2k || !parameters || ! image) {
-+ return;
-+ }
-+
-+ /* create and initialize the coding parameters structure */
-+ cp = (opj_cp_t*)opj_malloc(sizeof(opj_cp_t));
-+
-+ /* keep a link to cp so that we can destroy it later in j2k_destroy_compress */
-+ j2k->cp = cp;
-+
-+ /* set default values for cp */
-+ cp->tw = 1;
-+ cp->th = 1;
-+
-+ /*
-+ copy user encoding parameters
-+ */
-+
-+ cp->disto_alloc = parameters->cp_disto_alloc;
-+ cp->fixed_alloc = parameters->cp_fixed_alloc;
-+ cp->fixed_quality = parameters->cp_fixed_quality;
-+
-+ /* mod fixed_quality */
-+ if(parameters->cp_matrice) {
-+ size_t array_size = parameters->tcp_numlayers * parameters->numresolution * 3 * sizeof(int);
-+ cp->matrice = (int *) opj_malloc(array_size);
-+ memcpy(cp->matrice, parameters->cp_matrice, array_size);
-+ }
-+
-+ /* creation of an index file ? */
-+ cp->index_on = parameters->index_on;
-+ if(cp->index_on) {
-+ j2k->image_info = (opj_image_info_t*)opj_malloc(sizeof(opj_image_info_t));
-+ }
-+
-+ /* tiles */
-+ cp->tdx = parameters->cp_tdx;
-+ cp->tdy = parameters->cp_tdy;
-+
-+ /* tile offset */
-+ cp->tx0 = parameters->cp_tx0;
-+ cp->ty0 = parameters->cp_ty0;
-+
-+ /* comment string */
-+ if(parameters->cp_comment) {
-+ cp->comment = (char*)opj_malloc(strlen(parameters->cp_comment) + 1);
-+ if(cp->comment) {
-+ strcpy(cp->comment, parameters->cp_comment);
-+ }
-+ }
-+
-+ /*
-+ calculate other encoding parameters
-+ */
-+
-+ if (parameters->tile_size_on) {
-+ cp->tw = int_ceildiv(image->x1 - cp->tx0, cp->tdx);
-+ cp->th = int_ceildiv(image->y1 - cp->ty0, cp->tdy);
-+ } else {
-+ cp->tdx = image->x1 - cp->tx0;
-+ cp->tdy = image->y1 - cp->ty0;
-+ }
-+
-+/* UniPG>> */
-+#ifdef USE_JPWL
-+ /*
-+ calculate JPWL encoding parameters
-+ */
-+
-+ if (parameters->jpwl_epc_on) {
-+ int i;
-+
-+ /* set JPWL on */
-+ cp->epc_on = true;
-+ cp->info_on = false; /* no informative technique */
-+
-+ /* set EPB on */
-+ if ((parameters->jpwl_hprot_MH > 0) || (parameters->jpwl_hprot_TPH[0] > 0)) {
-+ cp->epb_on = true;
-+
-+ cp->hprot_MH = parameters->jpwl_hprot_MH;
-+ for (i = 0; i < JPWL_MAX_NO_TILESPECS; i++) {
-+ cp->hprot_TPH_tileno[i] = parameters->jpwl_hprot_TPH_tileno[i];
-+ cp->hprot_TPH[i] = parameters->jpwl_hprot_TPH[i];
-+ }
-+ /* if tile specs are not specified, copy MH specs */
-+ if (cp->hprot_TPH[0] == -1) {
-+ cp->hprot_TPH_tileno[0] = 0;
-+ cp->hprot_TPH[0] = parameters->jpwl_hprot_MH;
-+ }
-+ for (i = 0; i < JPWL_MAX_NO_PACKSPECS; i++) {
-+ cp->pprot_tileno[i] = parameters->jpwl_pprot_tileno[i];
-+ cp->pprot_packno[i] = parameters->jpwl_pprot_packno[i];
-+ cp->pprot[i] = parameters->jpwl_pprot[i];
-+ }
-+ }
-+
-+ /* set ESD writing */
-+ if ((parameters->jpwl_sens_size == 1) || (parameters->jpwl_sens_size == 2)) {
-+ cp->esd_on = true;
-+
-+ cp->sens_size = parameters->jpwl_sens_size;
-+ cp->sens_addr = parameters->jpwl_sens_addr;
-+ cp->sens_range = parameters->jpwl_sens_range;
-+
-+ cp->sens_MH = parameters->jpwl_sens_MH;
-+ for (i = 0; i < JPWL_MAX_NO_TILESPECS; i++) {
-+ cp->sens_TPH_tileno[i] = parameters->jpwl_sens_TPH_tileno[i];
-+ cp->sens_TPH[i] = parameters->jpwl_sens_TPH[i];
-+ }
-+ }
-+
-+ /* always set RED writing to false: we are at the encoder */
-+ cp->red_on = false;
-+
-+ } else {
-+ cp->epc_on = false;
-+ }
-+#endif /* USE_JPWL */
-+/* <<UniPG */
-+
-+ /* initialize the mutiple tiles */
-+ /* ---------------------------- */
-+ cp->tcps = (opj_tcp_t *) opj_malloc(cp->tw * cp->th * sizeof(opj_tcp_t));
-+
-+ for (tileno = 0; tileno < cp->tw * cp->th; tileno++) {
-+ opj_tcp_t *tcp = &cp->tcps[tileno];
-+ tcp->numlayers = parameters->tcp_numlayers;
-+ for (j = 0; j < tcp->numlayers; j++) {
-+ if (cp->fixed_quality) { /* add fixed_quality */
-+ tcp->distoratio[j] = parameters->tcp_distoratio[j];
-+ } else {
-+ tcp->rates[j] = parameters->tcp_rates[j];
-+ }
-+ }
-+ tcp->csty = parameters->csty;
-+ tcp->prg = parameters->prog_order;
-+ tcp->mct = image->numcomps == 3 ? 1 : 0;
-+
-+ numpocs_tile = 0;
-+ tcp->POC = 0;
-+ if (parameters->numpocs) {
-+ /* initialisation of POC */
-+ tcp->POC = 1;
-+ for (i = 0; i < parameters->numpocs; i++) {
-+ if((tileno == parameters->POC[i].tile - 1) || (parameters->POC[i].tile == -1)) {
-+ opj_poc_t *tcp_poc = &tcp->pocs[numpocs_tile];
-+ tcp_poc->resno0 = parameters->POC[numpocs_tile].resno0;
-+ tcp_poc->compno0 = parameters->POC[numpocs_tile].compno0;
-+ tcp_poc->layno1 = parameters->POC[numpocs_tile].layno1;
-+ tcp_poc->resno1 = parameters->POC[numpocs_tile].resno1;
-+ tcp_poc->compno1 = parameters->POC[numpocs_tile].compno1;
-+ tcp_poc->prg = parameters->POC[numpocs_tile].prg;
-+ tcp_poc->tile = parameters->POC[numpocs_tile].tile;
-+ numpocs_tile++;
-+ }
-+ }
-+ }
-+ tcp->numpocs = numpocs_tile;
-+
-+ tcp->tccps = (opj_tccp_t *) opj_malloc(image->numcomps * sizeof(opj_tccp_t));
-+
-+ for (i = 0; i < image->numcomps; i++) {
-+ opj_tccp_t *tccp = &tcp->tccps[i];
-+ tccp->csty = parameters->csty & 0x01; /* 0 => one precinct || 1 => custom precinct */
-+ tccp->numresolutions = parameters->numresolution;
-+ tccp->cblkw = int_floorlog2(parameters->cblockw_init);
-+ tccp->cblkh = int_floorlog2(parameters->cblockh_init);
-+ tccp->cblksty = parameters->mode;
-+ tccp->qmfbid = parameters->irreversible ? 0 : 1;
-+ tccp->qntsty = parameters->irreversible ? J2K_CCP_QNTSTY_SEQNT : J2K_CCP_QNTSTY_NOQNT;
-+ tccp->numgbits = 2;
-+ if (i == parameters->roi_compno) {
-+ tccp->roishift = parameters->roi_shift;
-+ } else {
-+ tccp->roishift = 0;
-+ }
-+ if (parameters->csty & J2K_CCP_CSTY_PRT) {
-+ int p = 0;
-+ for (j = tccp->numresolutions - 1; j >= 0; j--) {
-+ if (p < parameters->res_spec) {
-+ if (parameters->prcw_init[p] < 1) {
-+ tccp->prcw[j] = 1;
-+ } else {
-+ tccp->prcw[j] = int_floorlog2(parameters->prcw_init[p]);
-+ }
-+ if (parameters->prch_init[p] < 1) {
-+ tccp->prch[j] = 1;
-+ } else {
-+ tccp->prch[j] = int_floorlog2(parameters->prch_init[p]);
-+ }
-+ } else {
-+ int res_spec = parameters->res_spec;
-+ int size_prcw = parameters->prcw_init[res_spec - 1] >> (p - (res_spec - 1));
-+ int size_prch = parameters->prch_init[res_spec - 1] >> (p - (res_spec - 1));
-+ if (size_prcw < 1) {
-+ tccp->prcw[j] = 1;
-+ } else {
-+ tccp->prcw[j] = int_floorlog2(size_prcw);
-+ }
-+ if (size_prch < 1) {
-+ tccp->prch[j] = 1;
-+ } else {
-+ tccp->prch[j] = int_floorlog2(size_prch);
-+ }
-+ }
-+ p++;
-+ /*printf("\nsize precinct for level %d : %d,%d\n", j,tccp->prcw[j], tccp->prch[j]); */
-+ }
-+ } else {
-+ for (j = 0; j < tccp->numresolutions; j++) {
-+ tccp->prcw[j] = 15;
-+ tccp->prch[j] = 15;
-+ }
-+ }
-+
-+ dwt_calc_explicit_stepsizes(tccp, image->comps[i].prec);
-+ }
-+ }
-+}
-+
-+/**
-+Create an index file
-+@param j2k
-+@param cio
-+@param image_info
-+@param index Index filename
-+@return Returns 1 if successful, returns 0 otherwise
-+*/
-+static int j2k_create_index(opj_j2k_t *j2k, opj_cio_t *cio, opj_image_info_t *image_info, char *index) {
-+ int tileno, compno, layno, resno, precno, pack_nb, x, y;
-+ FILE *stream = NULL;
-+ double total_disto = 0;
-+
-+ image_info->codestream_size = cio_tell(cio) + j2k->pos_correction; /* Correction 14/4/03 suite rmq de Patrick */
-+
-+/* UniPG>> */
-+#ifdef USE_JPWL
-+ /* if JPWL is enabled and the name coincides with our own set
-+ then discard the creation of the file: this was just done to
-+ enable indexing, we do not want an index file
-+ */
-+ if (j2k->cp->epc_on && !strcmp(index, JPWL_PRIVATEINDEX_NAME))
-+ return 1;
-+#endif /* USE_JPWL */
-+/* <<UniPG */
-+
-+ stream = fopen(index, "w");
-+ if (!stream) {
-+ opj_event_msg(j2k->cinfo, EVT_ERROR, "failed to open %s for writing\n", index);
-+ return 0;
-+ }
-+
-+ fprintf(stream, "%d %d\n", image_info->image_w, image_info->image_h);
-+ fprintf(stream, "%d\n", image_info->prog);
-+ fprintf(stream, "%d %d\n", image_info->tile_x, image_info->tile_y);
-+ fprintf(stream, "%d %d\n", image_info->tw, image_info->th);
-+ fprintf(stream, "%d\n", image_info->comp);
-+ fprintf(stream, "%d\n", image_info->layer);
-+ fprintf(stream, "%d\n", image_info->decomposition);
-+
-+ for (resno = image_info->decomposition; resno >= 0; resno--) {
-+ fprintf(stream, "[%d,%d] ",
-+ (1 << image_info->tile[0].pdx[resno]), (1 << image_info->tile[0].pdx[resno])); /* based on tile 0 */
-+ }
-+ fprintf(stream, "\n");
-+ fprintf(stream, "%d\n", image_info->main_head_end);
-+ fprintf(stream, "%d\n", image_info->codestream_size);
-+
-+ for (tileno = 0; tileno < image_info->tw * image_info->th; tileno++) {
-+ fprintf(stream, "%4d %9d %9d %9d %9e %9d %9e\n",
-+ image_info->tile[tileno].num_tile,
-+ image_info->tile[tileno].start_pos,
-+ image_info->tile[tileno].end_header,
-+ image_info->tile[tileno].end_pos,
-+ image_info->tile[tileno].distotile, image_info->tile[tileno].nbpix,
-+ image_info->tile[tileno].distotile / image_info->tile[tileno].nbpix);
-+ }
-+
-+ for (tileno = 0; tileno < image_info->tw * image_info->th; tileno++) {
-+ int start_pos, end_pos;
-+ double disto = 0;
-+ pack_nb = 0;
-+
-+ /*
-+ fprintf(stream, "pkno tileno layerno resno compno precno start_pos end_pos deltaSE \n");
-+ */
-+
-+ if (image_info->prog == LRCP) { /* LRCP */
-+ /*
-+ fprintf(stream, "pack_nb tileno layno resno compno precno start_pos end_pos disto");
-+ */
-+ for (layno = 0; layno < image_info->layer; layno++) {
-+ for (resno = 0; resno < image_info->decomposition + 1; resno++) {
-+ for (compno = 0; compno < image_info->comp; compno++) {
-+ int prec_max = image_info->tile[tileno].pw[resno] * image_info->tile[tileno].ph[resno];
-+ for (precno = 0; precno < prec_max; precno++) {
-+ start_pos = image_info->tile[tileno].packet[pack_nb].start_pos;
-+ end_pos = image_info->tile[tileno].packet[pack_nb].end_pos;
-+ disto = image_info->tile[tileno].packet[pack_nb].disto;
-+ fprintf(stream, "%4d %6d %7d %5d %6d %6d %9d %9d %8e\n",
-+ pack_nb, tileno, layno, resno, compno, precno, start_pos, end_pos, disto);
-+ total_disto += disto;
-+ pack_nb++;
-+ }
-+ }
-+ }
-+ }
-+ } /* LRCP */
-+ else if (image_info->prog == RLCP) { /* RLCP */
-+ /*
-+ fprintf(stream, "pack_nb tileno resno layno compno precno start_pos end_pos disto");
-+ */
-+ for (resno = 0; resno < image_info->decomposition + 1; resno++) {
-+ for (layno = 0; layno < image_info->layer; layno++) {
-+ for (compno = 0; compno < image_info->comp; compno++) {
-+ int prec_max = image_info->tile[tileno].pw[resno] * image_info->tile[tileno].ph[resno];
-+ for (precno = 0; precno < prec_max; precno++) {
-+ start_pos = image_info->tile[tileno].packet[pack_nb].start_pos;
-+ end_pos = image_info->tile[tileno].packet[pack_nb].end_pos;
-+ disto = image_info->tile[tileno].packet[pack_nb].disto;
-+ fprintf(stream, "%4d %6d %5d %7d %6d %6d %9d %9d %8e\n",
-+ pack_nb, tileno, resno, layno, compno, precno, start_pos, end_pos, disto);
-+ total_disto += disto;
-+ pack_nb++;
-+ }
-+ }
-+ }
-+ }
-+ } /* RLCP */
-+ else if (image_info->prog == RPCL) { /* RPCL */
-+ /*
-+ fprintf(stream, "\npack_nb tileno resno precno compno layno start_pos end_pos disto\n");
-+ */
-+ for (resno = 0; resno < image_info->decomposition + 1; resno++) {
-+ /* I suppose components have same XRsiz, YRsiz */
-+ int x0 = image_info->tile_Ox + tileno - (int)floor( (float)tileno/(float)image_info->tw ) * image_info->tw * image_info->tile_x;
-+ int y0 = image_info->tile_Ox + (int)floor( (float)tileno/(float)image_info->tw ) * image_info->tile_y;
-+ int x1 = x0 + image_info->tile_x;
-+ int y1 = y0 + image_info->tile_y;
-+ for(y = y0; y < y1; y++) {
-+ for(x = x0; x < x1; x++) {
-+ for (compno = 0; compno < image_info->comp; compno++) {
-+ int prec_max = image_info->tile[tileno].pw[resno] * image_info->tile[tileno].ph[resno];
-+ for (precno = 0; precno < prec_max; precno++) {
-+ int pcnx = image_info->tile[tileno].pw[resno];
-+ int pcx = (int) pow( 2, image_info->tile[tileno].pdx[resno] + image_info->decomposition - resno );
-+ int pcy = (int) pow( 2, image_info->tile[tileno].pdy[resno] + image_info->decomposition - resno );
-+ int precno_x = precno - (int) floor( (float)precno/(float)pcnx ) * pcnx;
-+ int precno_y = (int) floor( (float)precno/(float)pcnx );
-+ if (precno_y*pcy == y ) {
-+ if (precno_x*pcx == x ) {
-+ for (layno = 0; layno < image_info->layer; layno++) {
-+ start_pos = image_info->tile[tileno].packet[pack_nb].start_pos;
-+ end_pos = image_info->tile[tileno].packet[pack_nb].end_pos;
-+ disto = image_info->tile[tileno].packet[pack_nb].disto;
-+ fprintf(stream, "%4d %6d %5d %6d %6d %7d %9d %9d %8e\n",
-+ pack_nb, tileno, resno, precno, compno, layno, start_pos, end_pos, disto);
-+ total_disto += disto;
-+ pack_nb++;
-+ }
-+ }
-+ }
-+ } /* precno */
-+ } /* compno */
-+ } /* x = x0..x1 */
-+ } /* y = y0..y1 */
-+ } /* resno */
-+ } /* RPCL */
-+ else if (image_info->prog == PCRL) { /* PCRL */
-+ /* I suppose components have same XRsiz, YRsiz */
-+ int x0 = image_info->tile_Ox + tileno - (int)floor( (float)tileno/(float)image_info->tw ) * image_info->tw * image_info->tile_x;
-+ int y0 = image_info->tile_Ox + (int)floor( (float)tileno/(float)image_info->tw ) * image_info->tile_y;
-+ int x1 = x0 + image_info->tile_x;
-+ int y1 = y0 + image_info->tile_y;
-+ /*
-+ fprintf(stream, "\npack_nb tileno precno compno resno layno start_pos end_pos disto\n");
-+ */
-+ for(y = y0; y < y1; y++) {
-+ for(x = x0; x < x1; x++) {
-+ for (compno = 0; compno < image_info->comp; compno++) {
-+ for (resno = 0; resno < image_info->decomposition + 1; resno++) {
-+ int prec_max = image_info->tile[tileno].pw[resno] * image_info->tile[tileno].ph[resno];
-+ for (precno = 0; precno < prec_max; precno++) {
-+ int pcnx = image_info->tile[tileno].pw[resno];
-+ int pcx = (int) pow( 2, image_info->tile[tileno].pdx[resno] + image_info->decomposition - resno );
-+ int pcy = (int) pow( 2, image_info->tile[tileno].pdy[resno] + image_info->decomposition - resno );
-+ int precno_x = precno - (int) floor( (float)precno/(float)pcnx ) * pcnx;
-+ int precno_y = (int) floor( (float)precno/(float)pcnx );
-+ if (precno_y*pcy == y ) {
-+ if (precno_x*pcx == x ) {
-+ for (layno = 0; layno < image_info->layer; layno++) {
-+ start_pos = image_info->tile[tileno].packet[pack_nb].start_pos;
-+ end_pos = image_info->tile[tileno].packet[pack_nb].end_pos;
-+ disto = image_info->tile[tileno].packet[pack_nb].disto;
-+ fprintf(stream, "%4d %6d %6d %6d %5d %7d %9d %9d %8e\n",
-+ pack_nb, tileno, precno, compno, resno, layno, start_pos, end_pos, disto);
-+ total_disto += disto;
-+ pack_nb++;
-+ }
-+ }
-+ }
-+ } /* precno */
-+ } /* resno */
-+ } /* compno */
-+ } /* x = x0..x1 */
-+ } /* y = y0..y1 */
-+ } /* PCRL */
-+ else { /* CPRL */
-+ /*
-+ fprintf(stream, "\npack_nb tileno compno precno resno layno start_pos end_pos disto\n");
-+ */
-+ for (compno = 0; compno < image_info->comp; compno++) {
-+ /* I suppose components have same XRsiz, YRsiz */
-+ int x0 = image_info->tile_Ox + tileno - (int)floor( (float)tileno/(float)image_info->tw ) * image_info->tw * image_info->tile_x;
-+ int y0 = image_info->tile_Ox + (int)floor( (float)tileno/(float)image_info->tw ) * image_info->tile_y;
-+ int x1 = x0 + image_info->tile_x;
-+ int y1 = y0 + image_info->tile_y;
-+ for(y = y0; y < y1; y++) {
-+ for(x = x0; x < x1; x++) {
-+ for (resno = 0; resno < image_info->decomposition + 1; resno++) {
-+ int prec_max = image_info->tile[tileno].pw[resno] * image_info->tile[tileno].ph[resno];
-+ for (precno = 0; precno < prec_max; precno++) {
-+ int pcnx = image_info->tile[tileno].pw[resno];
-+ int pcx = (int) pow( 2, image_info->tile[tileno].pdx[resno] + image_info->decomposition - resno );
-+ int pcy = (int) pow( 2, image_info->tile[tileno].pdy[resno] + image_info->decomposition - resno );
-+ int precno_x = precno - (int) floor( (float)precno/(float)pcnx ) * pcnx;
-+ int precno_y = (int) floor( (float)precno/(float)pcnx );
-+ if (precno_y*pcy == y ) {
-+ if (precno_x*pcx == x ) {
-+ for (layno = 0; layno < image_info->layer; layno++) {
-+ start_pos = image_info->tile[tileno].packet[pack_nb].start_pos;
-+ end_pos = image_info->tile[tileno].packet[pack_nb].end_pos;
-+ disto = image_info->tile[tileno].packet[pack_nb].disto;
-+ fprintf(stream, "%4d %6d %6d %6d %5d %7d %9d %9d %8e\n",
-+ pack_nb, tileno, compno, precno, resno, layno, start_pos, end_pos, disto);
-+ total_disto += disto;
-+ pack_nb++;
-+ }
-+ }
-+ }
-+ } /* precno */
-+ } /* resno */
-+ } /* x = x0..x1 */
-+ } /* y = y0..y1 */
-+ } /* comno */
-+ } /* CPRL */
-+ } /* tileno */
-+
-+ fprintf(stream, "%8e\n", image_info->D_max); /* SE max */
-+ fprintf(stream, "%.8e\n", total_disto); /* SE totale */
-+ fclose(stream);
-+
-+ return 1;
-+}
-+
-+bool j2k_encode(opj_j2k_t *j2k, opj_cio_t *cio, opj_image_t *image, char *index) {
-+ int tileno, compno;
-+ opj_image_info_t *image_info = NULL;
-+ opj_cp_t *cp = NULL;
-+
-+ opj_tcd_t *tcd = NULL; /* TCD component */
-+
-+ j2k->cio = cio;
-+ j2k->image = image;
-+
-+ cp = j2k->cp;
-+
-+ /* j2k_dump_cp(stdout, image, cp); */
-+
-+ /* INDEX >> */
-+ image_info = j2k->image_info;
-+ if (image_info && cp->index_on) {
-+ image_info->index_on = cp->index_on;
-+ image_info->tile = (opj_tile_info_t *) opj_malloc(cp->tw * cp->th * sizeof(opj_tile_info_t));
-+ image_info->image_w = image->x1 - image->x0;
-+ image_info->image_h = image->y1 - image->y0;
-+ image_info->prog = (&cp->tcps[0])->prg;
-+ image_info->tw = cp->tw;
-+ image_info->th = cp->th;
-+ image_info->tile_x = cp->tdx; /* new version parser */
-+ image_info->tile_y = cp->tdy; /* new version parser */
-+ image_info->tile_Ox = cp->tx0; /* new version parser */
-+ image_info->tile_Oy = cp->ty0; /* new version parser */
-+ image_info->comp = image->numcomps;
-+ image_info->layer = (&cp->tcps[0])->numlayers;
-+ image_info->decomposition = (&cp->tcps[0])->tccps->numresolutions - 1;
-+ image_info->D_max = 0; /* ADD Marcela */
-+ }
-+ /* << INDEX */
-+
-+ j2k_write_soc(j2k);
-+ j2k_write_siz(j2k);
-+/* UniPG>> */
-+#ifdef USE_JPWL
-+ /** THIS CODE IS NOT USED */
-+ //if(image_info && image_info->index_on && cp->epc_on)
-+ // j2k_write_epc(j2k);
-+#endif /* USE_JPWL */
-+/* <<UniPG */
-+ j2k_write_cod(j2k);
-+ j2k_write_qcd(j2k);
-+ for (compno = 0; compno < image->numcomps; compno++) {
-+ opj_tcp_t *tcp = &cp->tcps[0];
-+ if (tcp->tccps[compno].roishift)
-+ j2k_write_rgn(j2k, compno, 0);
-+ }
-+ if (cp->comment != NULL) {
-+ j2k_write_com(j2k);
-+ }
-+ /* INDEX >> */
-+ if(image_info && image_info->index_on) {
-+ image_info->main_head_end = cio_tell(cio) - 1;
-+ }
-+ /* << INDEX */
-+
-+ /* create the tile encoder */
-+ tcd = tcd_create(j2k->cinfo);
-+
-+ /* encode each tile */
-+
-+ for (tileno = 0; tileno < cp->tw * cp->th; tileno++) {
-+ opj_event_msg(j2k->cinfo, EVT_INFO, "tile number %d / %d\n", tileno + 1, cp->tw * cp->th);
-+
-+ j2k->curtileno = tileno;
-+
-+ /* initialisation before tile encoding */
-+ if (tileno == 0) {
-+ tcd_malloc_encode(tcd, image, cp, j2k->curtileno);
-+ } else {
-+ tcd_init_encode(tcd, image, cp, j2k->curtileno);
-+ }
-+
-+ /* INDEX >> */
-+ if(image_info && image_info->index_on) {
-+ image_info->tile[j2k->curtileno].num_tile = j2k->curtileno;
-+ image_info->tile[j2k->curtileno].start_pos = cio_tell(cio) + j2k->pos_correction;
-+ }
-+ /* << INDEX */
-+
-+ j2k_write_sot(j2k);
-+
-+ for (compno = 1; compno < image->numcomps; compno++) {
-+ j2k_write_coc(j2k, compno);
-+ j2k_write_qcc(j2k, compno);
-+ }
-+ if (cp->tcps[tileno].numpocs) {
-+ j2k_write_poc(j2k);
-+ }
-+
-+ j2k_write_sod(j2k, tcd);
-+
-+ /* INDEX >> */
-+ if(image_info && image_info->index_on) {
-+ image_info->tile[j2k->curtileno].end_pos = cio_tell(cio) + j2k->pos_correction - 1;
-+ }
-+ /* << INDEX */
-+
-+
-+ /*
-+ if (tile->PPT) { // BAD PPT !!!
-+ FILE *PPT_file;
-+ int i;
-+ PPT_file=fopen("PPT","rb");
-+ fprintf(stderr,"%c%c%c%c",255,97,tile->len_ppt/256,tile->len_ppt%256);
-+ for (i=0;i<tile->len_ppt;i++) {
-+ unsigned char elmt;
-+ fread(&elmt, 1, 1, PPT_file);
-+ fwrite(&elmt,1,1,f);
-+ }
-+ fclose(PPT_file);
-+ unlink("PPT");
-+ }
-+ */
-+
-+ }
-+
-+ /* destroy the tile encoder */
-+ tcd_free_encode(tcd);
-+ tcd_destroy(tcd);
-+
-+ j2k_write_eoc(j2k);
-+
-+ /* Creation of the index file */
-+ if(image_info && image_info->index_on) {
-+ if(!j2k_create_index(j2k, cio, image_info, index)) {
-+ opj_event_msg(j2k->cinfo, EVT_ERROR, "failed to create index file %s\n", index);
-+ return false;
-+ }
-+ }
-+
-+/* UniPG>> */
-+#ifdef USE_JPWL
-+ /*
-+ preparation of JPWL marker segments: can be finalized only when the whole
-+ codestream is known
-+ */
-+ if(image_info && image_info->index_on && cp->epc_on) {
-+
-+ /* let's begin creating a marker list, according to user wishes */
-+ jpwl_prepare_marks(j2k, cio, image);
-+
-+ /* now we dump the JPWL markers on the codestream */
-+ jpwl_dump_marks(j2k, cio, image);
-+
-+ /* do not know exactly what is this for,
-+ but it gets called during index creation */
-+ j2k->pos_correction = 0;
-+
-+ /* Re-creation of the index file, with updated info */
-+ if(image_info && image_info->index_on) {
-+ if(!j2k_create_index(j2k, cio, image_info, index)) {
-+ opj_event_msg(j2k->cinfo, EVT_ERROR, "failed to re-create index file %s\n", index);
-+ return false;
-+ }
-+ }
-+
-+ /* now we finalize the marker contents */
-+ /*jpwl_finalize_marks(j2k, cio, image);*/
-+
-+ }
-+#endif /* USE_JPWL */
-+/* <<UniPG */
-+
-+ return true;
-+}
-+
-diff -Naur OpenJPEG/libopenjpeg/j2k.c.rej OpenJPEG-patched/libopenjpeg/j2k.c.rej
---- OpenJPEG/libopenjpeg/j2k.c.rej 1970-01-01 01:00:00.000000000 +0100
-+++ OpenJPEG-patched/libopenjpeg/j2k.c.rej 2007-03-17 14:18:44.000000000 +0100
-@@ -0,0 +1,16 @@
-+***************
-+*** 1522,1527 ****
-+ opj_cp_t *cp = (opj_cp_t*)opj_malloc(sizeof(opj_cp_t));
-+ cp->reduce = parameters->cp_reduce;
-+ cp->layer = parameters->cp_layer;
-+ /* UniPG>> */
-+ #ifdef USE_JPWL
-+ cp->correct = parameters->jpwl_correct;
-+--- 1524,1530 ----
-+ opj_cp_t *cp = (opj_cp_t*)opj_malloc(sizeof(opj_cp_t));
-+ cp->reduce = parameters->cp_reduce;
-+ cp->layer = parameters->cp_layer;
-++ cp->limit_tags = parameters->cp_limit_tags;
-+ /* UniPG>> */
-+ #ifdef USE_JPWL
-+ cp->correct = parameters->jpwl_correct;
-diff -Naur OpenJPEG/libopenjpeg/j2k.h OpenJPEG-patched/libopenjpeg/j2k.h
---- OpenJPEG/libopenjpeg/j2k.h 2007-02-19 10:59:29.000000000 +0100
-+++ OpenJPEG-patched/libopenjpeg/j2k.h 2007-03-17 14:20:28.000000000 +0100
-@@ -200,6 +200,8 @@
- /** if == NO_LIMITATION, decode entire codestream; if == LIMIT_TO_MAIN_HEADER then only decode the main header */
- OPJ_LIMIT_DECODING limit_decoding;
- /** 0 = no index || 1 = index */
-+ /** if != 0, then only decode specific tags, abort on any other; if == 0 decode all tags */
-+ OPJ_LIMIT_TAGS limit_tags;
- int index_on;
- /** XTOsiz */
- int tx0;
-diff -Naur OpenJPEG/libopenjpeg/j2k.h.orig OpenJPEG-patched/libopenjpeg/j2k.h.orig
---- OpenJPEG/libopenjpeg/j2k.h.orig 1970-01-01 01:00:00.000000000 +0100
-+++ OpenJPEG-patched/libopenjpeg/j2k.h.orig 2007-02-19 10:59:29.000000000 +0100
-@@ -0,0 +1,484 @@
-+/*
-+ * Copyright (c) 2002-2007, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium
-+ * Copyright (c) 2002-2007, Professor Benoit Macq
-+ * Copyright (c) 2001-2003, David Janssens
-+ * Copyright (c) 2002-2003, Yannick Verschueren
-+ * Copyright (c) 2003-2007, Francois-Olivier Devaux and Antonin Descampe
-+ * Copyright (c) 2005, Herve Drolon, FreeImage Team
-+ * All rights reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ * 1. Redistributions of source code must retain the above copyright
-+ * notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ * notice, this list of conditions and the following disclaimer in the
-+ * documentation and/or other materials provided with the distribution.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
-+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-+ * POSSIBILITY OF SUCH DAMAGE.
-+ */
-+#ifndef __J2K_H
-+#define __J2K_H
-+/**
-+@file j2k.h
-+@brief The JPEG-2000 Codestream Reader/Writer (J2K)
-+
-+The functions in J2K.C have for goal to read/write the several parts of the codestream: markers and data.
-+*/
-+
-+/** @defgroup J2K J2K - JPEG-2000 codestream reader/writer */
-+/*@{*/
-+
-+#define J2K_CP_CSTY_PRT 0x01
-+#define J2K_CP_CSTY_SOP 0x02
-+#define J2K_CP_CSTY_EPH 0x04
-+#define J2K_CCP_CSTY_PRT 0x01
-+#define J2K_CCP_CBLKSTY_LAZY 0x01
-+#define J2K_CCP_CBLKSTY_RESET 0x02
-+#define J2K_CCP_CBLKSTY_TERMALL 0x04
-+#define J2K_CCP_CBLKSTY_VSC 0x08
-+#define J2K_CCP_CBLKSTY_PTERM 0x10
-+#define J2K_CCP_CBLKSTY_SEGSYM 0x20
-+#define J2K_CCP_QNTSTY_NOQNT 0
-+#define J2K_CCP_QNTSTY_SIQNT 1
-+#define J2K_CCP_QNTSTY_SEQNT 2
-+
-+/* ----------------------------------------------------------------------- */
-+
-+#define J2K_MS_SOC 0xff4f /**< SOC marker value */
-+#define J2K_MS_SOT 0xff90 /**< SOT marker value */
-+#define J2K_MS_SOD 0xff93 /**< SOD marker value */
-+#define J2K_MS_EOC 0xffd9 /**< EOC marker value */
-+#define J2K_MS_SIZ 0xff51 /**< SIZ marker value */
-+#define J2K_MS_COD 0xff52 /**< COD marker value */
-+#define J2K_MS_COC 0xff53 /**< COC marker value */
-+#define J2K_MS_RGN 0xff5e /**< RGN marker value */
-+#define J2K_MS_QCD 0xff5c /**< QCD marker value */
-+#define J2K_MS_QCC 0xff5d /**< QCC marker value */
-+#define J2K_MS_POC 0xff5f /**< POC marker value */
-+#define J2K_MS_TLM 0xff55 /**< TLM marker value */
-+#define J2K_MS_PLM 0xff57 /**< PLM marker value */
-+#define J2K_MS_PLT 0xff58 /**< PLT marker value */
-+#define J2K_MS_PPM 0xff60 /**< PPM marker value */
-+#define J2K_MS_PPT 0xff61 /**< PPT marker value */
-+#define J2K_MS_SOP 0xff91 /**< SOP marker value */
-+#define J2K_MS_EPH 0xff92 /**< EPH marker value */
-+#define J2K_MS_CRG 0xff63 /**< CRG marker value */
-+#define J2K_MS_COM 0xff64 /**< COM marker value */
-+/* UniPG>> */
-+#ifdef USE_JPWL
-+#define J2K_MS_EPC 0xff68 /**< EPC marker value (Part11) */
-+#define J2K_MS_EPB 0xff66 /**< EPB marker value (Part11) */
-+#define J2K_MS_ESD 0xff67 /**< ESD marker value (Part11) */
-+#define J2K_MS_RED 0xff69 /**< RED marker value (Part11) */
-+#endif /* USE_JPWL */
-+/* <<UniPG */
-+
-+/* ----------------------------------------------------------------------- */
-+
-+/**
-+Values that specify the status of the decoding process when decoding the main header.
-+These values may be combined with a | operator.
-+*/
-+typedef enum J2K_STATUS {
-+ J2K_STATE_MHSOC = 0x0001, /**< a SOC marker is expected */
-+ J2K_STATE_MHSIZ = 0x0002, /**< a SIZ marker is expected */
-+ J2K_STATE_MH = 0x0004, /**< the decoding process is in the main header */
-+ J2K_STATE_TPHSOT = 0x0008, /**< the decoding process is in a tile part header and expects a SOT marker */
-+ J2K_STATE_TPH = 0x0010, /**< the decoding process is in a tile part header */
-+ J2K_STATE_MT = 0x0020, /**< the EOC marker has just been read */
-+ J2K_STATE_NEOC = 0x0040 /**< the decoding process must not expect a EOC marker because the codestream is truncated */
-+} J2K_STATUS;
-+
-+/* ----------------------------------------------------------------------- */
-+
-+/**
-+Quantization stepsize
-+*/
-+typedef struct opj_stepsize {
-+ /** exponent */
-+ int expn;
-+ /** mantissa */
-+ int mant;
-+} opj_stepsize_t;
-+
-+/**
-+Tile-component coding parameters
-+*/
-+typedef struct opj_tccp {
-+ /** coding style */
-+ int csty;
-+ /** number of resolutions */
-+ int numresolutions;
-+ /** code-blocks width */
-+ int cblkw;
-+ /** code-blocks height */
-+ int cblkh;
-+ /** code-block coding style */
-+ int cblksty;
-+ /** discrete wavelet transform identifier */
-+ int qmfbid;
-+ /** quantisation style */
-+ int qntsty;
-+ /** stepsizes used for quantization */
-+ opj_stepsize_t stepsizes[J2K_MAXBANDS];
-+ /** number of guard bits */
-+ int numgbits;
-+ /** Region Of Interest shift */
-+ int roishift;
-+ /** precinct width */
-+ int prcw[J2K_MAXRLVLS];
-+ /** precinct height */
-+ int prch[J2K_MAXRLVLS];
-+} opj_tccp_t;
-+
-+/**
-+Tile coding parameters :
-+this structure is used to store coding/decoding parameters common to all
-+tiles (information like COD, COC in main header)
-+*/
-+typedef struct opj_tcp {
-+ /** 1 : first part-tile of a tile */
-+ int first;
-+ /** coding style */
-+ int csty;
-+ /** progression order */
-+ OPJ_PROG_ORDER prg;
-+ /** number of layers */
-+ int numlayers;
-+ /** multi-component transform identifier */
-+ int mct;
-+ /** rates of layers */
-+ float rates[100];
-+ /** number of progression order changes */
-+ int numpocs;
-+ /** indicates if a POC marker has been used O:NO, 1:YES */
-+ int POC;
-+ /** progression order changes */
-+ opj_poc_t pocs[32];
-+ /** packet header store there for futur use in t2_decode_packet */
-+ unsigned char *ppt_data;
-+ /** pointer remaining on the first byte of the first header if ppt is used */
-+ unsigned char *ppt_data_first;
-+ /** If ppt == 1 --> there was a PPT marker for the present tile */
-+ int ppt;
-+ /** used in case of multiple marker PPT (number of info already stored) */
-+ int ppt_store;
-+ /** ppmbug1 */
-+ int ppt_len;
-+ /** add fixed_quality */
-+ float distoratio[100];
-+ /** tile-component coding parameters */
-+ opj_tccp_t *tccps;
-+} opj_tcp_t;
-+
-+/**
-+Coding parameters
-+*/
-+typedef struct opj_cp {
-+ /** allocation by rate/distortion */
-+ int disto_alloc;
-+ /** allocation by fixed layer */
-+ int fixed_alloc;
-+ /** add fixed_quality */
-+ int fixed_quality;
-+ /** if != 0, then original dimension divided by 2^(reduce); if == 0 or not used, image is decoded to the full resolution */
-+ int reduce;
-+ /** if != 0, then only the first "layer" layers are decoded; if == 0 or not used, all the quality layers are decoded */
-+ int layer;
-+ /** if == NO_LIMITATION, decode entire codestream; if == LIMIT_TO_MAIN_HEADER then only decode the main header */
-+ OPJ_LIMIT_DECODING limit_decoding;
-+ /** 0 = no index || 1 = index */
-+ int index_on;
-+ /** XTOsiz */
-+ int tx0;
-+ /** YTOsiz */
-+ int ty0;
-+ /** XTsiz */
-+ int tdx;
-+ /** YTsiz */
-+ int tdy;
-+ /** comment for coding */
-+ char *comment;
-+ /** number of tiles in width */
-+ int tw;
-+ /** number of tiles in heigth */
-+ int th;
-+ /** ID number of the tiles present in the codestream */
-+ int *tileno;
-+ /** size of the vector tileno */
-+ int tileno_size;
-+ /** packet header store there for futur use in t2_decode_packet */
-+ unsigned char *ppm_data;
-+ /** pointer remaining on the first byte of the first header if ppm is used */
-+ unsigned char *ppm_data_first;
-+ /** if ppm == 1 --> there was a PPM marker for the present tile */
-+ int ppm;
-+ /** use in case of multiple marker PPM (number of info already store) */
-+ int ppm_store;
-+ /** use in case of multiple marker PPM (case on non-finished previous info) */
-+ int ppm_previous;
-+ /** ppmbug1 */
-+ int ppm_len;
-+ /** tile coding parameters */
-+ opj_tcp_t *tcps;
-+ /** fixed layer */
-+ int *matrice;
-+/* UniPG>> */
-+#ifdef USE_JPWL
-+ /** enables writing of EPC in MH, thus activating JPWL */
-+ bool epc_on;
-+ /** enables writing of EPB, in case of activated JPWL */
-+ bool epb_on;
-+ /** enables writing of ESD, in case of activated JPWL */
-+ bool esd_on;
-+ /** enables writing of informative techniques of ESD, in case of activated JPWL */
-+ bool info_on;
-+ /** enables writing of RED, in case of activated JPWL */
-+ bool red_on;
-+ /** error protection method for MH (0,1,16,32,37-128) */
-+ int hprot_MH;
-+ /** tile number of header protection specification (>=0) */
-+ int hprot_TPH_tileno[JPWL_MAX_NO_TILESPECS];
-+ /** error protection methods for TPHs (0,1,16,32,37-128) */
-+ int hprot_TPH[JPWL_MAX_NO_TILESPECS];
-+ /** tile number of packet protection specification (>=0) */
-+ int pprot_tileno[JPWL_MAX_NO_PACKSPECS];
-+ /** packet number of packet protection specification (>=0) */
-+ int pprot_packno[JPWL_MAX_NO_PACKSPECS];
-+ /** error protection methods for packets (0,1,16,32,37-128) */
-+ int pprot[JPWL_MAX_NO_PACKSPECS];
-+ /** enables writing of ESD, (0/2/4 bytes) */
-+ int sens_size;
-+ /** sensitivity addressing size (0=auto/2/4 bytes) */
-+ int sens_addr;
-+ /** sensitivity range (0-3) */
-+ int sens_range;
-+ /** sensitivity method for MH (-1,0-7) */
-+ int sens_MH;
-+ /** tile number of sensitivity specification (>=0) */
-+ int sens_TPH_tileno[JPWL_MAX_NO_TILESPECS];
-+ /** sensitivity methods for TPHs (-1,0-7) */
-+ int sens_TPH[JPWL_MAX_NO_TILESPECS];
-+ /** enables JPWL correction at the decoder */
-+ bool correct;
-+ /** expected number of components at the decoder */
-+ int exp_comps;
-+ /** maximum number of tiles at the decoder */
-+ int max_tiles;
-+#endif /* USE_JPWL */
-+/* <<UniPG */
-+} opj_cp_t;
-+
-+/**
-+Information concerning a packet inside tile
-+*/
-+typedef struct opj_packet_info {
-+ /** start position */
-+ int start_pos;
-+ /** end position */
-+ int end_pos;
-+ /** ADD for Marcela */
-+ double disto;
-+} opj_packet_info_t;
-+
-+/**
-+Index structure : information regarding tiles inside image
-+*/
-+typedef struct opj_tile_info {
-+ /** value of thresh for each layer by tile cfr. Marcela */
-+ double *thresh;
-+ /** number of tile */
-+ int num_tile;
-+ /** start position */
-+ int start_pos;
-+ /** end position of the header */
-+ int end_header;
-+ /** end position */
-+ int end_pos;
-+ /** precinct number for each resolution level (width) */
-+ int pw[33];
-+ /** precinct number for each resolution level (height) */
-+ int ph[33];
-+ /** precinct size (in power of 2), in X for each resolution level */
-+ int pdx[33];
-+ /** precinct size (in power of 2), in Y for each resolution level */
-+ int pdy[33];
-+ /** information concerning packets inside tile */
-+ opj_packet_info_t *packet;
-+ /** add fixed_quality */
-+ int nbpix;
-+ /** add fixed_quality */
-+ double distotile;
-+} opj_tile_info_t;
-+
-+/**
-+Index structure
-+*/
-+typedef struct opj_image_info {
-+ /** 0 = no index || 1 = index */
-+ int index_on;
-+ /** maximum distortion reduction on the whole image (add for Marcela) */
-+ double D_max;
-+ /** packet number */
-+ int num;
-+ /** writing the packet in the index with t2_encode_packets */
-+ int index_write;
-+ /** image width */
-+ int image_w;
-+ /** image height */
-+ int image_h;
-+ /** progression order */
-+ OPJ_PROG_ORDER prog;
-+ /** tile size in x */
-+ int tile_x;
-+ /** tile size in y */
-+ int tile_y;
-+ /** */
-+ int tile_Ox;
-+ /** */
-+ int tile_Oy;
-+ /** number of tiles in X */
-+ int tw;
-+ /** number of tiles in Y */
-+ int th;
-+ /** component numbers */
-+ int comp;
-+ /** number of layer */
-+ int layer;
-+ /** number of decomposition */
-+ int decomposition;
-+ /** main header position */
-+ int main_head_end;
-+ /** codestream's size */
-+ int codestream_size;
-+ /** information regarding tiles inside image */
-+ opj_tile_info_t *tile;
-+} opj_image_info_t;
-+
-+/**
-+JPEG-2000 codestream reader/writer
-+*/
-+typedef struct opj_j2k {
-+ /** codec context */
-+ opj_common_ptr cinfo;
-+
-+ /** locate in which part of the codestream the decoder is (main header, tile header, end) */
-+ int state;
-+ /** number of the tile curently concern by coding/decoding */
-+ int curtileno;
-+ /**
-+ locate the position of the end of the tile in the codestream,
-+ used to detect a truncated codestream (in j2k_read_sod)
-+ */
-+ unsigned char *eot;
-+ /**
-+ locate the start position of the SOT marker of the current coded tile:
-+ after encoding the tile, a jump (in j2k_write_sod) is done to the SOT marker to store the value of its length.
-+ */
-+ int sot_start;
-+ int sod_start;
-+ /**
-+ as the J2K-file is written in several parts during encoding,
-+ it enables to make the right correction in position return by cio_tell
-+ */
-+ int pos_correction;
-+ /** array used to store the data of each tile */
-+ unsigned char **tile_data;
-+ /** array used to store the length of each tile */
-+ int *tile_len;
-+ /**
-+ decompression only :
-+ store decoding parameters common to all tiles (information like COD, COC in main header)
-+ */
-+ opj_tcp_t *default_tcp;
-+ /** pointer to the encoded / decoded image */
-+ opj_image_t *image;
-+ /** pointer to the coding parameters */
-+ opj_cp_t *cp;
-+ /** helper used to write the index file */
-+ opj_image_info_t *image_info;
-+ /** pointer to the byte i/o stream */
-+ opj_cio_t *cio;
-+} opj_j2k_t;
-+
-+/** @name Exported functions */
-+/*@{*/
-+/* ----------------------------------------------------------------------- */
-+/**
-+Creates a J2K decompression structure
-+@param cinfo Codec context info
-+@return Returns a handle to a J2K decompressor if successful, returns NULL otherwise
-+*/
-+opj_j2k_t* j2k_create_decompress(opj_common_ptr cinfo);
-+/**
-+Destroy a J2K decompressor handle
-+@param j2k J2K decompressor handle to destroy
-+*/
-+void j2k_destroy_decompress(opj_j2k_t *j2k);
-+/**
-+Setup the decoder decoding parameters using user parameters.
-+Decoding parameters are returned in j2k->cp.
-+@param j2k J2K decompressor handle
-+@param parameters decompression parameters
-+*/
-+void j2k_setup_decoder(opj_j2k_t *j2k, opj_dparameters_t *parameters);
-+/**
-+Decode an image from a JPEG-2000 codestream
-+@param j2k J2K decompressor handle
-+@param cio Input buffer stream
-+@return Returns a decoded image if successful, returns NULL otherwise
-+*/
-+opj_image_t* j2k_decode(opj_j2k_t *j2k, opj_cio_t *cio);
-+/**
-+Decode an image form a JPT-stream (JPEG 2000, JPIP)
-+@param j2k J2K decompressor handle
-+@param cio Input buffer stream
-+@return Returns a decoded image if successful, returns NULL otherwise
-+*/
-+opj_image_t* j2k_decode_jpt_stream(opj_j2k_t *j2k, opj_cio_t *cio);
-+/**
-+Creates a J2K compression structure
-+@param cinfo Codec context info
-+@return Returns a handle to a J2K compressor if successful, returns NULL otherwise
-+*/
-+opj_j2k_t* j2k_create_compress(opj_common_ptr cinfo);
-+/**
-+Destroy a J2K compressor handle
-+@param j2k J2K compressor handle to destroy
-+*/
-+void j2k_destroy_compress(opj_j2k_t *j2k);
-+/**
-+Setup the encoder parameters using the current image and using user parameters.
-+Coding parameters are returned in j2k->cp.
-+@param j2k J2K compressor handle
-+@param parameters compression parameters
-+@param image input filled image
-+*/
-+void j2k_setup_encoder(opj_j2k_t *j2k, opj_cparameters_t *parameters, opj_image_t *image);
-+/**
-+Encode an image into a JPEG-2000 codestream
-+@param j2k J2K compressor handle
-+@param cio Output buffer stream
-+@param image Image to encode
-+@param index Name of the index file if required, NULL otherwise
-+@return Returns true if successful, returns false otherwise
-+*/
-+bool j2k_encode(opj_j2k_t *j2k, opj_cio_t *cio, opj_image_t *image, char *index);
-+/* ----------------------------------------------------------------------- */
-+/*@}*/
-+
-+/*@}*/
-+
-+#endif /* __J2K_H */
-diff -Naur OpenJPEG/libopenjpeg/openjpeg.h OpenJPEG-patched/libopenjpeg/openjpeg.h
---- OpenJPEG/libopenjpeg/openjpeg.h 2007-02-23 11:48:11.000000000 +0100
-+++ OpenJPEG-patched/libopenjpeg/openjpeg.h 2007-03-17 14:18:28.000000000 +0100
-@@ -319,6 +319,41 @@
-
- } opj_cparameters_t;
-
-+/** Stop after tags. */
-+typedef enum LIMIT_TAGS {
-+ OPJ_TAG_SOC = 0x000001, /**< start of codestream */
-+ OPJ_TAG_SOT = 0x000002, /**< start of tile-part*/
-+ OPJ_TAG_SOD = 0x000004, /**< start of data */
-+ OPJ_TAG_EOC = 0x000008, /**< end of codestream */
-+ OPJ_TAG_SIZ = 0x000010, /**< image and tile size */
-+ OPJ_TAG_COD = 0x000020, /**< coding style default */
-+ OPJ_TAG_COC = 0x000040, /**< coding style component */
-+ OPJ_TAG_RGN = 0x000080, /**< region-of-interest */
-+ OPJ_TAG_QCD = 0x000100, /**< quantization default */
-+ OPJ_TAG_QCC = 0x000200, /**< quantization component */
-+ OPJ_TAG_POC = 0x000400, /**< progression order change */
-+ OPJ_TAG_TLM = 0x000800, /**< tile-part lengths */
-+ OPJ_TAG_PLM = 0x001000, /**< packet length, main header */
-+ OPJ_TAG_PLT = 0x002000, /**< packet length, tile-part header */
-+ OPJ_TAG_PPM = 0x004000, /**< packet packet headers, main header */
-+ OPJ_TAG_PPT = 0x008000, /**< packet packet headers, tile-part header */
-+ OPJ_TAG_SOP = 0x010000, /**< SOP marker value */
-+ OPJ_TAG_EPH = 0x020000, /**< EPH marker value */
-+ OPJ_TAG_CRG = 0x040000, /**< component registration */
-+ OPJ_TAG_COM = 0x080000, /**< comment */
-+#ifdef USE_JPWL
-+/* UniPG>> */
-+ OPJ_TAG_EPC = 0x100000, /**< EPC marker value (Part11) */
-+ OPJ_TAG_EPB = 0x200000, /**< EPB marker value (Part11) */
-+ OPJ_TAG_ESD = 0x400000, /**< ESD marker value (Part11) */
-+ OPJ_TAG_RED = 0x800000, /**< RED marker value (Part11) */
-+#endif /* USE_JPWL */
-+/* <<UniPG */
-+} OPJ_LIMIT_TAGS;
-+
-+/** The needed tags to decode just the size of the image. */
-+#define OPJ_LIMIT_FOR_SIZE (OPJ_LIMIT_TAGS)(OPJ_TAG_SOC | OPJ_TAG_SIZ )
-+
- /**
- Decompression parameters
- */
-@@ -338,6 +373,15 @@
- if == 0 or not used, all the quality layers are decoded
- */
- int cp_layer;
-+ /**
-+ Limits the tags that are decoded.
-+ This is a bitwise OR of the tags to be decoded. If a tag is
-+ encountered that isn't in the list decoding ceases and the function
-+ returns.
-+ if != 0 only the given tags are decoded.
-+ if == 0 all tags are decoded.
-+ */
-+ OPJ_LIMIT_TAGS cp_limit_tags;
-
- /**
- Specify whether the decoding should be done on the entire codestream, or be limited to the main header
-diff -Naur OpenJPEG/libopenjpeg/openjpeg.h.orig OpenJPEG-patched/libopenjpeg/openjpeg.h.orig
---- OpenJPEG/libopenjpeg/openjpeg.h.orig 1970-01-01 01:00:00.000000000 +0100
-+++ OpenJPEG-patched/libopenjpeg/openjpeg.h.orig 2007-02-23 11:48:11.000000000 +0100
-@@ -0,0 +1,704 @@
-+ /*
-+ * Copyright (c) 2002-2007, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium
-+ * Copyright (c) 2002-2007, Professor Benoit Macq
-+ * Copyright (c) 2001-2003, David Janssens
-+ * Copyright (c) 2002-2003, Yannick Verschueren
-+ * Copyright (c) 2003-2007, Francois-Olivier Devaux and Antonin Descampe
-+ * Copyright (c) 2005, Herve Drolon, FreeImage Team
-+ * All rights reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ * 1. Redistributions of source code must retain the above copyright
-+ * notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ * notice, this list of conditions and the following disclaimer in the
-+ * documentation and/or other materials provided with the distribution.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
-+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-+ * POSSIBILITY OF SUCH DAMAGE.
-+ */
-+#ifndef OPENJPEG_H
-+#define OPENJPEG_H
-+
-+#define OPENJPEG_VERSION "1.1.1"
-+
-+/*
-+==========================================================
-+ Compiler directives
-+==========================================================
-+*/
-+
-+#if defined(OPJ_STATIC) || !(defined(WIN32) || defined(__WIN32__))
-+#define OPJ_API
-+#define OPJ_CALLCONV
-+#else
-+#define OPJ_CALLCONV __stdcall
-+/*
-+The following ifdef block is the standard way of creating macros which make exporting
-+from a DLL simpler. All files within this DLL are compiled with the OPJ_EXPORTS
-+symbol defined on the command line. this symbol should not be defined on any project
-+that uses this DLL. This way any other project whose source files include this file see
-+OPJ_API functions as being imported from a DLL, wheras this DLL sees symbols
-+defined with this macro as being exported.
-+*/
-+#ifdef OPJ_EXPORTS
-+#define OPJ_API __declspec(dllexport)
-+#else
-+#define OPJ_API __declspec(dllimport)
-+#endif /* OPJ_EXPORTS */
-+#endif /* !OPJ_STATIC || !WIN32 */
-+
-+#ifndef __cplusplus
-+#if defined(HAVE_STDBOOL_H)
-+/*
-+The C language implementation does correctly provide the standard header
-+file "stdbool.h".
-+ */
-+#include <stdbool.h>
-+#else
-+/*
-+The C language implementation does not provide the standard header file
-+"stdbool.h" as required by ISO/IEC 9899:1999. Try to compensate for this
-+braindamage below.
-+*/
-+#if !defined(bool)
-+#define bool int
-+#endif
-+#if !defined(true)
-+#define true 1
-+#endif
-+#if !defined(false)
-+#define false 0
-+#endif
-+#endif
-+#endif /* __cplusplus */
-+
-+/*
-+==========================================================
-+ Useful constant definitions
-+==========================================================
-+*/
-+
-+#define OPJ_PATH_LEN 4096 /**< Maximum allowed size for filenames */
-+
-+#define J2K_MAXRLVLS 33 /**< Number of maximum resolution level authorized */
-+#define J2K_MAXBANDS (3*J2K_MAXRLVLS-2) /**< Number of maximum sub-band linked to number of resolution level */
-+
-+/* UniPG>> */
-+#ifdef USE_JPWL
-+#define JPWL_MAX_NO_TILESPECS 16 /**< Maximum number of tile parts expected by JPWL: increase at your will */
-+#define JPWL_MAX_NO_PACKSPECS 16 /**< Maximum number of packet parts expected by JPWL: increase at your will */
-+#define JPWL_MAX_NO_MARKERS 512 /**< Maximum number of JPWL markers: increase at your will */
-+#define JPWL_PRIVATEINDEX_NAME "jpwl_index_privatefilename" /**< index file name used when JPWL is on */
-+#define JPWL_EXPECTED_COMPONENTS 3 /**< Expect this number of components, so you'll find better the first EPB */
-+#define JPWL_MAXIMUM_TILES 8192 /**< Expect this maximum number of tiles, to avoid some crashes */
-+#define JPWL_MAXIMUM_HAMMING 2 /**< Expect this maximum number of bit errors in marker id's */
-+#endif /* USE_JPWL */
-+/* <<UniPG */
-+
-+/*
-+==========================================================
-+ enum definitions
-+==========================================================
-+*/
-+
-+/** Progression order */
-+typedef enum PROG_ORDER {
-+ PROG_UNKNOWN = -1, /**< place-holder */
-+ LRCP = 0, /**< layer-resolution-component-precinct order */
-+ RLCP = 1, /**< resolution-layer-component-precinct order */
-+ RPCL = 2, /**< resolution-precinct-component-layer order */
-+ PCRL = 3, /**< precinct-component-resolution-layer order */
-+ CPRL = 4 /**< component-precinct-resolution-layer order */
-+} OPJ_PROG_ORDER;
-+
-+/**
-+Supported image color spaces
-+*/
-+typedef enum COLOR_SPACE {
-+ CLRSPC_UNKNOWN = -1, /**< place-holder */
-+ CLRSPC_SRGB = 1, /**< sRGB */
-+ CLRSPC_GRAY = 2, /**< grayscale */
-+ CLRSPC_SYCC = 3 /**< YUV */
-+} OPJ_COLOR_SPACE;
-+
-+/**
-+Supported codec
-+*/
-+typedef enum CODEC_FORMAT {
-+ CODEC_UNKNOWN = -1, /**< place-holder */
-+ CODEC_J2K = 0, /**< JPEG-2000 codestream : read/write */
-+ CODEC_JPT = 1, /**< JPT-stream (JPEG 2000, JPIP) : read only */
-+ CODEC_JP2 = 2 /**< JPEG-2000 file format : read/write */
-+} OPJ_CODEC_FORMAT;
-+
-+/**
-+Limit decoding to certain portions of the codestream.
-+*/
-+typedef enum LIMIT_DECODING {
-+ NO_LIMITATION = 0, /**< No limitation for the decoding. The entire codestream will de decoded */
-+ LIMIT_TO_MAIN_HEADER = 1 /**< The decoding is limited to the Main Header */
-+} OPJ_LIMIT_DECODING;
-+
-+/*
-+==========================================================
-+ event manager typedef definitions
-+==========================================================
-+*/
-+
-+/**
-+Callback function prototype for events
-+@param msg Event message
-+@param client_data
-+*/
-+typedef void (*opj_msg_callback) (const char *msg, void *client_data);
-+
-+/**
-+Message handler object
-+used for
-+<ul>
-+<li>Error messages
-+<li>Warning messages
-+<li>Debugging messages
-+</ul>
-+*/
-+typedef struct opj_event_mgr {
-+ /** Error message callback if available, NULL otherwise */
-+ opj_msg_callback error_handler;
-+ /** Warning message callback if available, NULL otherwise */
-+ opj_msg_callback warning_handler;
-+ /** Debug message callback if available, NULL otherwise */
-+ opj_msg_callback info_handler;
-+} opj_event_mgr_t;
-+
-+
-+/*
-+==========================================================
-+ codec typedef definitions
-+==========================================================
-+*/
-+
-+/**
-+Progression order changes
-+*/
-+typedef struct opj_poc {
-+ int resno0, compno0;
-+ int layno1, resno1, compno1;
-+ OPJ_PROG_ORDER prg;
-+ int tile;
-+ char progorder[4];
-+} opj_poc_t;
-+
-+/**
-+Compression parameters
-+*/
-+typedef struct opj_cparameters {
-+ /** size of tile: tile_size_on = false (not in argument) or = true (in argument) */
-+ bool tile_size_on;
-+ /** XTOsiz */
-+ int cp_tx0;
-+ /** YTOsiz */
-+ int cp_ty0;
-+ /** XTsiz */
-+ int cp_tdx;
-+ /** YTsiz */
-+ int cp_tdy;
-+ /** allocation by rate/distortion */
-+ int cp_disto_alloc;
-+ /** allocation by fixed layer */
-+ int cp_fixed_alloc;
-+ /** add fixed_quality */
-+ int cp_fixed_quality;
-+ /** fixed layer */
-+ int *cp_matrice;
-+ /** comment for coding */
-+ char *cp_comment;
-+ /** csty : coding style */
-+ int csty;
-+ /** progression order (default LRCP) */
-+ OPJ_PROG_ORDER prog_order;
-+ /** progression order changes */
-+ opj_poc_t POC[32];
-+ /** number of progression order changes (POC), default to 0 */
-+ int numpocs;
-+ /** number of layers */
-+ int tcp_numlayers;
-+ /** rates of layers */
-+ float tcp_rates[100];
-+ /** different psnr for successive layers */
-+ float tcp_distoratio[100];
-+ /** number of resolutions */
-+ int numresolution;
-+ /** initial code block width, default to 64 */
-+ int cblockw_init;
-+ /** initial code block height, default to 64 */
-+ int cblockh_init;
-+ /** mode switch (cblk_style) */
-+ int mode;
-+ /** 1 : use the irreversible DWT 9-7, 0 : use lossless compression (default) */
-+ int irreversible;
-+ /** region of interest: affected component in [0..3], -1 means no ROI */
-+ int roi_compno;
-+ /** region of interest: upshift value */
-+ int roi_shift;
-+ /* number of precinct size specifications */
-+ int res_spec;
-+ /** initial precinct width */
-+ int prcw_init[J2K_MAXRLVLS];
-+ /** initial precinct height */
-+ int prch_init[J2K_MAXRLVLS];
-+
-+ /**@name command line encoder parameters (not used inside the library) */
-+ /*@{*/
-+ /** input file name */
-+ char infile[OPJ_PATH_LEN];
-+ /** output file name */
-+ char outfile[OPJ_PATH_LEN];
-+ /** creation of an index file, default to 0 (false) */
-+ int index_on;
-+ /** index file name */
-+ char index[OPJ_PATH_LEN];
-+ /** subimage encoding: origin image offset in x direction */
-+ int image_offset_x0;
-+ /** subimage encoding: origin image offset in y direction */
-+ int image_offset_y0;
-+ /** subsampling value for dx */
-+ int subsampling_dx;
-+ /** subsampling value for dy */
-+ int subsampling_dy;
-+ /** input file format 0: PGX, 1: PxM, 2: BMP */
-+ int decod_format;
-+ /** output file format 0: J2K, 1: JP2, 2: JPT */
-+ int cod_format;
-+ /*@}*/
-+
-+/* UniPG>> */
-+#ifdef USE_JPWL
-+ /**@name JPWL encoding parameters */
-+ /*@{*/
-+ /** enables writing of EPC in MH, thus activating JPWL */
-+ bool jpwl_epc_on;
-+ /** error protection method for MH (0,1,16,32,37-128) */
-+ int jpwl_hprot_MH;
-+ /** tile number of header protection specification (>=0) */
-+ int jpwl_hprot_TPH_tileno[JPWL_MAX_NO_TILESPECS];
-+ /** error protection methods for TPHs (0,1,16,32,37-128) */
-+ int jpwl_hprot_TPH[JPWL_MAX_NO_TILESPECS];
-+ /** tile number of packet protection specification (>=0) */
-+ int jpwl_pprot_tileno[JPWL_MAX_NO_PACKSPECS];
-+ /** packet number of packet protection specification (>=0) */
-+ int jpwl_pprot_packno[JPWL_MAX_NO_PACKSPECS];
-+ /** error protection methods for packets (0,1,16,32,37-128) */
-+ int jpwl_pprot[JPWL_MAX_NO_PACKSPECS];
-+ /** enables writing of ESD, (0=no/1/2 bytes) */
-+ int jpwl_sens_size;
-+ /** sensitivity addressing size (0=auto/2/4 bytes) */
-+ int jpwl_sens_addr;
-+ /** sensitivity range (0-3) */
-+ int jpwl_sens_range;
-+ /** sensitivity method for MH (-1=no,0-7) */
-+ int jpwl_sens_MH;
-+ /** tile number of sensitivity specification (>=0) */
-+ int jpwl_sens_TPH_tileno[JPWL_MAX_NO_TILESPECS];
-+ /** sensitivity methods for TPHs (-1=no,0-7) */
-+ int jpwl_sens_TPH[JPWL_MAX_NO_TILESPECS];
-+ /*@}*/
-+#endif /* USE_JPWL */
-+/* <<UniPG */
-+
-+} opj_cparameters_t;
-+
-+/**
-+Decompression parameters
-+*/
-+typedef struct opj_dparameters {
-+ /**
-+ Set the number of highest resolution levels to be discarded.
-+ The image resolution is effectively divided by 2 to the power of the number of discarded levels.
-+ The reduce factor is limited by the smallest total number of decomposition levels among tiles.
-+ if != 0, then original dimension divided by 2^(reduce);
-+ if == 0 or not used, image is decoded to the full resolution
-+ */
-+ int cp_reduce;
-+ /**
-+ Set the maximum number of quality layers to decode.
-+ If there are less quality layers than the specified number, all the quality layers are decoded.
-+ if != 0, then only the first "layer" layers are decoded;
-+ if == 0 or not used, all the quality layers are decoded
-+ */
-+ int cp_layer;
-+
-+ /**
-+ Specify whether the decoding should be done on the entire codestream, or be limited to the main header
-+ Limiting the decoding to the main header makes it possible to extract the characteristics of the codestream
-+ if == NO_LIMITATION, the entire codestream is decoded;
-+ if == LIMIT_TO_MAIN_HEADER, only the main header is decoded;
-+ */
-+ OPJ_LIMIT_DECODING cp_limit_decoding;
-+
-+ /**@name command line encoder parameters (not used inside the library) */
-+ /*@{*/
-+ /** input file name */
-+ char infile[OPJ_PATH_LEN];
-+ /** output file name */
-+ char outfile[OPJ_PATH_LEN];
-+ /** input file format 0: J2K, 1: JP2, 2: JPT */
-+ int decod_format;
-+ /** output file format 0: PGX, 1: PxM, 2: BMP */
-+ int cod_format;
-+ /*@}*/
-+
-+/* UniPG>> */
-+#ifdef USE_JPWL
-+ /**@name JPWL decoding parameters */
-+ /*@{*/
-+ /** activates the JPWL correction capabilities */
-+ bool jpwl_correct;
-+ /** expected number of components */
-+ int jpwl_exp_comps;
-+ /** maximum number of tiles */
-+ int jpwl_max_tiles;
-+ /*@}*/
-+#endif /* USE_JPWL */
-+/* <<UniPG */
-+} opj_dparameters_t;
-+
-+/** Common fields between JPEG-2000 compression and decompression master structs. */
-+
-+#define opj_common_fields \
-+ opj_event_mgr_t *event_mgr; /**< pointer to the event manager */\
-+ void * client_data; /**< Available for use by application */\
-+ bool is_decompressor; /**< So common code can tell which is which */\
-+ OPJ_CODEC_FORMAT codec_format; /**< selected codec */\
-+ void *j2k_handle; /**< pointer to the J2K codec */\
-+ void *jp2_handle /**< pointer to the JP2 codec */
-+
-+/* Routines that are to be used by both halves of the library are declared
-+ * to receive a pointer to this structure. There are no actual instances of
-+ * opj_common_struct_t, only of opj_cinfo_t and opj_dinfo_t.
-+ */
-+typedef struct opj_common_struct {
-+ opj_common_fields; /* Fields common to both master struct types */
-+ /* Additional fields follow in an actual opj_cinfo_t or
-+ * opj_dinfo_t. All three structs must agree on these
-+ * initial fields! (This would be a lot cleaner in C++.)
-+ */
-+} opj_common_struct_t;
-+
-+typedef opj_common_struct_t * opj_common_ptr;
-+
-+/**
-+Compression context info
-+*/
-+typedef struct opj_cinfo {
-+ /** Fields shared with opj_dinfo_t */
-+ opj_common_fields;
-+ /* other specific fields go here */
-+} opj_cinfo_t;
-+
-+/**
-+Decompression context info
-+*/
-+typedef struct opj_dinfo {
-+ /** Fields shared with opj_cinfo_t */
-+ opj_common_fields;
-+ /* other specific fields go here */
-+} opj_dinfo_t;
-+
-+/*
-+==========================================================
-+ I/O stream typedef definitions
-+==========================================================
-+*/
-+
-+/*
-+ * Stream open flags.
-+ */
-+/** The stream was opened for reading. */
-+#define OPJ_STREAM_READ 0x0001
-+/** The stream was opened for writing. */
-+#define OPJ_STREAM_WRITE 0x0002
-+
-+/**
-+Byte input-output stream (CIO)
-+*/
-+typedef struct opj_cio {
-+ /** codec context */
-+ opj_common_ptr cinfo;
-+
-+ /** open mode (read/write) either OPJ_STREAM_READ or OPJ_STREAM_WRITE */
-+ int openmode;
-+ /** pointer to the start of the buffer */
-+ unsigned char *buffer;
-+ /** buffer size in bytes */
-+ int length;
-+
-+ /** pointer to the start of the stream */
-+ unsigned char *start;
-+ /** pointer to the end of the stream */
-+ unsigned char *end;
-+ /** pointer to the current position */
-+ unsigned char *bp;
-+} opj_cio_t;
-+
-+/*
-+==========================================================
-+ image typedef definitions
-+==========================================================
-+*/
-+
-+/**
-+Defines a single image component
-+*/
-+typedef struct opj_image_comp {
-+ /** XRsiz: horizontal separation of a sample of ith component with respect to the reference grid */
-+ int dx;
-+ /** YRsiz: vertical separation of a sample of ith component with respect to the reference grid */
-+ int dy;
-+ /** data width */
-+ int w;
-+ /** data height */
-+ int h;
-+ /** x component offset compared to the whole image */
-+ int x0;
-+ /** y component offset compared to the whole image */
-+ int y0;
-+ /** precision */
-+ int prec;
-+ /** image depth in bits */
-+ int bpp;
-+ /** signed (1) / unsigned (0) */
-+ int sgnd;
-+ /** number of decoded resolution */
-+ int resno_decoded;
-+ /** number of division by 2 of the out image compared to the original size of image */
-+ int factor;
-+ /** image component data */
-+ int *data;
-+} opj_image_comp_t;
-+
-+/**
-+Defines image data and characteristics
-+*/
-+typedef struct opj_image {
-+ /** XOsiz: horizontal offset from the origin of the reference grid to the left side of the image area */
-+ int x0;
-+ /** YOsiz: vertical offset from the origin of the reference grid to the top side of the image area */
-+ int y0;
-+ /** Xsiz: width of the reference grid */
-+ int x1;
-+ /** Ysiz: height of the reference grid */
-+ int y1;
-+ /** number of components in the image */
-+ int numcomps;
-+ /** color space: sRGB, Greyscale or YUV */
-+ OPJ_COLOR_SPACE color_space;
-+ /** image components */
-+ opj_image_comp_t *comps;
-+} opj_image_t;
-+
-+/**
-+Component parameters structure used by the opj_image_create function
-+*/
-+typedef struct opj_image_comptparm {
-+ /** XRsiz: horizontal separation of a sample of ith component with respect to the reference grid */
-+ int dx;
-+ /** YRsiz: vertical separation of a sample of ith component with respect to the reference grid */
-+ int dy;
-+ /** data width */
-+ int w;
-+ /** data height */
-+ int h;
-+ /** x component offset compared to the whole image */
-+ int x0;
-+ /** y component offset compared to the whole image */
-+ int y0;
-+ /** precision */
-+ int prec;
-+ /** image depth in bits */
-+ int bpp;
-+ /** signed (1) / unsigned (0) */
-+ int sgnd;
-+} opj_image_cmptparm_t;
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+
-+/*
-+==========================================================
-+ openjpeg version
-+==========================================================
-+*/
-+
-+OPJ_API const char * OPJ_CALLCONV opj_version();
-+
-+/*
-+==========================================================
-+ image functions definitions
-+==========================================================
-+*/
-+
-+/**
-+Create an image
-+@param numcmpts number of components
-+@param cmptparms components parameters
-+@param clrspc image color space
-+@return returns a new image structure if successful, returns NULL otherwise
-+*/
-+OPJ_API opj_image_t* OPJ_CALLCONV opj_image_create(int numcmpts, opj_image_cmptparm_t *cmptparms, OPJ_COLOR_SPACE clrspc);
-+
-+/**
-+Deallocate any resources associated with an image
-+@param image image to be destroyed
-+*/
-+OPJ_API void OPJ_CALLCONV opj_image_destroy(opj_image_t *image);
-+
-+/*
-+==========================================================
-+ stream functions definitions
-+==========================================================
-+*/
-+
-+/**
-+Open and allocate a memory stream for read / write.
-+On reading, the user must provide a buffer containing encoded data. The buffer will be
-+wrapped by the returned CIO handle.
-+On writing, buffer parameters must be set to 0: a buffer will be allocated by the library
-+to contain encoded data.
-+@param cinfo Codec context info
-+@param buffer Reading: buffer address. Writing: NULL
-+@param length Reading: buffer length. Writing: 0
-+@return Returns a CIO handle if successful, returns NULL otherwise
-+*/
-+OPJ_API opj_cio_t* OPJ_CALLCONV opj_cio_open(opj_common_ptr cinfo, unsigned char *buffer, int length);
-+
-+/**
-+Close and free a CIO handle
-+@param cio CIO handle to free
-+*/
-+OPJ_API void OPJ_CALLCONV opj_cio_close(opj_cio_t *cio);
-+
-+/**
-+Get position in byte stream
-+@param cio CIO handle
-+@return Returns the position in bytes
-+*/
-+OPJ_API int OPJ_CALLCONV cio_tell(opj_cio_t *cio);
-+/**
-+Set position in byte stream
-+@param cio CIO handle
-+@param pos Position, in number of bytes, from the beginning of the stream
-+*/
-+OPJ_API void OPJ_CALLCONV cio_seek(opj_cio_t *cio, int pos);
-+
-+/*
-+==========================================================
-+ event manager functions definitions
-+==========================================================
-+*/
-+
-+OPJ_API opj_event_mgr_t* OPJ_CALLCONV opj_set_event_mgr(opj_common_ptr cinfo, opj_event_mgr_t *event_mgr, void *context);
-+
-+/*
-+==========================================================
-+ codec functions definitions
-+==========================================================
-+*/
-+/**
-+Creates a J2K/JPT/JP2 decompression structure
-+@param format Decoder to select
-+@return Returns a handle to a decompressor if successful, returns NULL otherwise
-+*/
-+OPJ_API opj_dinfo_t* OPJ_CALLCONV opj_create_decompress(OPJ_CODEC_FORMAT format);
-+/**
-+Destroy a decompressor handle
-+@param dinfo decompressor handle to destroy
-+*/
-+OPJ_API void OPJ_CALLCONV opj_destroy_decompress(opj_dinfo_t *dinfo);
-+/**
-+Set decoding parameters to default values
-+@param parameters Decompression parameters
-+*/
-+OPJ_API void OPJ_CALLCONV opj_set_default_decoder_parameters(opj_dparameters_t *parameters);
-+/**
-+Setup the decoder decoding parameters using user parameters.
-+Decoding parameters are returned in j2k->cp.
-+@param dinfo decompressor handle
-+@param parameters decompression parameters
-+*/
-+OPJ_API void OPJ_CALLCONV opj_setup_decoder(opj_dinfo_t *dinfo, opj_dparameters_t *parameters);
-+/**
-+Decode an image from a JPEG-2000 codestream
-+@param dinfo decompressor handle
-+@param cio Input buffer stream
-+@return Returns a decoded image if successful, returns NULL otherwise
-+*/
-+OPJ_API opj_image_t* OPJ_CALLCONV opj_decode(opj_dinfo_t *dinfo, opj_cio_t *cio);
-+/**
-+Creates a J2K/JP2 compression structure
-+@param format Coder to select
-+@return Returns a handle to a compressor if successful, returns NULL otherwise
-+*/
-+OPJ_API opj_cinfo_t* OPJ_CALLCONV opj_create_compress(OPJ_CODEC_FORMAT format);
-+/**
-+Destroy a compressor handle
-+@param cinfo compressor handle to destroy
-+*/
-+OPJ_API void OPJ_CALLCONV opj_destroy_compress(opj_cinfo_t *cinfo);
-+/**
-+Set encoding parameters to default values, that means :
-+<ul>
-+<li>Lossless
-+<li>1 tile
-+<li>Size of precinct : 2^15 x 2^15 (means 1 precinct)
-+<li>Size of code-block : 64 x 64
-+<li>Number of resolutions: 6
-+<li>No SOP marker in the codestream
-+<li>No EPH marker in the codestream
-+<li>No sub-sampling in x or y direction
-+<li>No mode switch activated
-+<li>Progression order: LRCP
-+<li>No index file
-+<li>No ROI upshifted
-+<li>No offset of the origin of the image
-+<li>No offset of the origin of the tiles
-+<li>Reversible DWT 5-3
-+</ul>
-+@param parameters Compression parameters
-+*/
-+OPJ_API void OPJ_CALLCONV opj_set_default_encoder_parameters(opj_cparameters_t *parameters);
-+/**
-+Setup the encoder parameters using the current image and using user parameters.
-+@param cinfo compressor handle
-+@param parameters compression parameters
-+@param image input filled image
-+*/
-+OPJ_API void OPJ_CALLCONV opj_setup_encoder(opj_cinfo_t *cinfo, opj_cparameters_t *parameters, opj_image_t *image);
-+/**
-+Encode an image into a JPEG-2000 codestream
-+@param cinfo compressor handle
-+@param cio Output buffer stream
-+@param image Image to encode
-+@param index Name of the index file if required, NULL otherwise
-+@return Returns true if successful, returns false otherwise
-+*/
-+OPJ_API bool OPJ_CALLCONV opj_encode(opj_cinfo_t *cinfo, opj_cio_t *cio, opj_image_t *image, char *index);
-+
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+#endif /* OPENJPEG_H */
diff --git a/media-libs/openjpeg/files/digest-openjpeg-1.1.1 b/media-libs/openjpeg/files/digest-openjpeg-1.1.1
deleted file mode 100644
index c726c97..0000000
--- a/media-libs/openjpeg/files/digest-openjpeg-1.1.1
+++ /dev/null
@@ -1,3 +0,0 @@
-MD5 55ce1119efd3efb3d689ca2105afd10e openjpeg_v1_1_1.tar.gz 1406460
-RMD160 08b2318441075a8704d6b9b0ac3d9d277c44d85e openjpeg_v1_1_1.tar.gz 1406460
-SHA256 6076db131bfaa966a691d718044e5b5cdbec028436be3b7a3f146d1a0e3a7ec6 openjpeg_v1_1_1.tar.gz 1406460
diff --git a/media-libs/openjpeg/files/openjpeg-1.1.1-gentoo.patch b/media-libs/openjpeg/files/openjpeg-1.1.1-gentoo.patch
deleted file mode 100644
index fdb0b9c..0000000
--- a/media-libs/openjpeg/files/openjpeg-1.1.1-gentoo.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-diff -Naur OpenJPEG.orig/Makefile OpenJPEG/Makefile
---- OpenJPEG.orig/Makefile 2007-02-13 17:49:00.000000000 +0900
-+++ OpenJPEG/Makefile 2007-02-24 11:47:31.000000000 +0900
-@@ -36,7 +36,7 @@
- dist: OpenJPEG
- mkdir -p dist
- cp *.a dist
-- mv *.so dist
-+ cp *.so dist
- cp libopenjpeg/openjpeg.h dist
-
- dos2unix:
-@@ -57,7 +57,6 @@
- install -m 644 -o root -g root $(STATICLIB) $(INSTALLDIR)
- install -m 755 -o root -g root $(SHAREDLIB) $(INSTALLDIR)
- ln -sf $(SHAREDLIB) $(INSTALLDIR)/$(LIBNAME)
-- ldconfig
-
- clean:
- rm -rf core dist/ u2dtmp* $(MODULES) $(STATICLIB) $(SHAREDLIB) $(LIBNAME)
diff --git a/media-libs/openjpeg/openjpeg-1.1.1.ebuild b/media-libs/openjpeg/openjpeg-1.1.1.ebuild
deleted file mode 100644
index 008ef72..0000000
--- a/media-libs/openjpeg/openjpeg-1.1.1.ebuild
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright 1999-2007 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: $
-
-inherit eutils flag-o-matic toolchain-funcs multilib
-
-DESCRIPTION="An open-source JPEG 2000 codec written in C"
-HOMEPAGE="http://www.openjpeg.org/"
-SRC_URI="http://www.openjpeg.org/openjpeg_v${PV//./_}.tar.gz"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="~amd64 ~ppc64 ~x86"
-IUSE=""
-
-S="${WORKDIR}/OpenJPEG"
-
-src_unpack() {
- unpack ${A}
- cd "${S}"
- epatch "${FILESDIR}"/${P}-gentoo.patch
- epatch "${FILESDIR}"/OPJ_limit_tags_for_decode_UPDATED.patch
-}
-
-src_compile() {
- append-flags -fPIC
- emake CC="$(tc-getCC)" COMPILERFLAGS="${CFLAGS}" || die "emake failed"
-}
-
-src_install() {
- dodir /usr/$(get_libdir)
- emake INSTALLDIR="${D}usr/$(get_libdir)" install || die "install failed"
-
- insinto /usr/include
- doins libopenjpeg/openjpeg.h
-
- dodoc ChangeLog README.linux
-}