This commit was manufactured by cvs2svn to create branch 'j2kviewer'.
diff --git a/CVSROOT/checkoutlist b/CVSROOT/checkoutlist
deleted file mode 100644
index b04b350..0000000
--- a/CVSROOT/checkoutlist
+++ /dev/null
@@ -1,13 +0,0 @@
-# The "checkoutlist" file is used to support additional version controlled
-# administrative files in $CVSROOT/CVSROOT, such as template files.
-#
-# The first entry on a line is a filename which will be checked out from
-# the corresponding RCS file in the $CVSROOT/CVSROOT directory.
-# The remainder of the line is an error message to use if the file cannot
-# be checked out.
-#
-# File format:
-#
-#	[<whitespace>]<filename><whitespace><error message><end-of-line>
-#
-# comment lines begin with '#'
diff --git a/CVSROOT/commitinfo b/CVSROOT/commitinfo
deleted file mode 100644
index b19e7b7..0000000
--- a/CVSROOT/commitinfo
+++ /dev/null
@@ -1,15 +0,0 @@
-# The "commitinfo" file is used to control pre-commit checks.
-# The filter on the right is invoked with the repository and a list 
-# of files to check.  A non-zero exit of the filter program will 
-# cause the commit to be aborted.
-#
-# The first entry on a line is a regular expression which is tested
-# against the directory that the change is being committed to, relative
-# to the $CVSROOT.  For the first match that is found, then the remainder
-# of the line is the name of the filter to run.
-#
-# If the repository name does not match any of the regular expressions in this
-# file, the "DEFAULT" line is used, if it is specified.
-#
-# If the name "ALL" appears as a regular expression it is always used
-# in addition to the first matching regex or "DEFAULT".
diff --git a/CVSROOT/config b/CVSROOT/config
deleted file mode 100644
index ff43ec0..0000000
--- a/CVSROOT/config
+++ /dev/null
@@ -1,14 +0,0 @@
-# Set this to "no" if pserver shouldn't check system users/passwords
-#SystemAuth=no
-
-# Put CVS lock files in this directory rather than directly in the repository.
-#LockDir=/var/lock/cvs
-
-# Set `TopLevelAdmin' to `yes' to create a CVS directory at the top
-# level of the new working directory when using the `cvs checkout'
-# command.
-#TopLevelAdmin=no
-
-# Set `LogHistory' to `all' or `TOFEWGCMAR' to log all transactions to the
-# history file, or a subset as needed (ie `TMAR' logs all write operations)
-#LogHistory=TOFEWGCMAR
diff --git a/CVSROOT/cvswrappers b/CVSROOT/cvswrappers
deleted file mode 100644
index 0accaf1..0000000
--- a/CVSROOT/cvswrappers
+++ /dev/null
@@ -1,23 +0,0 @@
-# This file affects handling of files based on their names.
-#
-# The -t/-f options allow one to treat directories of files
-# as a single file, or to transform a file in other ways on
-# its way in and out of CVS.
-#
-# The -m option specifies whether CVS attempts to merge files.
-#
-# The -k option specifies keyword expansion (e.g. -kb for binary).
-#
-# Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers)
-#
-#  wildcard	[option value][option value]...
-#
-#  where option is one of
-#  -f		from cvs filter		value: path to filter
-#  -t		to cvs filter		value: path to filter
-#  -m		update methodology	value: MERGE or COPY
-#  -k		expansion mode		value: b, o, kkv, &c
-#
-#  and value is a single-quote delimited value.
-# For example:
-#*.gif -k 'b'
diff --git a/CVSROOT/editinfo b/CVSROOT/editinfo
deleted file mode 100644
index d78886c..0000000
--- a/CVSROOT/editinfo
+++ /dev/null
@@ -1,21 +0,0 @@
-# The "editinfo" file is used to allow verification of logging
-# information.  It works best when a template (as specified in the
-# rcsinfo file) is provided for the logging procedure.  Given a
-# template with locations for, a bug-id number, a list of people who
-# reviewed the code before it can be checked in, and an external
-# process to catalog the differences that were code reviewed, the
-# following test can be applied to the code:
-#
-#   Making sure that the entered bug-id number is correct.
-#   Validating that the code that was reviewed is indeed the code being
-#       checked in (using the bug-id number or a seperate review
-#       number to identify this particular code set.).
-#
-# If any of the above test failed, then the commit would be aborted.
-#
-# Actions such as mailing a copy of the report to each reviewer are
-# better handled by an entry in the loginfo file.
-#
-# One thing that should be noted is the the ALL keyword is not
-# supported.  There can be only one entry that matches a given
-# repository.
diff --git a/CVSROOT/loginfo b/CVSROOT/loginfo
deleted file mode 100644
index 5a59f0a..0000000
--- a/CVSROOT/loginfo
+++ /dev/null
@@ -1,26 +0,0 @@
-# The "loginfo" file controls where "cvs commit" log information
-# is sent.  The first entry on a line is a regular expression which must match
-# the directory that the change is being made to, relative to the
-# $CVSROOT.  If a match is found, then the remainder of the line is a filter
-# program that should expect log information on its standard input.
-#
-# If the repository name does not match any of the regular expressions in this
-# file, the "DEFAULT" line is used, if it is specified.
-#
-# If the name ALL appears as a regular expression it is always used
-# in addition to the first matching regex or DEFAULT.
-#
-# You may specify a format string as part of the
-# filter.  The string is composed of a `%' followed
-# by a single format character, or followed by a set of format
-# characters surrounded by `{' and `}' as separators.  The format
-# characters are:
-#
-#   s = file name
-#   V = old version number (pre-checkin)
-#   v = new version number (post-checkin)
-#
-# For example:
-#DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog
-# or
-#DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog
diff --git a/CVSROOT/modules b/CVSROOT/modules
deleted file mode 100644
index cb9e9ef..0000000
--- a/CVSROOT/modules
+++ /dev/null
@@ -1,26 +0,0 @@
-# Three different line formats are valid:
-#	key	-a    aliases...
-#	key [options] directory
-#	key [options] directory files...
-#
-# Where "options" are composed of:
-#	-i prog		Run "prog" on "cvs commit" from top-level of module.
-#	-o prog		Run "prog" on "cvs checkout" of module.
-#	-e prog		Run "prog" on "cvs export" of module.
-#	-t prog		Run "prog" on "cvs rtag" of module.
-#	-u prog		Run "prog" on "cvs update" of module.
-#	-d dir		Place module in directory "dir" instead of module name.
-#	-l		Top-level directory only -- do not recurse.
-#
-# NOTE:  If you change any of the "Run" options above, you'll have to
-# release and re-checkout any working directories of these modules.
-#
-# And "directory" is a path to a directory relative to $CVSROOT.
-#
-# The "-a" option specifies an alias.  An alias is interpreted as if
-# everything on the right of the "-a" had been typed on the command line.
-#
-# You can encode a module within a module by using the special '&'
-# character to interpose another module into the current module.  This
-# can be useful for creating a module that consists of many directories
-# spread out over the entire source repository.
diff --git a/CVSROOT/notify b/CVSROOT/notify
deleted file mode 100644
index 34f0bc2..0000000
--- a/CVSROOT/notify
+++ /dev/null
@@ -1,12 +0,0 @@
-# The "notify" file controls where notifications from watches set by
-# "cvs watch add" or "cvs edit" are sent.  The first entry on a line is
-# a regular expression which is tested against the directory that the
-# change is being made to, relative to the $CVSROOT.  If it matches,
-# then the remainder of the line is a filter program that should contain
-# one occurrence of %s for the user to notify, and information on its
-# standard input.
-#
-# "ALL" or "DEFAULT" can be used in place of the regular expression.
-#
-# For example:
-#ALL mail %s -s "CVS notification"
diff --git a/CVSROOT/rcsinfo b/CVSROOT/rcsinfo
deleted file mode 100644
index 49e59f4..0000000
--- a/CVSROOT/rcsinfo
+++ /dev/null
@@ -1,13 +0,0 @@
-# The "rcsinfo" file is used to control templates with which the editor
-# is invoked on commit and import.
-#
-# The first entry on a line is a regular expression which is tested
-# against the directory that the change is being made to, relative to the
-# $CVSROOT.  For the first match that is found, then the remainder of the
-# line is the name of the file that contains the template.
-#
-# If the repository name does not match any of the regular expressions in this
-# file, the "DEFAULT" line is used, if it is specified.
-#
-# If the name "ALL" appears as a regular expression it is always used
-# in addition to the first matching regex or "DEFAULT".
diff --git a/CVSROOT/taginfo b/CVSROOT/taginfo
deleted file mode 100644
index 274a46d..0000000
--- a/CVSROOT/taginfo
+++ /dev/null
@@ -1,20 +0,0 @@
-# The "taginfo" file is used to control pre-tag checks.
-# The filter on the right is invoked with the following arguments:
-#
-# $1 -- tagname
-# $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d
-# $3 -- repository
-# $4->  file revision [file revision ...]
-#
-# A non-zero exit of the filter program will cause the tag to be aborted.
-#
-# The first entry on a line is a regular expression which is tested
-# against the directory that the change is being committed to, relative
-# to the $CVSROOT.  For the first match that is found, then the remainder
-# of the line is the name of the filter to run.
-#
-# If the repository name does not match any of the regular expressions in this
-# file, the "DEFAULT" line is used, if it is specified.
-#
-# If the name "ALL" appears as a regular expression it is always used
-# in addition to the first matching regex or "DEFAULT".
diff --git a/CVSROOT/verifymsg b/CVSROOT/verifymsg
deleted file mode 100644
index 86f747c..0000000
--- a/CVSROOT/verifymsg
+++ /dev/null
@@ -1,21 +0,0 @@
-# The "verifymsg" file is used to allow verification of logging
-# information.  It works best when a template (as specified in the
-# rcsinfo file) is provided for the logging procedure.  Given a
-# template with locations for, a bug-id number, a list of people who
-# reviewed the code before it can be checked in, and an external
-# process to catalog the differences that were code reviewed, the
-# following test can be applied to the code:
-#
-#   Making sure that the entered bug-id number is correct.
-#   Validating that the code that was reviewed is indeed the code being
-#       checked in (using the bug-id number or a seperate review
-#       number to identify this particular code set.).
-#
-# If any of the above test failed, then the commit would be aborted.
-#
-# Actions such as mailing a copy of the report to each reviewer are
-# better handled by an entry in the loginfo file.
-#
-# One thing that should be noted is the the ALL keyword is not
-# supported.  There can be only one entry that matches a given
-# repository.
diff --git a/codec/.cvsignore b/codec/.cvsignore
deleted file mode 100644
index 5aca9ad..0000000
--- a/codec/.cvsignore
+++ /dev/null
@@ -1,6 +0,0 @@
-obj
-obj.w32
-bin
-bin.w32
-lib
-lib.w32
diff --git a/codec/Makefile b/codec/Makefile
deleted file mode 100644
index 27dc9a5..0000000
--- a/codec/Makefile
+++ /dev/null
@@ -1,94 +0,0 @@
-# $Id$
-#
-# makefile for OpenJPEG codec
-
-OPENJPEG_DIR = ../libopenjpeg
-
-ifndef DEBUG
-  LDFLAGS = -s -lm
-else
-  LDFLAGS = -lm
-endif
-
-CFLAGS = -Wall -O3 -fno-strength-reduce -fomit-frame-pointer -I$(OPENJPEG_DIR)
-
-OBJ_DIR_W32 = obj.w32
-BIN_DIR_W32 = bin.w32
-LIB_DIR_W32 = $(OPENJPEG_DIR)/lib.w32
-
-ifdef MINGW32
-  CC = i386-mingw32-gcc
-  CFLAGS += -DDONT_HAVE_GETOPT
-  OBJ_DIR = $(OBJ_DIR_W32)
-  BIN_DIR = $(BIN_DIR_W32)
-  LIB_DIR = lib.w32
-  all:	$(BIN_DIR) $(OBJ_DIR) $(LIB_DIR) \
-	$(addprefix $(BIN_DIR)/,j2k_to_image.exe image_to_j2k.exe)
-else
-  CC = gcc
-  OBJ_DIR = obj
-  BIN_DIR = bin
-  LIB_DIR = lib
-  all:	$(BIN_DIR) $(OBJ_DIR) $(LIB_DIR) \
-  	$(addprefix $(BIN_DIR)/,j2k_to_image image_to_j2k)
-endif
-
-ifdef DYNAMIC
-  ifdef MINGW32
-    LIB_OPENJPEG = $(LIB_DIR)/libopenjpeg.dll
-    LDFLAGS += -L$(LIB_DIR) -lopenjpeg
-  else
-    LIB_OPENJPEG = $(OPENJPEG_DIR)/$(LIB_DIR)/libopenjpeg.so
-    LDFLAGS += -L$(OPENJPEG_DIR)/$(LIB_DIR) -lopenjpeg
-  endif
-else
-  LIB_OPENJPEG = $(OPENJPEG_DIR)/$(LIB_DIR)/libopenjpeg.a
-  LDFLAGS += $(LIB_OPENJPEG)
-endif
-
-$(BIN_DIR):
-	mkdir $(BIN_DIR)
-
-$(OBJ_DIR):
-	mkdir $(OBJ_DIR)
-
-$(LIB_DIR):	
-	mkdir $(LIB_DIR)
-
-$(LIB_DIR)/libopenjpeg.dll: $(OPENJPEG_DIR)/$(LIB_DIR)/libopenjpeg.dll
-	ln -sf ../$< $@
-$(OPENJPEG_DIR)/$(LIB_DIR)/libopenjpeg.dll:
-	cd $(OPENJPEG_DIR) && \
-	$(MAKE) $(OBJ_DIR) $(LIB_DIR) $(LIB_DIR)/libopenjpeg.dll
-$(OPENJPEG_DIR)/$(LIB_DIR)/libopenjpeg.a:
-	cd $(OPENJPEG_DIR) && \
-	$(MAKE) $(OBJ_DIR) $(LIB_DIR) $(LIB_DIR)/libopenjpeg.a
-$(OPENJPEG_DIR)/$(LIB_DIR)/libopenjpeg.so:
-	cd $(OPENJPEG_DIR) && \
-	$(MAKE) $(LIB_DIR) $(LIB_DIR)/libopenjpeg.so
-
-$(OBJ_DIR)/%.o:
-	$(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<
-
-$(OBJ_DIR)/getopt.o:		compat/getopt.c
-$(OBJ_DIR)/convert.o:		convert.c
-$(OBJ_DIR)/j2k_to_image.o:	j2k_to_image.c
-$(OBJ_DIR)/image_to_j2k.o:	image_to_j2k.c convert.h
-
-J2I_OBJS = $(addprefix $(OBJ_DIR)/,j2k_to_image.o)
-I2J_OBJS = $(addprefix $(OBJ_DIR)/,image_to_j2k.o convert.o)
-
-$(BIN_DIR)/j2k_to_image:	$(J2I_OBJS) $(LIB_OPENJPEG)
-	${CC} -o $@  $(J2I_OBJS) ${LDFLAGS} 
-
-$(BIN_DIR)/image_to_j2k:	$(I2J_OBJS) $(LIB_OPENJPEG)
-	${CC} -o $@  $(I2J_OBJS) ${LDFLAGS} 
-
-$(BIN_DIR)/j2k_to_image.exe:	$(J2I_OBJS) $(LIB_OPENJPEG)
-	${CC} -o $@  $(J2I_OBJS) ${LDFLAGS} 
-
-$(BIN_DIR)/image_to_j2k.exe:	$(I2J_OBJS) $(LIB_OPENJPEG) $(OBJ_DIR)/getopt.o
-	${CC} -o $@  $(I2J_OBJS) ${LDFLAGS} $(OBJ_DIR)/getopt.o
-
-clean:
-	rm -f $(BIN_DIR_W32)/* $(BIN_DIR)/* $(OBJ_DIR_W32)/* $(OBJ_DIR)/*
diff --git a/codec/compat/getopt.c b/codec/compat/getopt.c
deleted file mode 100644
index baf35a4..0000000
--- a/codec/compat/getopt.c
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Copyright (c) 1987, 1993, 1994
- *	The Regents of the University of California.  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.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *	This product includes software developed by the University of
- *	California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
- */
-
-/* last review : october 29th, 2002 */
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "@(#)getopt.c	8.3 (Berkeley) 4/27/95";
-#endif													/* LIBC_SCCS and not lint */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-int opterr = 1,									/* if error message should be printed */
- optind = 1,										/* index into parent argv vector */
- optopt,												/* character checked for validity */
- optreset;											/* reset getopt */
-char *optarg;										/* argument associated with option */
-
-#define	BADCH	(int)'?'
-#define	BADARG	(int)':'
-#define	EMSG	""
-
-/*
- * getopt --
- *	Parse argc/argv argument vector.
- */
-int getopt(nargc, nargv, ostr)
-int nargc;
-char *const *nargv;
-const char *ostr;
-{
-#  define __progname nargv[0]
-	static char *place = EMSG;		/* option letter processing */
-	char *oli;										/* option letter list index */
-
-	if (optreset || !*place) {		/* update scanning pointer */
-		optreset = 0;
-		if (optind >= nargc || *(place = nargv[optind]) != '-') {
-			place = EMSG;
-			return (-1);
-		}
-		if (place[1] && *++place == '-') {	/* found "--" */
-			++optind;
-			place = EMSG;
-			return (-1);
-		}
-	}															/* option letter okay? */
-	if ((optopt = (int) *place++) == (int) ':' ||
-			!(oli = strchr(ostr, optopt))) {
-		/*
-		 * if the user didn't specify '-' as an option,
-		 * assume it means -1.
-		 */
-		if (optopt == (int) '-')
-			return (-1);
-		if (!*place)
-			++optind;
-		if (opterr && *ostr != ':')
-			(void) fprintf(stderr,
-										 "%s: illegal option -- %c\n", __progname, optopt);
-		return (BADCH);
-	}
-	if (*++oli != ':') {					/* don't need argument */
-		optarg = NULL;
-		if (!*place)
-			++optind;
-	} else {											/* need an argument */
-		if (*place)									/* no white space */
-			optarg = place;
-		else if (nargc <= ++optind) {	/* no arg */
-			place = EMSG;
-			if (*ostr == ':')
-				return (BADARG);
-			if (opterr)
-				(void) fprintf(stderr,
-											 "%s: option requires an argument -- %c\n",
-											 __progname, optopt);
-			return (BADCH);
-		} else											/* white space */
-			optarg = nargv[optind];
-		place = EMSG;
-		++optind;
-	}
-	return (optopt);							/* dump back option letter */
-}
diff --git a/codec/compat/getopt.h b/codec/compat/getopt.h
deleted file mode 100644
index f2cf1fa..0000000
--- a/codec/compat/getopt.h
+++ /dev/null
@@ -1,14 +0,0 @@
-/* last review : october 29th, 2002 */
-
-#ifndef _GETOPT_H_
-#define _GETOPT_H_
-
-extern int opterr;
-extern int optind;
-extern int optopt;
-extern int optreset;
-extern char *optarg;
-
-extern int getopt(int nargc, char *const *nargv, const char *ostr);
-
-#endif													/* _GETOPT_H_ */
diff --git a/codec/convert.c b/codec/convert.c
deleted file mode 100644
index 130e0e7..0000000
--- a/codec/convert.c
+++ /dev/null
@@ -1,899 +0,0 @@
-/*
- * Copyright (c) 2001-2003, David Janssens
- * Copyright (c) 2002-2003, Yannick Verschueren
- * Copyright (c) 2002-2003,  Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 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 <openjpeg.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-#include <unistd.h>
-#include <string.h>
-
-/* -->> -->> -->> -->>
-
-  BMP IMAGE FORMAT
-
- <<-- <<-- <<-- <<-- */
-
-/* UINT2 defines a two byte word */
-typedef unsigned short int UINT2;
-
-/* UINT4 defines a four byte word */
-typedef unsigned long int UINT4;
-
-typedef struct {
-	UINT2 bfType;									/* 'BM' for Bitmap (19776) */
-	UINT4 bfSize;									/* Size of the file */
-	UINT2 bfReserved1;						/* Reserved : 0 */
-	UINT2 bfReserved2;						/* Reserved : 0 */
-	UINT4 bfOffBits;							/* Offset */
-} BITMAPFILEHEADER_t;
-
-typedef struct {
-	UINT4 biSize;									/* Size of the structure in bytes */
-	UINT4 biWidth;								/* Width of the image in pixels */
-	UINT4 biHeight;								/* Heigth of the image in pixels */
-	UINT2 biPlanes;								/* 1 */
-	UINT2 biBitCount;							/* Number of color bits by pixels */
-	UINT4 biCompression;					/* Type of encoding 0: none 1: RLE8 2: RLE4 */
-	UINT4 biSizeImage;						/* Size of the image in bytes */
-	UINT4 biXpelsPerMeter;				/* Horizontal (X) resolution in pixels/meter */
-	UINT4 biYpelsPerMeter;				/* Vertical (Y) resolution in pixels/meter */
-	UINT4 biClrUsed;							/* Number of color used in the image (0: ALL) */
-	UINT4 biClrImportant;					/* Number of important color (0: ALL) */
-} BITMAPINFOHEADER_t;
-
-int bmptoimage(char *filename, j2k_image_t * img, int subsampling_dx,
-							 int subsampling_dy, int Dim[2])
-{
-
-	FILE *IN;
-	FILE *Compo0 = NULL, *Compo1 = NULL, *Compo2 = NULL;
-	BITMAPFILEHEADER_t File_h;
-	BITMAPINFOHEADER_t Info_h;
-	unsigned char *RGB;
-	unsigned char *table_R, *table_G, *table_B;
-	int i, w, h;
-	int gray_scale = 1, not_end_file = 1, line = 0, col = 0;
-	unsigned char v, v2;
-	UINT4 W, H;
-
-	IN = fopen(filename, "rb");
-	if (!IN) {
-		fprintf(stderr,
-						"\033[0;33mFailed to open %s for reading !!\033[0;39m\n",
-						filename);
-		return 0;
-	}
-
-	File_h.bfType = getc(IN);
-	File_h.bfType = (getc(IN) << 8) + File_h.bfType;
-
-	if (File_h.bfType != 19778) {
-		printf("Error, not a BMP file!\n");
-		return 0;
-	} else {
-		/* FILE HEADER */
-		/* ------------- */
-		File_h.bfSize = getc(IN);
-		File_h.bfSize = (getc(IN) << 8) + File_h.bfSize;
-		File_h.bfSize = (getc(IN) << 16) + File_h.bfSize;
-		File_h.bfSize = (getc(IN) << 24) + File_h.bfSize;
-
-		File_h.bfReserved1 = getc(IN);
-		File_h.bfReserved1 = (getc(IN) << 8) + File_h.bfReserved1;
-
-		File_h.bfReserved2 = getc(IN);
-		File_h.bfReserved2 = (getc(IN) << 8) + File_h.bfReserved2;
-
-		File_h.bfOffBits = getc(IN);
-		File_h.bfOffBits = (getc(IN) << 8) + File_h.bfOffBits;
-		File_h.bfOffBits = (getc(IN) << 16) + File_h.bfOffBits;
-		File_h.bfOffBits = (getc(IN) << 24) + File_h.bfOffBits;
-
-		/* INFO HEADER */
-		/* ------------- */
-
-		Info_h.biSize = getc(IN);
-		Info_h.biSize = (getc(IN) << 8) + Info_h.biSize;
-		Info_h.biSize = (getc(IN) << 16) + Info_h.biSize;
-		Info_h.biSize = (getc(IN) << 24) + Info_h.biSize;
-
-		Info_h.biWidth = getc(IN);
-		Info_h.biWidth = (getc(IN) << 8) + Info_h.biWidth;
-		Info_h.biWidth = (getc(IN) << 16) + Info_h.biWidth;
-		Info_h.biWidth = (getc(IN) << 24) + Info_h.biWidth;
-		w = Info_h.biWidth;
-
-		Info_h.biHeight = getc(IN);
-		Info_h.biHeight = (getc(IN) << 8) + Info_h.biHeight;
-		Info_h.biHeight = (getc(IN) << 16) + Info_h.biHeight;
-		Info_h.biHeight = (getc(IN) << 24) + Info_h.biHeight;
-		h = Info_h.biHeight;
-
-		Info_h.biPlanes = getc(IN);
-		Info_h.biPlanes = (getc(IN) << 8) + Info_h.biPlanes;
-
-		Info_h.biBitCount = getc(IN);
-		Info_h.biBitCount = (getc(IN) << 8) + Info_h.biBitCount;
-
-		Info_h.biCompression = getc(IN);
-		Info_h.biCompression = (getc(IN) << 8) + Info_h.biCompression;
-		Info_h.biCompression = (getc(IN) << 16) + Info_h.biCompression;
-		Info_h.biCompression = (getc(IN) << 24) + Info_h.biCompression;
-
-		Info_h.biSizeImage = getc(IN);
-		Info_h.biSizeImage = (getc(IN) << 8) + Info_h.biSizeImage;
-		Info_h.biSizeImage = (getc(IN) << 16) + Info_h.biSizeImage;
-		Info_h.biSizeImage = (getc(IN) << 24) + Info_h.biSizeImage;
-
-		Info_h.biXpelsPerMeter = getc(IN);
-		Info_h.biXpelsPerMeter = (getc(IN) << 8) + Info_h.biXpelsPerMeter;
-		Info_h.biXpelsPerMeter = (getc(IN) << 16) + Info_h.biXpelsPerMeter;
-		Info_h.biXpelsPerMeter = (getc(IN) << 24) + Info_h.biXpelsPerMeter;
-
-		Info_h.biYpelsPerMeter = getc(IN);
-		Info_h.biYpelsPerMeter = (getc(IN) << 8) + Info_h.biYpelsPerMeter;
-		Info_h.biYpelsPerMeter = (getc(IN) << 16) + Info_h.biYpelsPerMeter;
-		Info_h.biYpelsPerMeter = (getc(IN) << 24) + Info_h.biYpelsPerMeter;
-
-		Info_h.biClrUsed = getc(IN);
-		Info_h.biClrUsed = (getc(IN) << 8) + Info_h.biClrUsed;
-		Info_h.biClrUsed = (getc(IN) << 16) + Info_h.biClrUsed;
-		Info_h.biClrUsed = (getc(IN) << 24) + Info_h.biClrUsed;
-
-		Info_h.biClrImportant = getc(IN);
-		Info_h.biClrImportant = (getc(IN) << 8) + Info_h.biClrImportant;
-		Info_h.biClrImportant = (getc(IN) << 16) + Info_h.biClrImportant;
-		Info_h.biClrImportant = (getc(IN) << 24) + Info_h.biClrImportant;
-
-		/* Read the data and store them in the OUT file */
-
-		if (Info_h.biBitCount == 24) {
-			img->x0 = Dim[0];
-			img->y0 = Dim[1];
-			img->x1 =
-				!Dim[0] ? (w - 1) * subsampling_dx + 1 : Dim[0] + (w -
-																													 1) *
-				subsampling_dx + 1;
-			img->y1 =
-				!Dim[1] ? (h - 1) * subsampling_dy + 1 : Dim[1] + (h -
-																													 1) *
-				subsampling_dy + 1;
-			img->numcomps = 3;
-			img->comps =
-				(j2k_comp_t *) malloc(img->numcomps * sizeof(j2k_comp_t));
-			for (i = 0; i < img->numcomps; i++) {
-				img->comps[i].prec = 8;
-				img->comps[i].bpp = 8;
-				img->comps[i].sgnd = 0;
-				img->comps[i].dx = subsampling_dx;
-				img->comps[i].dy = subsampling_dy;
-			}
-			Compo0 = fopen("Compo0", "wb");
-			if (!Compo0) {
-				fprintf(stderr,
-								"\033[0;33mFailed to open Compo0 for writing !\033[0;39m\n");
-			}
-			Compo1 = fopen("Compo1", "wb");
-			if (!Compo1) {
-				fprintf(stderr,
-								"\033[0;33mFailed to open Compo1 for writing !\033[0;39m\n");
-			}
-			Compo2 = fopen("Compo2", "wb");
-			if (!Compo2) {
-				fprintf(stderr,
-								"\033[0;33mFailed to open Compo2 for writing !\033[0;39m\n");
-			}
-
-			/* Place the cursor at the beginning of the image information */
-			fseek(IN, 0, SEEK_SET);
-			fseek(IN, File_h.bfOffBits, SEEK_SET);
-
-			W = Info_h.biWidth;
-			H = Info_h.biHeight;
-			if (Info_h.biWidth % 2)
-				W++;
-
-			RGB = (unsigned char *) malloc(3 * W * H * sizeof(unsigned char));
-
-			fread(RGB, sizeof(unsigned char), 3 * W * H, IN);
-			for (i = 0; i < W * H; i++) {
-				unsigned char R, G, B;
-
-				B =
-					RGB[3 * W * H - ((i * 3) / (3 * W) + 1) * 3 * W +
-							(i * 3) % (W * 3)];
-				G =
-					RGB[3 * W * H - ((i * 3 + 1) / (3 * W) + 1) * 3 * W +
-							(i * 3 + 1) % (W * 3)];
-				R =
-					RGB[3 * W * H - ((i * 3 + 2) / (3 * W) + 1) * 3 * W +
-							(i * 3 + 2) % (W * 3)];
-				if ((i % W < W - 1 && Info_h.biWidth % 2) || !(Info_h.biWidth % 2)) {
-					fprintf(Compo0, "%c", R);
-					fprintf(Compo1, "%c", G);
-					fprintf(Compo2, "%c", B);
-				}
-			}
-			fclose(Compo0);
-			fclose(Compo1);
-			fclose(Compo2);
-			free(RGB);
-		} else if (Info_h.biBitCount == 8 && Info_h.biCompression == 0) {
-			img->x0 = Dim[0];
-			img->y0 = Dim[1];
-			img->x1 =
-				!Dim[0] ? (w - 1) * subsampling_dx + 1 : Dim[0] + (w -
-																													 1) *
-				subsampling_dx + 1;
-			img->y1 =
-				!Dim[1] ? (h - 1) * subsampling_dy + 1 : Dim[1] + (h -
-																													 1) *
-				subsampling_dy + 1;
-
-			table_R = (unsigned char *) malloc(256 * sizeof(unsigned char));
-			table_G = (unsigned char *) malloc(256 * sizeof(unsigned char));
-			table_B = (unsigned char *) malloc(256 * sizeof(unsigned char));
-
-			for (i = 0; i < Info_h.biClrUsed; i++) {
-				table_B[i] = getc(IN);
-				table_G[i] = getc(IN);
-				table_R[i] = getc(IN);
-				getc(IN);
-				if (table_R[i] != table_G[i] && table_R[i] != table_B[i]
-						&& table_G[i] != table_B[i])
-					gray_scale = 0;
-			}
-
-			/* Place the cursor at the beginning of the image information */
-			fseek(IN, 0, SEEK_SET);
-			fseek(IN, File_h.bfOffBits, SEEK_SET);
-
-			W = Info_h.biWidth;
-			H = Info_h.biHeight;
-			if (Info_h.biWidth % 2)
-				W++;
-
-			RGB = (unsigned char *) malloc(W * H * sizeof(unsigned char));
-
-			fread(RGB, sizeof(unsigned char), W * H, IN);
-			if (gray_scale) {
-				img->numcomps = 1;
-				img->comps =
-					(j2k_comp_t *) malloc(img->numcomps * sizeof(j2k_comp_t));
-				img->comps[0].prec = 8;
-				img->comps[0].bpp = 8;
-				img->comps[0].sgnd = 0;
-				img->comps[0].dx = subsampling_dx;
-				img->comps[0].dy = subsampling_dy;
-				Compo0 = fopen("Compo0", "wb");
-				if (!Compo0) {
-					fprintf(stderr,
-									"\033[0;33mFailed to open Compo0 for writing !\033[0;39m\n");
-				}
-				for (i = 0; i < W * H; i++) {
-					if ((i % W < W - 1 && Info_h.biWidth % 2)
-							|| !(Info_h.biWidth % 2))
-						fprintf(Compo0, "%c",
-										table_R[RGB[W * H - ((i) / (W) + 1) * W + (i) % (W)]]);
-				}
-				fclose(Compo0);
-			} else {
-				img->numcomps = 3;
-				img->comps =
-					(j2k_comp_t *) malloc(img->numcomps * sizeof(j2k_comp_t));
-				for (i = 0; i < img->numcomps; i++) {
-					img->comps[i].prec = 8;
-					img->comps[i].bpp = 8;
-					img->comps[i].sgnd = 0;
-					img->comps[i].dx = subsampling_dx;
-					img->comps[i].dy = subsampling_dy;
-				}
-
-				Compo0 = fopen("Compo0", "wb");
-				if (!Compo0) {
-					fprintf(stderr,
-									"\033[0;33mFailed to open Compo0 for writing !\033[0;39m\n");
-				}
-				Compo1 = fopen("Compo1", "wb");
-				if (!Compo1) {
-					fprintf(stderr,
-									"\033[0;33mFailed to open Compo1 for writing !\033[0;39m\n");
-				}
-				Compo2 = fopen("Compo2", "wb");
-				if (!Compo2) {
-					fprintf(stderr,
-									"\033[0;33mFailed to open Compo2 for writing !\033[0;39m\n");
-				}
-
-				for (i = 0; i < W * H; i++) {
-					if ((i % W < W - 1 && Info_h.biWidth % 2)
-							|| !(Info_h.biWidth % 2)) {
-						fprintf(Compo0, "%c",
-										table_R[RGB[W * H - ((i) / (W) + 1) * W + (i) % (W)]]);
-						fprintf(Compo1, "%c",
-										table_G[RGB[W * H - ((i) / (W) + 1) * W + (i) % (W)]]);
-						fprintf(Compo2, "%c",
-										table_B[RGB[W * H - ((i) / (W) + 1) * W + (i) % (W)]]);
-					}
-
-				}
-				fclose(Compo0);
-				fclose(Compo1);
-				fclose(Compo2);
-			}
-			free(RGB);
-
-		} else if (Info_h.biBitCount == 8 && Info_h.biCompression == 1) {
-			img->x0 = Dim[0];
-			img->y0 = Dim[1];
-			img->x1 =
-				!Dim[0] ? (w - 1) * subsampling_dx + 1 : Dim[0] + (w -
-																													 1) *
-				subsampling_dx + 1;
-			img->y1 =
-				!Dim[1] ? (h - 1) * subsampling_dy + 1 : Dim[1] + (h -
-																													 1) *
-				subsampling_dy + 1;
-
-
-
-			table_R = (unsigned char *) malloc(256 * sizeof(unsigned char));
-			table_G = (unsigned char *) malloc(256 * sizeof(unsigned char));
-			table_B = (unsigned char *) malloc(256 * sizeof(unsigned char));
-
-			for (i = 0; i < Info_h.biClrUsed; i++) {
-				table_B[i] = getc(IN);
-				table_G[i] = getc(IN);
-				table_R[i] = getc(IN);
-				getc(IN);
-				if (table_R[i] != table_G[i] && table_R[i] != table_B[i]
-						&& table_G[i] != table_B[i])
-					gray_scale = 0;
-			}
-
-			/* Place the cursor at the beginning of the image information */
-			fseek(IN, 0, SEEK_SET);
-			fseek(IN, File_h.bfOffBits, SEEK_SET);
-
-			if (gray_scale) {
-				img->numcomps = 1;
-				img->comps = (j2k_comp_t *) malloc(sizeof(j2k_comp_t));
-				img->comps[0].prec = 8;
-				img->comps[0].bpp = 8;
-				img->comps[0].sgnd = 0;
-				img->comps[0].dx = subsampling_dx;
-				img->comps[0].dy = subsampling_dy;
-				Compo0 = fopen("Compo0", "wb");
-				if (!Compo0) {
-					fprintf(stderr,
-									"\033[0;33mFailed to open Compo0 for writing !\033[0;39m\n");
-				}
-			} else {
-				img->numcomps = 3;
-				img->comps =
-					(j2k_comp_t *) malloc(img->numcomps * sizeof(j2k_comp_t));
-				for (i = 0; i < img->numcomps; i++) {
-					img->comps[i].prec = 8;
-					img->comps[i].bpp = 8;
-					img->comps[i].sgnd = 0;
-					img->comps[i].dx = subsampling_dx;
-					img->comps[i].dy = subsampling_dy;
-				}
-				Compo0 = fopen("Compo0", "wb");
-				if (!Compo0) {
-					fprintf(stderr,
-									"\033[0;33mFailed to open Compo0 for writing !\033[0;39m\n");
-				}
-				Compo1 = fopen("Compo1", "wb");
-				if (!Compo1) {
-					fprintf(stderr,
-									"\033[0;33mFailed to open Compo1 for writing !\033[0;39m\n");
-				}
-				Compo2 = fopen("Compo2", "wb");
-				if (!Compo2) {
-					fprintf(stderr,
-									"\033[0;33mFailed to open Compo2 for writing !\033[0;39m\n");
-				}
-			}
-
-			RGB =
-				(unsigned char *) malloc(Info_h.biWidth * Info_h.biHeight *
-																 sizeof(unsigned char));
-
-			while (not_end_file) {
-				v = getc(IN);
-				if (v) {
-					v2 = getc(IN);
-					for (i = 0; i < (int) v; i++) {
-						RGB[line * Info_h.biWidth + col] = v2;
-						col++;
-					}
-				} else {
-					v = getc(IN);
-					switch (v) {
-					case 0:
-						col = 0;
-						line++;
-						break;
-					case 1:
-						line++;
-						not_end_file = 0;
-						break;
-					case 2:
-						printf("No Delta supported\n");
-						return 1;
-						break;
-					default:
-						for (i = 0; i < v; i++) {
-							v2 = getc(IN);
-							RGB[line * Info_h.biWidth + col] = v2;
-							col++;
-						}
-						if (v % 2)
-							v2 = getc(IN);
-					}
-				}
-			}
-			if (gray_scale) {
-				for (line = 0; line < Info_h.biHeight; line++)
-					for (col = 0; col < Info_h.biWidth; col++)
-						fprintf(Compo0, "%c",
-										table_R[(int)
-														RGB[(Info_h.biHeight - line -
-																 1) * Info_h.biWidth + col]]);
-				fclose(Compo0);
-			} else {
-				for (line = 0; line < Info_h.biHeight; line++)
-					for (col = 0; col < Info_h.biWidth; col++) {
-						fprintf(Compo0, "%c",
-										table_R[(int)
-														RGB[(Info_h.biHeight - line -
-																 1) * Info_h.biWidth + col]]);
-						fprintf(Compo1, "%c",
-										table_G[(int)
-														RGB[(Info_h.biHeight - line -
-																 1) * Info_h.biWidth + col]]);
-						fprintf(Compo2, "%c",
-										table_B[(int)
-														RGB[(Info_h.biHeight - line -
-																 1) * Info_h.biWidth + col]]);
-					}
-				fclose(Compo0);
-				fclose(Compo1);
-				fclose(Compo2);
-			}
-			free(RGB);
-		} else
-			printf
-				("Other system than 24 bits/pixels or 8 bits (no RLE coding) is not yet implemented [%d]\n",
-				 Info_h.biBitCount);
-
-		fclose(IN);
-		return 1;
-	}
-}
-
-	/* -->> -->> -->> -->>
-
-	   PGX IMAGE FORMAT
-
-	   <<-- <<-- <<-- <<-- */
-
-
-unsigned char readuchar(FILE * f)
-{
-	unsigned char c1;
-	fread(&c1, 1, 1, f);
-	return c1;
-}
-
-unsigned short readushort(FILE * f, int bigendian)
-{
-	unsigned char c1, c2;
-	fread(&c1, 1, 1, f);
-	fread(&c2, 1, 1, f);
-	if (bigendian)
-		return (c1 << 8) + c2;
-	else
-		return (c2 << 8) + c1;
-}
-
-unsigned int readuint(FILE * f, int bigendian)
-{
-	unsigned char c1, c2, c3, c4;
-	fread(&c1, 1, 1, f);
-	fread(&c2, 1, 1, f);
-	fread(&c3, 1, 1, f);
-	fread(&c4, 1, 1, f);
-	if (bigendian)
-		return (c1 << 24) + (c2 << 16) + (c3 << 8) + c4;
-	else
-		return (c4 << 24) + (c3 << 16) + (c2 << 8) + c1;
-}
-
-int pgxtoimage(char *filename, j2k_image_t * img, int tdy,
-							 int subsampling_dx, int subsampling_dy, int Dim[2],
-							 j2k_cp_t cp)
-{
-	FILE *f;
-	int w, h, prec;
-	int i, compno, bandno;
-	char str[256], endian[16];
-	char sign;
-	int bigendian;
-	j2k_comp_t *comp;
-
-	img->numcomps = 1;
-	img->comps = (j2k_comp_t *) malloc(img->numcomps * sizeof(j2k_comp_t));
-	for (compno = 0; compno < img->numcomps; compno++) {
-		FILE *src;
-		char tmp[16];
-		int max = 0;
-		int Y1;
-		comp = &img->comps[compno];
-		sprintf(str, "%s", filename);
-		f = fopen(str, "rb");
-		if (!f) {
-			fprintf(stderr, "Failed to open %s for reading !\n", str);
-			return 0;
-		}
-		if (fscanf(f, "PG %s %c %d %d %d", endian, &sign, &prec, &w, &h) == 5)
-		{
-			fgetc(f);
-			if (!strcmp(endian, "ML"))
-				bigendian = 1;
-			else
-				bigendian = 0;
-			if (compno == 0) {
-				img->x0 = Dim[0];
-				img->y0 = Dim[1];
-				img->x1 =
-					!Dim[0] ? (w - 1) * subsampling_dx + 1 : Dim[0] + (w -
-																														 1) *
-					subsampling_dx + 1;
-				img->y1 =
-					!Dim[1] ? (h - 1) * subsampling_dy + 1 : Dim[1] + (h -
-																														 1) *
-					subsampling_dy + 1;
-			} else {
-				if (w != img->x1 || h != img->y1)
-					return 0;
-			}
-
-			if (sign == '-') {
-				comp->sgnd = 1;
-			} else {
-				comp->sgnd = 0;
-			}
-			comp->prec = prec;
-			comp->dx = subsampling_dx;
-			comp->dy = subsampling_dy;
-			bandno = 1;
-
-			Y1 =
-				cp.ty0 + bandno * cp.tdy <
-				img->y1 ? cp.ty0 + bandno * cp.tdy : img->y1;
-			Y1 -= img->y0;
-
-			sprintf(tmp, "bandtile%d", bandno);	/* bandtile file */
-			src = fopen(tmp, "wb");
-			if (!src) {
-				fprintf(stderr, "failed to open %s for writing !\n", tmp);
-			}
-			for (i = 0; i < w * h; i++) {
-				int v;
-				if (i == Y1 * w / subsampling_dy && tdy != -1) {	/* bandtile is full */
-					fclose(src);
-					bandno++;
-					sprintf(tmp, "bandtile%d", bandno);
-					src = fopen(tmp, "wb");
-					if (!src) {
-						fprintf(stderr, "failed to open %s for writing !\n", tmp);
-					}
-					Y1 =
-						cp.ty0 + bandno * cp.tdy <
-						img->y1 ? cp.ty0 + bandno * cp.tdy : img->y1;
-					Y1 -= img->y0;
-				}
-				if (comp->prec <= 8) {
-					if (!comp->sgnd) {
-						v = readuchar(f);
-					} else {
-						v = (char) readuchar(f);
-					}
-				} else if (comp->prec <= 16) {
-					if (!comp->sgnd) {
-						v = readushort(f, bigendian);
-					} else {
-						v = (short) readushort(f, bigendian);
-					}
-				} else {
-					if (!comp->sgnd) {
-						v = readuint(f, bigendian);
-					} else {
-						v = (int) readuint(f, bigendian);
-					}
-				}
-				if (v > max)
-					max = v;
-				fprintf(src, "%d ", v);
-			}
-		} else {
-			return 0;
-		}
-		fclose(f);
-		fclose(src);
-		comp->bpp = int_floorlog2(max) + 1;
-	}
-	return 1;
-}
-
-/* -->> -->> -->> -->>
-
-  PNM IMAGE FORMAT
-
- <<-- <<-- <<-- <<-- */
-
-int pnmtoimage(char *filename, j2k_image_t * img, int subsampling_dx,
-							 int subsampling_dy, int Dim[2])
-{
-	FILE *f;
-	FILE *Compo0, *Compo1, *Compo2;
-	int w, h;
-	int i;
-	char value;
-	char comment[256];
-
-	f = fopen(filename, "rb");
-	if (!f) {
-		fprintf(stderr,
-						"\033[0;33mFailed to open %s for reading !!\033[0;39m\n",
-						filename);
-		return 0;
-	}
-
-	if (fgetc(f) != 'P')
-		return 0;
-	value = fgetc(f);
-
-	if (value == '2') {
-		fgetc(f);
-		if (fgetc(f) == '#') {
-			fseek(f, 0, SEEK_SET);
-			fscanf(f, "P2\n");
-			fgets(comment, 256, f);
-			fscanf(f, "%d %d\n255", &w, &h);
-		} else {
-			fseek(f, 0, SEEK_SET);
-			fscanf(f, "P2\n%d %d\n255", &w, &h);
-		}
-
-		fgetc(f);
-		img->x0 = Dim[0];
-		img->y0 = Dim[1];
-		img->x1 =
-			!Dim[0] ? (w - 1) * subsampling_dx + 1 : Dim[0] + (w -
-																												 1) *
-			subsampling_dx + 1;
-		img->y1 =
-			!Dim[1] ? (h - 1) * subsampling_dy + 1 : Dim[1] + (h -
-																												 1) *
-			subsampling_dy + 1;
-
-		img->numcomps = 1;
-		img->comps = (j2k_comp_t *) malloc(sizeof(j2k_comp_t));
-		img->comps[0].prec = 8;
-		img->comps[0].bpp = 8;
-		img->comps[0].sgnd = 0;
-		img->comps[0].dx = subsampling_dx;
-		img->comps[0].dy = subsampling_dy;
-
-		Compo0 = fopen("Compo0", "wb");
-		if (!Compo0) {
-			fprintf(stderr,
-							"\033[0;33mFailed to open Compo0 for writing !\033[0;39m\n");
-		}
-		for (i = 0; i < w * h; i++) {
-			unsigned int l;
-			fscanf(f, "%d", &l);
-			fprintf(Compo0, "%c", l);
-		}
-		fclose(Compo0);
-	} else if (value == '5') {
-		fgetc(f);
-		if (fgetc(f) == '#') {
-			fseek(f, 0, SEEK_SET);
-			fscanf(f, "P5\n");
-			fgets(comment, 256, f);
-			fscanf(f, "%d %d\n255", &w, &h);
-		} else {
-			fseek(f, 0, SEEK_SET);
-			fscanf(f, "P5\n%d %d\n255", &w, &h);
-		}
-
-		fgetc(f);
-		img->x0 = Dim[0];
-		img->y0 = Dim[1];
-		img->x1 =
-			!Dim[0] ? (w - 1) * subsampling_dx + 1 : Dim[0] + (w -
-																												 1) *
-			subsampling_dx + 1;
-		img->y1 =
-			!Dim[1] ? (h - 1) * subsampling_dy + 1 : Dim[1] + (h -
-																												 1) *
-			subsampling_dy + 1;
-
-		img->numcomps = 1;
-		img->comps = (j2k_comp_t *) malloc(sizeof(j2k_comp_t));
-		img->comps[0].prec = 8;
-		img->comps[0].bpp = 8;
-		img->comps[0].sgnd = 0;
-		img->comps[0].dx = subsampling_dx;
-		img->comps[0].dy = subsampling_dy;
-		Compo0 = fopen("Compo0", "wb");
-		if (!Compo0) {
-			fprintf(stderr,
-							"\033[0;33mFailed to open Compo0 for writing !\033[0;39m\n");
-		}
-		for (i = 0; i < w * h; i++) {
-			unsigned char l;
-			fread(&l, 1, 1, f);
-			fwrite(&l, 1, 1, Compo0);
-		}
-		fclose(Compo0);
-	} else if (value == '3') {
-		fgetc(f);
-		if (fgetc(f) == '#') {
-			fseek(f, 0, SEEK_SET);
-			fscanf(f, "P3\n");
-			fgets(comment, 256, f);
-			fscanf(f, "%d %d\n255", &w, &h);
-		} else {
-			fseek(f, 0, SEEK_SET);
-			fscanf(f, "P3\n%d %d\n255", &w, &h);
-		}
-
-		fgetc(f);
-		img->x0 = Dim[0];
-		img->y0 = Dim[1];
-		img->x1 =
-			!Dim[0] ? (w - 1) * subsampling_dx + 1 : Dim[0] + (w -
-																												 1) *
-			subsampling_dx + 1;
-		img->y1 =
-			!Dim[1] ? (h - 1) * subsampling_dy + 1 : Dim[1] + (h -
-																												 1) *
-			subsampling_dy + 1;
-		img->numcomps = 3;
-		img->comps = (j2k_comp_t *) malloc(img->numcomps * sizeof(j2k_comp_t));
-		for (i = 0; i < img->numcomps; i++) {
-			img->comps[i].prec = 8;
-			img->comps[i].bpp = 8;
-			img->comps[i].sgnd = 0;
-			img->comps[i].dx = subsampling_dx;
-			img->comps[i].dy = subsampling_dy;
-		}
-		Compo0 = fopen("Compo0", "wb");
-		if (!Compo0) {
-			fprintf(stderr,
-							"\033[0;33mFailed to open Compo0 for writing !\033[0;39m\n");
-		}
-
-		Compo1 = fopen("Compo1", "wb");
-		if (!Compo1) {
-			fprintf(stderr,
-							"\033[0;33mFailed to open Compo1 for writing !\033[0;39m\n");
-		}
-
-		Compo2 = fopen("Compo2", "wb");
-		if (!Compo2) {
-			fprintf(stderr,
-							"\033[0;33mFailed to open Compo2 for writing !\033[0;39m\n");
-		}
-
-		for (i = 0; i < w * h; i++) {
-			unsigned int r, g, b;
-			fscanf(f, "%d", &r);
-			fscanf(f, "%d", &g);
-			fscanf(f, "%d", &b);
-			fprintf(Compo0, "%c", r);
-			fprintf(Compo1, "%c", g);
-			fprintf(Compo2, "%c", b);
-		}
-		fclose(Compo0);
-		fclose(Compo1);
-		fclose(Compo2);
-	} else if (value == '6') {
-		fgetc(f);
-		if (fgetc(f) == '#') {
-			fseek(f, 0, SEEK_SET);
-			fscanf(f, "P6\n");
-			fgets(comment, 256, f);
-			fscanf(f, "%d %d\n255", &w, &h);
-		} else {
-			fseek(f, 0, SEEK_SET);
-			fscanf(f, "P6\n%d %d\n255", &w, &h);
-		}
-
-		fgetc(f);
-		img->x0 = Dim[0];
-		img->y0 = Dim[1];
-		img->x1 =
-			!Dim[0] ? (w - 1) * subsampling_dx + 1 : Dim[0] + (w -
-																												 1) *
-			subsampling_dx + 1;
-		img->y1 =
-			!Dim[1] ? (h - 1) * subsampling_dy + 1 : Dim[1] + (h -
-																												 1) *
-			subsampling_dy + 1;
-		img->numcomps = 3;
-		img->comps = (j2k_comp_t *) malloc(img->numcomps * sizeof(j2k_comp_t));
-		for (i = 0; i < img->numcomps; i++) {
-			img->comps[i].prec = 8;
-			img->comps[i].bpp = 8;
-			img->comps[i].sgnd = 0;
-			img->comps[i].dx = subsampling_dx;
-			img->comps[i].dy = subsampling_dy;
-		}
-		Compo0 = fopen("Compo0", "wb");
-		if (!Compo0) {
-			fprintf(stderr,
-							"\033[0;33mFailed to open Compo0 for writing !\033[0;39m\n");
-		}
-
-		Compo1 = fopen("Compo1", "wb");
-		if (!Compo1) {
-			fprintf(stderr,
-							"\033[0;33mFailed to open Compo1 for writing !\033[0;39m\n");
-		}
-
-		Compo2 = fopen("Compo2", "wb");
-		if (!Compo2) {
-			fprintf(stderr,
-							"\033[0;33mFailed to open Compo2 for writing !\033[0;39m\n");
-		}
-
-		for (i = 0; i < w * h; i++) {
-			unsigned char r, g, b;
-			fread(&r, 1, 1, f);
-			fread(&g, 1, 1, f);
-			fread(&b, 1, 1, f);
-			fwrite(&r, 1, 1, Compo0);
-			fwrite(&g, 1, 1, Compo1);
-			fwrite(&b, 1, 1, Compo2);
-		}
-		fclose(Compo0);
-		fclose(Compo1);
-		fclose(Compo2);
-	} else {
-		return 0;
-	}
-	fclose(f);
-	return 1;
-}
diff --git a/codec/convert.h b/codec/convert.h
deleted file mode 100644
index da66734..0000000
--- a/codec/convert.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (c) 2001-2003, David Janssens
- * Copyright (c) 2002-2003, Yannick Verschueren
- * Copyright (c) 2002-2003,  Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 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 "j2k.h"
-
-int bmptoimage(char *filename, j2k_image_t * img, int subsampling_dx,
-							 int subsampling_dy, int Dim[2]);
-
-int pgxtoimage(char *filename, j2k_image_t * img, int tdy,
-							 int subsampling_dx, int subsampling_dy, int Dim[2],
-							 j2k_cp_t cp);
-
-int pnmtoimage(char *filename, j2k_image_t * img, int subsampling_dx,
-							 int subsampling_dy, int Dim[2]);
diff --git a/codec/image_to_j2k.c b/codec/image_to_j2k.c
deleted file mode 100644
index 6ef2953..0000000
--- a/codec/image_to_j2k.c
+++ /dev/null
@@ -1,733 +0,0 @@
-/*
- * Copyright (c) 2001-2003, David Janssens
- * Copyright (c) 2002-2003, Yannick Verschueren
- * Copyright (c) 2002-2003,  Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 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 <openjpeg.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-#include <string.h>
-#ifndef DONT_HAVE_GETOPT
-#include <getopt.h>
-#else
-#include "compat/getopt.h"
-#endif
-#include "convert.h"
-
-void help_display()
-{
-	printf("HELP\n----\n\n");
-	printf
-		("- the option -help displays the readme.txt file on screen\n\n");
-
-
-	printf("List of parameters for the coder JPEG 2000 :\n");
-	printf("\n");
-	printf
-		("- The markers COD and QCD are writed both of two in the main_header and never appear in the tile_header.  The markers in the main header are : SOC SIZ COD QCD COM.\n");
-	printf("\n");
-	printf
-		("- This coder can encode mega image, a test was made on a 24000x24000 pixels color image.  You need enough disk space memory (twice the original) to encode the image. (i.e. for a 1.5 Gb image you need a minimum of 3Gb of disk memory)\n");
-	printf("\n");
-	printf("REMARKS :\n");
-	printf("---------\n");
-	printf("\n");
-	printf
-		("* the value of rate enter in the code line is the compression factor !\n");
-	printf("exemple :\n");
-	printf("\n");
-	printf
-		("-r 20,10,1 means quality 1 : compress 20x, quality 2 : compress 10x and quality 3 : compress 1x = lossless\n");
-	printf("\n");
-	printf("By default :\n");
-	printf("------------\n");
-	printf("\n");
-	printf(" * lossless\n");
-	printf(" * 1 tile\n");
-	printf(" * size of precinct 2^15 x 2^15 (means 1 precinct)\n");
-	printf(" * size of code-block 64 x 64\n");
-	printf(" * Number of resolution : 6\n");
-	printf(" * No SOP marker in the codestream\n");
-	printf(" * No EPH marker in the codestream\n");
-	printf(" * No sub-sampling in x and y direction\n");
-	printf(" * No mode switch activated\n");
-	printf(" * progression order : LRCP\n");
-	printf(" * No index file\n");
-	printf(" * No ROI upshifted\n");
-	printf(" * No offset of the origin of the image\n");
-	printf(" * No offset of the origin of the tiles\n");
-	printf(" * Reversible DWT 5-3\n");
-	printf("\n");
-	printf("Parameters :\n");
-	printf("------------\n");
-	printf("\n");
-	printf
-		("-i             : source file  (-i source.pnm also *.pgm, *.ppm) required\n");
-	printf("\n");
-	printf
-		("-o             : destination file (-o dest.j2k) required\n");
-	printf("\n");
-	printf
-		("-help          : Display the help information optional\n ");
-	printf("\n");
-	printf
-		("-r             : different rates (-r 20,10,5) optional\n ");
-	printf("\n");
-	printf
-		("-n             : Number of resolution (-n 3) optional\n");
-	printf("\n");
-	printf
-		("-b             : size of code block (-b 32,32) optional\n");
-	printf("\n");
-	printf
-		("-c             : size of precinct (-c 128,128) optional\n");
-	printf("\n");
-	printf
-		("-t             : size of tile (-t 512,512) optional\n");
-	printf("\n");
-	printf
-		("-p             : progression order (-p LRCP) [LRCP, RLCP, RPCL, PCRL, CPRL] optional\n");
-	printf("\n");
-	printf
-		("-s             : subsampling factor (-s 2,2) [-s X,Y] optional\n");
-	printf("\n");
-	printf
-		("-SOP           : write SOP marker before each packet optional\n");
-	printf("\n");
-	printf
-		("-EPH           : write EPH marker after each header packet optional\n");
-	printf("\n");
-	printf
-		("-M             : mode switch (-M 3) [1=BYPASS(LAZY) 2=RESET 4=RESTART(TERMALL) 8=VSC 16=ERTERM(SEGTERM) 32=SEGMARK(SEGSYM)] optional\n");
-	printf
-		("                    for several mode switch you have to add the value of each mode you want\n");
-	printf
-		("                    ex : RESTART(4) + RESET(2) + SEGMARK(32) = -M 38\n");
-	printf("\n");
-	printf
-		("-x             : Create an index file *.Idx (-x index_name.Idx) optional\n");
-	printf("\n");
-	printf
-		("-ROI:c=%%d,U=%%d : quantization indices upshifted for component c=%%d [\%%d = 0,1,2]\n");
-	printf
-		("                 with a value of U=%%d [0 <= %%d <= 37] (i.e. -ROI:c=0,U=25) optional\n");
-	printf("\n");
-	printf
-		("-d             : offset of the origin of the image (-d 150,300) optional\n");
-	printf("\n");
-	printf
-		("-T             : offset of the origin of the tiles (-T 100,75) optional\n");
-	printf("\n");
-	printf
-		("-I             : Use the irreversible DWT 9-7 (-I) optional\n");
-	printf("\n");
-	printf("IMPORTANT :\n");
-	printf("-----------\n");
-	printf("\n");
-	printf("* subsampling bigger than 2 can produce error\n");
-	printf("\n");
-	printf
-		("The index file respect the structure below :\n");
-	printf
-		("---------------------------------------------\n");
-	printf("\n");
-	printf("Image_height Image_width\n");
-	printf("progression order\n");
-	printf("Tiles_size_X Tiles_size_Y\n");
-	printf("Components_nb\n");
-	printf("Layers_nb\n");
-	printf("decomposition_levels\n");
-	printf("Precincts_size_X Precincts_size_Y\n");
-	printf("Main_header_end_position\n");
-	printf("Codestream_size\n");
-	printf("Tile0 start_pos end_Theader end_pos\n");
-	printf("Tile1  ''           ''        ''\n");
-	printf("...\n");
-	printf("TileN  ''           ''        ''\n");
-	printf("Tpacket_0 Tile layer res. comp. prec. start_pos end_pos\n");
-	printf("...\n");
-	printf("Tpacket_M  ''    ''   ''   ''    ''       ''       ''\n");
-}
-
-int give_progression(char progression[4])
-{
-  if (progression[0] == 'L' && progression[1] == 'R' && progression[2] == 'C' && progression[3] == 'P') 
-    {
-      return 0;
-    } else 
-      {
-	if (progression[0] == 'R' && progression[1] == 'L' && progression[2] == 'C' && progression[3] == 'P') 
-	  {
-	    return 1;
-	  } else 
-	    {
-	      if (progression[0] == 'R' && progression[1] == 'P' && progression[2] == 'C' && progression[3] == 'L') 
-		{
-		  return 2;
-		} else 
-		  {
-		    if (progression[0] == 'P' && progression[1] == 'C' && progression[2] == 'R' && progression[3] == 'L') 
-		      {
-			return 3;
-		      } else 
-			{
-			  if (progression[0] == 'C' && progression[1] == 'P' && progression[2] == 'R' && progression[3] == 'L') 
-			    {
-			      return 4;
-			    } else 
-			      {
-				return -1;
-			      }
-			}
-		  }
-	    }
-      }
-}
-
-double dwt_norms_97[4][10] = {
-	{1.000, 1.965, 4.177, 8.403, 16.90, 33.84, 67.69, 135.3, 270.6, 540.9},
-	{2.022, 3.989, 8.355, 17.04, 34.27, 68.63, 137.3, 274.6, 549.0},
-	{2.022, 3.989, 8.355, 17.04, 34.27, 68.63, 137.3, 274.6, 549.0},
-	{2.080, 3.865, 8.307, 17.18, 34.71, 69.59, 139.3, 278.6, 557.2}
-};
-
-int floorlog2(int a)
-{
-	int l;
-	for (l = 0; a > 1; l++) {
-		a >>= 1;
-	}
-	return l;
-}
-
-void encode_stepsize(int stepsize, int numbps, int *expn, int *mant)
-{
-	int p, n;
-	p = floorlog2(stepsize) - 13;
-	n = 11 - floorlog2(stepsize);
-	*mant = (n < 0 ? stepsize >> -n : stepsize << n) & 0x7ff;
-	*expn = numbps - p;
-}
-
-void calc_explicit_stepsizes(j2k_tccp_t * tccp, int prec)
-{
-	int numbands, bandno;
-	numbands = 3 * tccp->numresolutions - 2;
-	for (bandno = 0; bandno < numbands; bandno++) {
-		double stepsize;
-
-		int resno, level, orient, gain;
-		resno = bandno == 0 ? 0 : (bandno - 1) / 3 + 1;
-		orient = bandno == 0 ? 0 : (bandno - 1) % 3 + 1;
-		level = tccp->numresolutions - 1 - resno;
-		gain = tccp->qmfbid == 0 ? 0 : (orient == 0 ? 0 : (orient == 1 || orient == 2 ? 1 : 2));
-		if (tccp->qntsty == J2K_CCP_QNTSTY_NOQNT) {
-			stepsize = 1.0;
-		} else {
-			double norm = dwt_norms_97[orient][level];
-			stepsize = (1 << (gain + 1)) / norm;
-		}
-		encode_stepsize((int) floor(stepsize * 8192.0), prec + gain, &tccp->stepsizes[bandno].expn,
-				&tccp->stepsizes[bandno].mant);
-	}
-}
-
-int main(int argc, char **argv)
-{
-	int len;
-	int NumResolution, numD_min;	/*   NumResolution : number of resolution                     */
-	int Tile_arg;			/*   Tile_arg = 0 (not in argument) ou = 1 (in argument)      */
-	int CSty;			/*   CSty : coding style                                      */
-	int Prog_order;			/*   progression order (default LRCP)                         */
-	char progression[4];
-	int numpocs, numpocs_tile;	/*   Number of progression order change (POC) default 0       */
-	int prcw_init, prch_init;	/*   Initialisation precincts' size                           */
-	int cblockw_init, cblockh_init;	/*   Initialisation codeblocks' size                          */
-	int mode, value;		/*   Mode switch (cblk_style)                                 */
-	int subsampling_dx, subsampling_dy;	/* subsampling value for dx and dy                    */
-	int ROI_compno, ROI_shift;	/*   region of interrest                                      */
-	int Dim[2];			/*   portion of the image coded                               */
-	int TX0, TY0;			/*   tile off-set                                             */
-	j2k_image_t img;
-	j2k_cp_t cp, cp_init;		/*   cp_init is used to initialise in multiple tiles          */
-	j2k_tcp_t *tcp, *tcp_init;	/*   tcp_init is used to initialise in multiple tile          */
-	j2k_poc_t POC[32];		/*   POC : used in case of Progression order change           */
-	j2k_poc_t *tcp_poc;
-	j2k_tccp_t *tccp;
-	int i, tileno, j;
-	char *infile = 0;
-	char *outfile = 0;
-	char *index = 0;
-	char *s, S1, S2, S3;
-	int ir = 0;
-
-	/* default value */
-	/* ------------- */
-	NumResolution = 6;
-	CSty = 0;
-	cblockw_init = 64;
-	cblockh_init = 64;
-	cp.tw = 1;
-	cp.th = 1;
-	img.index_on = 0;
-	Prog_order = 0;
-	numpocs = 0;
-	mode = 0;
-	subsampling_dx = 1;
-	subsampling_dy = 1;
-	ROI_compno = -1;	/* no ROI */
-	ROI_shift = 0;
-	Dim[0] = 0;
-	Dim[1] = 0;
-	TX0 = 0;
-	TY0 = 0;
-	cp.comment = NULL;
-	cp.disto_alloc = 0;
-	cp.fixed_alloc = 0;
-	/* img.PPT=0; */
-
-	Tile_arg = 0;
-	cp_init.tcps = (j2k_tcp_t *) malloc(sizeof(j2k_tcp_t));	/* initialisation if only one tile */
-	tcp_init = &cp_init.tcps[0];
-	tcp_init->numlayers = 0;
-
-	while (1) {
-		int c =
-			getopt(argc, argv, "i:o:r:q:t:n:c:b:x:p:s:d:h:P:S:E:M:R:T:C:I");
-		if (c == -1)
-			break;
-		switch (c) {
-		case 'i':	/* IN fill */
-			infile = optarg;
-			s = optarg;
-			while (*s) {
-				s++;
-			}
-			s--;
-			S3 = *s;
-			s--;
-			S2 = *s;
-			s--;
-			S1 = *s;
-
-			if ((S1 == 'p' && S2 == 'g' && S3 == 'x') || (S1 == 'P' && S2 == 'G' && S3 == 'X')) {
-				cp.image_type = 0;
-				break;
-			}
-
-			if ((S1 == 'p' && S2 == 'n' && S3 == 'm')|| (S1 == 'P' && S2 == 'N' && S3 == 'M') 
-			    || (S1 == 'p' && S2 == 'g' && S3 == 'm') || (S1 == 'P' && S2 == 'G' && S3 == 'M') 
-			    || (S1 == 'P' && S2 == 'P' && S3 == 'M') || (S1 == 'p' && S2 == 'p' && S3 == 'm')) {
-				cp.image_type = 1;
-				break;
-			}
-
-			if ((S1 == 'b' && S2 == 'm' && S3 == 'p') || (S1 == 'B' && S2 == 'M' && S3 == 'P')) {
-				cp.image_type = 2;
-				break;
-			}
-			fprintf(stderr, "!! Unrecognized format for infile : %c%c%c [accept only *.pnm, *.pgm, *.ppm, *.pgx or *.bmp] !!\n\n",S1,S2,S3);
-			return 1;
-			break;
-			/* ----------------------------------------------------- */
-		case 'o':	/* OUT fill */
-			outfile = optarg;
-			break;
-			/* ----------------------------------------------------- */
-		case 'r':	/* rates rates/distorsion*/
-			s = optarg;
-			while (sscanf(s, "%d", &tcp_init->rates[tcp_init->numlayers]) == 1) {
-				tcp_init->numlayers++;
-				while (*s && *s != ',') {
-					s++;
-				}
-				if (!*s)
-					break;
-				s++;
-			}
-			cp.disto_alloc = 1;
-			cp.matrice = NULL;
-			break;
-			/* ----------------------------------------------------- */
-		case 'q':	/* rates fixed */
-		  s=optarg;
-		  sscanf(s, "%d",&tcp_init->numlayers);
-		  s++;
-		  if (tcp_init->numlayers>9) s++;
-		  cp.matrice=(int*)malloc(tcp_init->numlayers*NumResolution*3*sizeof(int));
-		  s=s+2;
-		  for(i=0;i<tcp_init->numlayers;i++)
-		    {
-		      tcp_init->rates[i]=1;
-		      sscanf(s, "%d,", &cp.matrice[i*NumResolution*3]);
-		      s+=2;
-		      if (cp.matrice[i*NumResolution*3]>9) s++;
-		      cp.matrice[i*NumResolution*3+1]=0;
-		      cp.matrice[i*NumResolution*3+2]=0;
-		      for (j=1;j<NumResolution;j++)
-			{
-			  sscanf(s, "%d,%d,%d", &cp.matrice[i*NumResolution*3+j*3+0],&cp.matrice[i*NumResolution*3+j*3+1],&cp.matrice[i*NumResolution*3+j*3+2]);
-			  s+=6;
-			  if (cp.matrice[i*NumResolution*3+j*3]>9) s++;
-			  if (cp.matrice[i*NumResolution*3+j*3+1]>9) s++;
-			  if (cp.matrice[i*NumResolution*3+j*3+2]>9) s++;  
-			}
-		      if (i<tcp_init->numlayers-1) s++;
-		    }
-		  cp.fixed_alloc=1;
-		  break;
-		        /* ----------------------------------------------------- */
-		case 't':	/* tiles */
-			sscanf(optarg, "%d,%d", &cp.tdx, &cp.tdy);
-			Tile_arg = 1;
-			break;
-			/* ----------------------------------------------------- */
-		case 'n':	/* resolution */
-			sscanf(optarg, "%d", &NumResolution);
-			break;
-			/* ----------------------------------------------------- */
-		case 'c':	/* precinct dimension */
-			sscanf(optarg, "%d,%d", &prcw_init, &prch_init);
-			CSty |= 0x01;
-			break;
-			/* ----------------------------------------------------- */
-		case 'b':	/* code-block dimension */
-			sscanf(optarg, "%d,%d", &cblockw_init, &cblockh_init);
-			if (cblockw_init * cblockh_init > 4096 || cblockw_init > 1024
-					|| cblockw_init < 4 || cblockh_init > 1024 || cblockh_init < 4) {
-				fprintf(stderr,"!! Size of code_block error (option -b) !!\n\nRestriction :\n    * width*height<=4096\n    * 4<=width,height<= 1024\n\n");
-				return 1;
-			}
-			break;
-			/* ----------------------------------------------------- */
-		case 'x':	/* creation of index file */
-		        index = optarg;
-			img.index_on = 1;
-			break;
-			/* ----------------------------------------------------- */
-		case 'p':	/* progression order */
-		        s = optarg;
-		        for (i=0; i<4; i++)
-			  {
-			    progression[i] = *s;
-			    s++;
-			  }
-			Prog_order = give_progression(progression);
-			
-		        if (Prog_order == -1) {
-		          fprintf(stderr,"Unrecognized progression order [LRCP, RLCP, RPCL, PCRL, CPRL] !!\n");
-		          return 1;
-			}
-			break;
-			/* ----------------------------------------------------- */
-		case 's':	/* subsampling factor */
-			if (sscanf(optarg, "%d,%d", &subsampling_dx, &subsampling_dy) != 2) {
-				fprintf(stderr,"'-s' sub-sampling argument error !  [-s dx,dy]\n");
-				return 1;
-			}
-			break;
-			/* ----------------------------------------------------- */
-		case 'd':	/* coordonnate of the reference grid */
-			if (sscanf(optarg, "%d,%d", &Dim[0], &Dim[1]) != 2) {
-				fprintf(stderr,"-d 'coordonnate of the reference grid' argument error !! [-d x0,y0]\n");
-				return 1;
-			}
-			break;
-			/* ----------------------------------------------------- */
-		case 'h':	/* Display an help description */
-			help_display();
-			return 0;
-			break;
-			/* ----------------------------------------------------- */
-		case 'P':	/* POC */
-			fprintf(stderr, "/----------------------------------\\\n");
-			fprintf(stderr, "|  POC option not fully tested !!  |\n");
-			fprintf(stderr, "\\----------------------------------/\n");
-
-			s = optarg;
-			while (sscanf(s, "T%d=%d,%d,%d,%d,%d,%s", &POC[numpocs].tile,
-				      &POC[numpocs].resno0, &POC[numpocs].compno0,
-				      &POC[numpocs].layno1, &POC[numpocs].resno1,
-				      &POC[numpocs].compno1, POC[numpocs].progorder) == 7) {
-				POC[numpocs].prg = give_progression(POC[numpocs].progorder);
-				/* POC[numpocs].tile; */
-				numpocs++;
-				while (*s && *s != '/') {
-					s++;
-				}
-				if (!*s)
-					break;
-				s++;
-			}
-			break;
-			/* ------------------------------------------------------ */
-		case 'S':	/* SOP marker */
-			CSty |= 0x02;
-			break;
-			/* ------------------------------------------------------ */
-		case 'E':	/* EPH marker */
-			CSty |= 0x04;
-			break;
-			/* ------------------------------------------------------ */
-		case 'M':	/* Mode switch pas tous au point !! */
-			if (sscanf(optarg, "%d", &value) == 1) {
-				for (i = 0; i <= 5; i++) {
-					int cache = value & (1 << i);
-					if (cache)
-						mode |= (1 << i);
-				}
-			}
-			break;
-			/* ------------------------------------------------------ */
-		case 'R':	/* ROI */
-			if (sscanf(optarg, "OI:c=%d,U=%d", &ROI_compno, &ROI_shift) != 2) {
-				fprintf(stderr,"ROI error !! [-ROI:c='compno',U='shift']\n");
-				return 1;
-			}
-			break;
-			/* ------------------------------------------------------ */
-		case 'T':	/* Tile offset */
-			if (sscanf(optarg, "%d,%d", &TX0, &TY0) != 2) {
-				fprintf(stderr,"-T 'tile offset' argument error !! [-T X0,Y0]");
-				return 1;
-			}
-			break;
-			/* ------------------------------------------------------ */
-		case 'C':	/* Add a comment */
-			cp.comment = optarg;
-			break;
-			/* ------------------------------------------------------ */
-		case 'I':	/* reversible or not */
-			ir = 1;
-			break;
-			/* ------------------------------------------------------ */
-		default:
-			return 1;
-		}
-	}
-
-	cp.tx0 = TX0;
-	cp.ty0 = TY0;
-
-	/* Error messages */
-	/* -------------- */
-	if (!infile || !outfile) {
-		fprintf(stderr,	"usage: pnmtoj2k -i pnm-file -o j2k-file\n");
-		return 1;
-	}
-
-	if (cp.disto_alloc & cp.fixed_alloc) {
-		fprintf(stderr,	"Error: option -r and -q can not be used together !!\n");
-		return 1;
-	}
-
-	/* if no rate entered, lossless by default */
-	if (tcp_init->numlayers == 0) {
-		tcp_init->rates[tcp_init->numlayers] = 1;
-		tcp_init->numlayers++;
-		cp.disto_alloc = 1;
-	}
-
-	if (TX0 > Dim[0] || TY0 > Dim[1]) {
-		fprintf(stderr,	"Error: Tile offset dimension is unnappropriate --> TX0(%d)<=IMG_X0(%d) TYO(%d)<=IMG_Y0(%d) \n",
-			TX0, Dim[0], TY0, Dim[1]);
-		return 1;
-	}
-
-	for (i = 0; i < numpocs; i++) {
-		if (POC[i].prg == -1) {
-			fprintf(stderr,	"Unrecognized progression order in option -P (POC n %d) [LRCP, RLCP, RPCL, PCRL, CPRL] !!\n",
-				i + 1);
-		}
-	}
-
-	switch (cp.image_type) {
-	case 0:
-		if (Tile_arg) {
-			if (!pgxtoimage(infile, &img, cp.tdy, subsampling_dx, subsampling_dy, Dim, cp)) {
-				fprintf(stderr, "not a pgx file\n");
-				return 1;
-			}
-		} else {
-			if (!pgxtoimage(infile, &img, -1, subsampling_dx, subsampling_dy, Dim, cp)) {
-				fprintf(stderr, " not a pgx file\n");
-				return 1;
-			}
-		}
-		break;
-
-	case 1:
-		if (!pnmtoimage(infile, &img, subsampling_dx, subsampling_dy, Dim)) {
-			fprintf(stderr, " not a pnm file\n");
-			return 1;
-		}
-		break;
-
-	case 2:
-		if (!bmptoimage(infile, &img, subsampling_dx, subsampling_dy, Dim)) {
-			fprintf(stderr, " not a bmp file\n");
-			return 1;
-		}
-		break;
-	}
-	/* to respect profile - 0 */
-	/* ---------------------- */
-	numD_min = 0;
-	/*   while (int_ceildiv(img.x1,(1<<numD_min))-int_ceildiv(img.x0,(1<<numD_min))>120 || int_ceildiv(img.y1,(1<<numD_min))-int_ceildiv(img.y0,(1<<numD_min))>160) numD_min++;
-	   if ((numD_min+1)>NumResolution)
-	   {
-	   fprintf(stderr,"\n********************************************************************************\n\n");
-	   fprintf(stderr,  "In view to respect Profile-0, the number of resolution used is %d in place of %d\n\n",numD_min+1,NumResolution);
-	   fprintf(stderr,  "********************************************************************************\n\n");
-	   NumResolution=numD_min+1;
-	   } */
-
-	if (Tile_arg == 1) {
-		cp.tw = int_ceildiv(img.x1 - cp.tx0, cp.tdx);
-		cp.th = int_ceildiv(img.y1 - cp.ty0, cp.tdy);
-	} else {
-		cp.tdx = img.x1 - cp.tx0;
-		cp.tdy = img.y1 - cp.ty0;
-	}
-
-	/* Initialization for PPM marker */
-	cp.ppm=0;
-	cp.ppm_data=NULL;
-	cp.ppm_previous=0;
-	cp.ppm_store=0;
-
-	/* Init the mutiple tiles */
-	/* ---------------------- */
-	cp.tcps = (j2k_tcp_t *) malloc(cp.tw * cp.th * sizeof(j2k_tcp_t));
-
-	for (tileno = 0; tileno < cp.tw * cp.th; tileno++) {
-		tcp = &cp.tcps[tileno];
-		tcp->numlayers = tcp_init->numlayers;
-		for (j = 0; j < tcp->numlayers; j++) {
-			tcp->rates[j] = tcp_init->rates[j];
-		}
-		tcp->csty = CSty;
-		tcp->prg = Prog_order;
-		tcp->mct = img.numcomps == 3 ? 1 : 0;
-		tcp->ppt = 0;
-		tcp->ppt_data=NULL; 
-		tcp->ppt_store=0;
-
-		numpocs_tile = 0;
-		tcp->POC=0;
-		if (numpocs) {
-		  /* intialisation of POC */
-		  tcp->POC=1;
-		  for (i = 0; i < numpocs; i++) {
-				if (tileno == POC[i].tile - 1 || POC[i].tile == -1) {
-					tcp_poc = &tcp->pocs[numpocs_tile];
-					tcp_poc->resno0 = POC[numpocs_tile].resno0;
-					tcp_poc->compno0 = POC[numpocs_tile].compno0;
-					tcp_poc->layno1 = POC[numpocs_tile].layno1;
-					tcp_poc->resno1 = POC[numpocs_tile].resno1;
-					tcp_poc->compno1 = POC[numpocs_tile].compno1;
-					tcp_poc->prg = POC[numpocs_tile].prg;
-					tcp_poc->tile = POC[numpocs_tile].tile;
-					numpocs_tile++;
-				}
-			}
-		}
-		tcp->numpocs = numpocs_tile;
-		tcp->tccps = (j2k_tccp_t *) malloc(img.numcomps * sizeof(j2k_tccp_t));
-
-		for (i = 0; i < img.numcomps; i++) {
-			tccp = &tcp->tccps[i];
-			tccp->csty = CSty & 0x01;	/* 0 => one precinct || 1 => custom precinct  */
-			tccp->numresolutions = NumResolution;
-			tccp->cblkw = int_floorlog2(cblockw_init);
-			tccp->cblkh = int_floorlog2(cblockh_init);
-			tccp->cblksty = mode;
-			tccp->qmfbid = ir ? 0 : 1;
-			tccp->qntsty = ir ? J2K_CCP_QNTSTY_SEQNT : J2K_CCP_QNTSTY_NOQNT;
-			tccp->numgbits = 2;
-			if (i == ROI_compno)
-				tccp->roishift = ROI_shift;
-			else
-				tccp->roishift = 0;
-			if (CSty & J2K_CCP_CSTY_PRT) {
-
-				for (j = 0; j < tccp->numresolutions; j++) {
-					int size_prcw, size_prch;
-					size_prcw = prcw_init >> (tccp->numresolutions - j - 1);
-					size_prch = prch_init >> (tccp->numresolutions - j - 1);
-					if (size_prcw < 1) {
-						tccp->prcw[j] = 1;
-					} else {
-						tccp->prcw[j] =
-							int_floorlog2(prcw_init >> (tccp->numresolutions - j - 1));
-					}
-					if (size_prch < 1) {
-						tccp->prch[j] = 1;
-					} else {
-						tccp->prch[j] =
-							int_floorlog2(prch_init >> (tccp->numresolutions - j - 1));
-					}
-				}
-			} else {
-				for (j = 0; j < tccp->numresolutions; j++) {
-					tccp->prcw[j] = 15;
-					tccp->prch[j] = 15;
-				}
-			}
-			calc_explicit_stepsizes(tccp, img.comps[i].prec);
-		}
-	}
-
-	len = j2k_encode(&img, &cp, outfile, cp.tdx * cp.tdy * 2, index);
-	if (len == 0) {
-		fprintf(stderr, "failed to encode image\n");
-		return 1;
-	}
-
-	/* Remove the temporary files */
-	/* -------------------------- */
-	if (cp.image_type) { /* PNM PGM PPM */
-		for (i = 0; i < img.numcomps; i++) {
-			char tmp;
-			sprintf(&tmp, "Compo%d", i);
-			if (remove(&tmp) == -1) {
-				fprintf(stderr, "failed to kill %s file !\n", &tmp);
-			}
-		}
-	} else { /* PGX */
-		for (i = 0; i < cp.th; i++) {
-			char tmp;
-			sprintf(&tmp, "bandtile%d", i + 1);
-
-			if (remove(&tmp) == -1) {
-				fprintf(stderr, "failed to kill %s file !\n", &tmp);
-			}
-		}
-	}
-
-	return 0;
-}
diff --git a/codec/j2k_to_image.c b/codec/j2k_to_image.c
deleted file mode 100644
index 5914bcc..0000000
--- a/codec/j2k_to_image.c
+++ /dev/null
@@ -1,376 +0,0 @@
-/* Copyright (c) 2001 David Janssens
- * Copyright (c) 2002-2003 Yannick Verschueren
- * Copyright (c) 2002-2003 Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 
- * 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 <openjpeg.h>
-#include <stdio.h>
-#include <stdlib.h>
-//#include <unistd.h>
-
-int ceildiv(int a, int b)
-{
-	return (a + b - 1) / b;
-}
-
-int main(int argc, char **argv)
-{
-	FILE *f;
-	char *src, *src_name;
-	char *dest, S1, S2, S3;
-	int len;
-	j2k_image_t *img;
-	j2k_cp_t *cp;
-	int w, h, max;
-	int i, image_type = -1, compno;
-	int adjust;
-
-	if (argc < 3) {
-		fprintf(stderr, "usage: %s j2k-file pnm-file\n", argv[0]);
-		return 1;
-	}
-
-	f = fopen(argv[1], "rb");
-	if (!f) {
-		fprintf(stderr, "failed to open %s for reading\n", argv[1]);
-		return 1;
-	}
-
-	dest = argv[2];
-
-	while (*dest) {
-		dest++;
-	}
-	dest--;
-	S3 = *dest;
-	dest--;
-	S2 = *dest;
-	dest--;
-	S1 = *dest;
-
-	if ((S1 == 'p' && S2 == 'g' && S3 == 'x') || (S1 == 'P' && S2 == 'G' && S3 == 'X')) {
-		image_type = 0;
-	}
-
-	if ((S1 == 'p' && S2 == 'n' && S3 == 'm')|| (S1 == 'P' && S2 == 'N' && S3 == 'M') || 
-	    (S1 == 'p' && S2 == 'g' && S3 == 'm')|| (S1 == 'P' && S2 == 'G' && S3 == 'M') || 
-	    (S1 == 'P' && S2 == 'P' && S3 == 'M')|| (S1 == 'p' && S2 == 'p' && S3 == 'm')) {
-		image_type = 1;
-	}
-
-	if ((S1 == 'b' && S2 == 'm' && S3 == 'p') || (S1 == 'B' && S2 == 'M' && S3 == 'P')) {
-		image_type = 2;
-	}
-
-	if (image_type == -1) {
-		fprintf(stderr,	"!! Unrecognized format for infile : %c%c%c [accept only *.pnm, *.pgm, *.ppm, *.pgx or *.bmp] !!\n\n",S1,S2,S3);
-		return 1;
-	}
-
-	fseek(f, 0, SEEK_END);
-	len = ftell(f);
-	fseek(f, 0, SEEK_SET);
-	src = (char *) malloc(len);
-	fread(src, 1, len, f);
-	fclose(f);
-
-	src_name=argv[1];
-	while (*src_name) {
-		src_name++;
-	}
-	src_name--;
-	S3 = *src_name;
-	src_name--;
-	S2 = *src_name;
-	src_name--;
-	S1 = *src_name;
-
-	if (S1 == 'j' && S2 == '2' && S3 == 'k')
-	  {
-	    if (!j2k_decode(src, len, &img, &cp)) {
-	      fprintf(stderr, "j2k_to_image: failed to decode image!\n");
-	      return 1;
-	    }
-	  }
-	else
-	  {
-	    if (S1 == 'j' && S2 == 'p' && S3 == 't')
-	      { 
-		if (!j2k_decode_jpt_stream(src, len, &img, &cp)) {
-		  fprintf(stderr, "j2k_to_image: failed to decode image!\n");
-		  return 1;
-		}
-	      }
-	    else
-	      {
-		fprintf(stderr,"j2k_to_image : Unknown format image *.%c%c%c [only *.j2k or *.jpt]!! \n",S1,S2,S3);
-		return 1;
-	      }
-	  }
-
-	free(src);
-	/* ------------------  CREATE OUT IMAGE WITH THE RIGHT FORMAT ----------------------- */
-
-	/* ---------------------------- / */
-	/* /                            / */
-	/* /  FORMAT : PNM, PGM or PPM  / */
-	/* /                            / */
-	/* ---------------------------- / */
-	
-	switch (image_type)
-	  {	
-	  case 1: /* PNM PGM PPM*/
-	    if (img->numcomps == 3 && img->comps[0].dx == img->comps[1].dx
-		&& img->comps[1].dx == img->comps[2].dx
-		&& img->comps[0].dy == img->comps[1].dy
-		&& img->comps[1].dy == img->comps[2].dy
-		&& img->comps[0].prec == img->comps[1].prec
-		&& img->comps[1].prec == img->comps[2].prec) 
-	      {
-		f = fopen(argv[2], "wb");
-		w = ceildiv(img->x1 - img->x0, img->comps[0].dx);
-		h = ceildiv(img->y1 - img->y0, img->comps[0].dy);
-		//max = (1 << img->comps[0].prec) - 1;
-		max =img->comps[0].prec>8? 255:(1 << img->comps[0].prec) - 1;
-		fprintf(f, "P6\n%d %d\n%d\n", w, h, max);
-		adjust=img->comps[0].prec>8?img->comps[0].prec-8:0;
-		for (i = 0; i < w * h; i++) 
-		  {
-		    char r, g, b;
-		    r = img->comps[0].data[i];
-		    r+=(img->comps[0].sgnd? 1 << (img->comps[0].prec-1):0);
-		    r=r>>adjust;			 
-		    
-		    g = img->comps[1].data[i];
-		    g+=(img->comps[1].sgnd? 1 << (img->comps[1].prec-1):0);
-		    g=g>>adjust;
-		    
-		    b = img->comps[2].data[i];
-		    b+=(img->comps[2].sgnd? 1 << (img->comps[2].prec-1):0);
-		    b=b>>adjust;
-		    
-		    fprintf(f, "%c%c%c", r, g, b);
-		  }
-		fclose(f);
-	      } else 
-		{ 
-		  for (compno = 0; compno < img->numcomps; compno++) 
-		    {
-		      char name[256];
-		      if (img->numcomps > 1) {
-			sprintf(name, "%d.%s", compno, argv[2]);
-		      } else 
-			{
-			  sprintf(name, "%s", argv[2]);
-			}
-		      f = fopen(name, "wb");
-		      w = ceildiv(img->x1 - img->x0, img->comps[compno].dx);
-		      h = ceildiv(img->y1 - img->y0, img->comps[compno].dy);
-		      max =img->comps[compno].prec>8? 255:(1 << img->comps[compno].prec) - 1;
-		      fprintf(f, "P5\n%d %d\n%d\n", w, h, max);
-		      adjust=img->comps[compno].prec>8?img->comps[compno].prec-8:0;
-		      for (i = 0; i < w * h; i++) 
-			{
-			  char l;
-			  l = img->comps[compno].data[i];
-			  l+=(img->comps[compno].sgnd? 1 << (img->comps[compno].prec-1):0);
-			  l=l>>adjust;
-			  fprintf(f, "%c", l);
-			}
-		      fclose(f);
-		    }
-		}
-	    break ;
-	    
-	    /* ------------------------ / */
-	    /* /                        / */
-	    /* /     FORMAT : PGX       / */
-	    /* /                        / */
-	    /* /----------------------- / */
-	  case 0: /* PGX */
-	    for (compno = 0; compno < img->numcomps; compno++) 
-	      {
-		j2k_comp_t *comp = &img->comps[compno];
-		char name[256];
-		if (img->numcomps>1)
-		  sprintf(name, "%d_%s", compno, argv[2]);
-		else
-		  sprintf(name, "%s", argv[2]);
-		f = fopen(name, "wb");
-		w = ceildiv(img->x1 - img->x0, comp->dx);
-		h = ceildiv(img->y1 - img->y0, comp->dy);
-		fprintf(f, "PG LM %c %d %d %d\n", comp->sgnd ? '-' : '+', comp->prec, w, h);
-		for (i = 0; i < w * h; i++) 
-		  {
-		    int v = img->comps[compno].data[i];
-		    if (comp->prec <= 8) 
-		      {
-			char c = (char) v;
-			fwrite(&c, 1, 1, f);
-		      } else if (comp->prec <= 16) 
-			{
-			  short s = (short) v;
-			  fwrite(&s, 2, 1, f);
-			} else 
-			  {
-			    fwrite(&v, 4, 1, f);
-			  }
-		  }
-		fclose(f);
-	      }
-	    break ;
-	    
-	    /* ------------------------ / */
-	    /* /                        / */
-	    /* /     FORMAT : BMP       / */
-	    /* /                        / */
-	    /* /----------------------- / */
-	    
-	  case 2:  /* BMP */
-	    if (img->numcomps == 3 && img->comps[0].dx == img->comps[1].dx
-		&& img->comps[1].dx == img->comps[2].dx
-		&& img->comps[0].dy == img->comps[1].dy
-		&& img->comps[1].dy == img->comps[2].dy
-		&& img->comps[0].prec == img->comps[1].prec
-		&& img->comps[1].prec == img->comps[2].prec) 
-	      {
-		/* -->> -->> -->> -->>
-		   
-		   24 bits color
-		   
-		   <<-- <<-- <<-- <<-- */
-		
-		f = fopen(argv[2], "wb");
-		w = ceildiv(img->x1 - img->x0, img->comps[0].dx);
-		h = ceildiv(img->y1 - img->y0, img->comps[0].dy);
-		
-		fprintf(f, "BM");
-		
-		/* FILE HEADER */
-		/* ------------- */
-		fprintf(f, "%c%c%c%c",
-			(unsigned char) (h * w * 3 + 3 * h * (w % 2) + 54) & 0xff,
-			(unsigned char) ((h * w * 3 + 3 * h * (w % 2) + 54) >> 8) & 0xff,
-			(unsigned char) ((h * w * 3 + 3 * h * (w % 2) + 54) >> 16) & 0xff,
-			(unsigned char) ((h * w * 3 + 3 * h * (w % 2) + 54) >> 24) & 0xff);
-		fprintf(f, "%c%c%c%c", (0) & 0xff, ((0) >> 8) & 0xff, ((0) >> 16) & 0xff, ((0) >> 24) & 0xff);
-		fprintf(f, "%c%c%c%c", (54) & 0xff, ((54) >> 8) & 0xff, ((54) >> 16) & 0xff, ((54) >> 24) & 0xff);
-		
-		/* INFO HEADER   */
-		/* ------------- */
-		fprintf(f, "%c%c%c%c", (40) & 0xff, ((40) >> 8) & 0xff, ((40) >> 16) & 0xff, ((40) >> 24) & 0xff);
-		fprintf(f, "%c%c%c%c", (unsigned char) ((w) & 0xff),(unsigned char) ((w) >> 8) & 0xff,
-			(unsigned char) ((w) >> 16) & 0xff, (unsigned char) ((w) >> 24) & 0xff);
-		fprintf(f, "%c%c%c%c", (unsigned char) ((h) & 0xff), (unsigned char) ((h) >> 8) & 0xff,
-			(unsigned char) ((h) >> 16) & 0xff, (unsigned char) ((h) >> 24) & 0xff);
-		fprintf(f, "%c%c", (1) & 0xff, ((1) >> 8) & 0xff);
-		fprintf(f, "%c%c", (24) & 0xff, ((24) >> 8) & 0xff);
-		fprintf(f, "%c%c%c%c", (0) & 0xff, ((0) >> 8) & 0xff, ((0) >> 16) & 0xff, ((0) >> 24) & 0xff);
-		fprintf(f, "%c%c%c%c", (unsigned char) (3 * h * w + 3 * h * (w % 2)) & 0xff,
-			(unsigned char) ((h * w * 3 + 3 * h * (w % 2)) >> 8) & 0xff,
-			(unsigned char) ((h * w * 3 + 3 * h * (w % 2)) >> 16) & 0xff,
-			(unsigned char) ((h * w * 3 + 3 * h * (w % 2)) >> 24) & 0xff);
-		fprintf(f, "%c%c%c%c", (7834) & 0xff, ((7834) >> 8) & 0xff, ((7834) >> 16) & 0xff, ((7834) >> 24) & 0xff);
-		fprintf(f, "%c%c%c%c", (7834) & 0xff, ((7834) >> 8) & 0xff, ((7834) >> 16) & 0xff, ((7834) >> 24) & 0xff);
-		fprintf(f, "%c%c%c%c", (0) & 0xff, ((0) >> 8) & 0xff, ((0) >> 16) & 0xff, ((0) >> 24) & 0xff);
-		fprintf(f, "%c%c%c%c", (0) & 0xff, ((0) >> 8) & 0xff, ((0) >> 16) & 0xff, ((0) >> 24) & 0xff);
-		
-		for (i = 0; i < w * h; i++) 
-		  {
-		    unsigned char R, G, B;
-		    
-		    R = img->comps[0].data[w * h - ((i) / (w) + 1) * w + (i) % (w)];
-		    G = img->comps[1].data[w * h - ((i) / (w) + 1) * w + (i) % (w)];
-		    B = img->comps[2].data[w * h - ((i) / (w) + 1) * w + (i) % (w)];
-		    fprintf(f, "%c%c%c", B, G, R);
-		    if (((i + 1) % w == 0 && w % 2))
-		      fprintf(f, "%c%c%c", (0) & 0xff, ((0) >> 8) & 0xff, ((0) >> 16) & 0xff);
-		  }
-		fclose(f);
-	      } else 	
-		{   /* Gray-scale */
-		  
-		  /* -->> -->> -->> -->>
-		     
-		     8 bits non code (Gray scale)
-		     
-		     <<-- <<-- <<-- <<-- */
-		  f = fopen(argv[2], "wb");
-		  w = ceildiv(img->x1 - img->x0, img->comps[0].dx);
-		  h = ceildiv(img->y1 - img->y0, img->comps[0].dy);
-		  
-		  fprintf(f, "BM");
-		  
-		  /* FILE HEADER */
-		  /* ------------- */
-		  fprintf(f, "%c%c%c%c",
-			  (unsigned char) (h * w + 54 + 1024 + h * (w % 2)) & 0xff,
-			  (unsigned char) ((h * w + 54 + 1024 + h * (w % 2)) >> 8) & 0xff,
-			  (unsigned char) ((h * w + 54 + 1024 + h * (w % 2)) >> 16) & 0xff,
-			  (unsigned char) ((h * w + 54 + 1024 + w * (w % 2)) >> 24) & 0xff);
-		  fprintf(f, "%c%c%c%c", (0) & 0xff, ((0) >> 8) & 0xff, ((0) >> 16) & 0xff, ((0) >> 24) & 0xff);
-		  fprintf(f, "%c%c%c%c", (54 + 1024) & 0xff, ((54 + 1024) >> 8) & 0xff,
-			  ((54 + 1024) >> 16) & 0xff, ((54 + 1024) >> 24) & 0xff);
-		  
-		  /* INFO HEADER */
-		  /* ------------- */
-		  fprintf(f, "%c%c%c%c", (40) & 0xff, ((40) >> 8) & 0xff, ((40) >> 16) & 0xff, ((40) >> 24) & 0xff);
-		  fprintf(f, "%c%c%c%c", (unsigned char) ((w) & 0xff), (unsigned char) ((w) >> 8) & 0xff,
-			  (unsigned char) ((w) >> 16) & 0xff, (unsigned char) ((w) >> 24) & 0xff);
-		  fprintf(f, "%c%c%c%c", (unsigned char) ((h) & 0xff), (unsigned char) ((h) >> 8) & 0xff,
-			  (unsigned char) ((h) >> 16) & 0xff, (unsigned char) ((h) >> 24) & 0xff);
-		  fprintf(f, "%c%c", (1) & 0xff, ((1) >> 8) & 0xff);
-		  fprintf(f, "%c%c", (8) & 0xff, ((8) >> 8) & 0xff);
-		  fprintf(f, "%c%c%c%c", (0) & 0xff, ((0) >> 8) & 0xff, ((0) >> 16) & 0xff, ((0) >> 24) & 0xff);
-		  fprintf(f, "%c%c%c%c", (unsigned char) (h * w + h * (w % 2)) & 0xff,
-			  (unsigned char) ((h * w + h * (w % 2)) >> 8) & 0xff,
-			  (unsigned char) ((h * w + h * (w % 2)) >> 16) & 0xff,
-			  (unsigned char) ((h * w + h * (w % 2)) >> 24) & 0xff);
-		  fprintf(f, "%c%c%c%c", (7834) & 0xff, ((7834) >> 8) & 0xff, ((7834) >> 16) & 0xff, ((7834) >> 24) & 0xff);
-		  fprintf(f, "%c%c%c%c", (7834) & 0xff, ((7834) >> 8) & 0xff, ((7834) >> 16) & 0xff, ((7834) >> 24) & 0xff);
-		  fprintf(f, "%c%c%c%c", (256) & 0xff, ((256) >> 8) & 0xff, ((256) >> 16) & 0xff, ((256) >> 24) & 0xff);
-		  fprintf(f, "%c%c%c%c", (256) & 0xff, ((256) >> 8) & 0xff, ((256) >> 16) & 0xff, ((256) >> 24) & 0xff);
-		}
-	    
-	    for (i = 0; i < 256; i++) 
-	      {
-		fprintf(f, "%c%c%c%c", i, i, i, 0);
-	      }
-	    
-	    for (i = 0; i < w * h; i++) 
-	      {
-		fprintf(f, "%c", img->comps[0].data[w * h - ((i) / (w) + 1) * w + (i) % (w)]);
-		if (((i + 1) % w == 0 && w % 2))
-		  fprintf(f, "%c", 0);
-	      }
-	    break;
-	  default :
-	    break;
-	  }
-	
-	return 0;
-}
diff --git a/codec/readme.txt b/codec/readme.txt
deleted file mode 100644
index 972fac4..0000000
--- a/codec/readme.txt
+++ /dev/null
@@ -1,105 +0,0 @@
-List of parameters for the coder JPEG 2000 :
-
-Date : June the 25th, 2003
-Author : Yannick Verschueren
-Contact : verschueren@tele.ucl.ac.be 
-
-- the option -help displays the readme.txt file on screen
-
-- The markers COD and QCD are writed both of two in the main_header and never appear in the tile_header.  The markers in the main header are : SOC SIZ COD QCD COM.
-
-- This coder can encode mega image, a test was made on a 24000x24000 pixels color image.  You need enough disk space memory (twice the original) to encode the image. (i.e. for a 1.5 Gb image you need a minimum of 3Gb of disk memory) 
-
-REMARKS :
----------
-
-* the value of rate enter in the code line is the compression factor !
-exemple :
-
--r 20,10,1 means quality 1 : compress 20x, quality 2 : compress 10x and quality 3 : compress 1x = lossless  
-
-* The number of resolution can be modified by the program in view to respect profile-0 conditions (Taubman, Marcelin (2002), "JPEG2000, image compression fundamentals, standards and practice", p700)
-
-By default :
-------------
-
- * lossless
- * 1 tile
- * size of precinct 2^15 x 2^15 (means 1 precinct)
- * size of code-block 64 x 64
- * Number of resolution : 6
- * No SOP marker in the codestream
- * No EPH marker in the codestream
- * No sub-sampling in x and y direction
- * No mode switch activated
- * progression order : LRCP
- * No index file
- * No ROI upshifted
- * No offset of the origin of the image
- * No offset of the origin of the tiles
- * Reversible DWT 5-3
-
-Parameters :
-------------
-
--i             : source file  (-i source.pnm also *.pgm, *.ppm) "required"
-
--o             : destination file (-o dest.j2k) "required"
-
--r             : different rates (-r 20,10,5) "optional" 
-
--n             : Number of resolution (-n 3) "optional"
-
--b             : size of code block (-b 32,32) "optional"
-
--c             : size of precinct (-c 128,128) "optional"
-
--t             : size of tile (-t 512,512) "optional"
-
--p             : progression order (-p LRCP) [LRCP, RLCP, RPCL, PCRL, CPRL] "optional"
-
--s             : subsampling factor (-s 2,2) [-s X,Y] "optional"
-
--SOP           : write SOP marker before each packet "optional"
-
--EPH           : write EPH marker after each header packet "optional"
-
--M             : mode switch (-M 3) [1= BYPASS(LAZY) 2=RESET 4=RESTART(TERMALL) 8=VSC 16=ERTERM(SEGTERM) 32=SEGMARK(SEGSYM)]  "optional"
-                    for several mode switch you have to add the value of each mode you want
-                    ex : RESTART(4) + RESET(2) + SEGMARK(32) = -M 38 
-
--x             : Create an index file *.Idx (-x index_name.Idx) "optional"
-
--ROI:c=%d,U=%d : quantization indices upshifted for component c=%d [%d = 0,1,2] 
-                 with a value of U=%d [0 <= %d <= 37] (i.e. -ROI:c=0,U=25) "optional"
-
--d             : offset of the origin of the image (-d 150,300) "optional"
-
--T             : offset of the origin of the tiles (-T 100,75) "optional"
-
--I             : Use the irreversible DWT 9-7 (-I) "optional"
-
-IMPORTANT : 
------------
-
-* subsampling bigger than 2 can produce error
-
-The index file respect the structure below :
----------------------------------------------
-
-Image_height Image_width
-progression order
-Tiles_size_X Tiles_size_Y
-Components_nb
-Layers_nb
-decomposition_levels
-Precincts_size_X Precincts_size_Y
-Main_header_end_position
-Codestream_size
-Tile0 start_pos end_Theader end_pos
-Tile1  "         "           "
-...
-TileN  "         "           "
-Tpacket_0 Tile layer res. comp. prec. start_pos end_pos
-...
-Tpacket_M "    "     "    "     "     "         "
diff --git a/indexer_JPIP/Makefile b/indexer_JPIP/Makefile
deleted file mode 100644
index 40c049e..0000000
--- a/indexer_JPIP/Makefile
+++ /dev/null
@@ -1,23 +0,0 @@
-CC = gcc
-
-LDFLAGS = -lm
-CFLAGS = -Wall
-
-all: index_create
-
-
-bio.o : bio.c bio.h
-cio.o : cio.c cio.h
-int.o : int.c
-pi.o  : pi.c pi.h int.h
-index_create.o : index_create.c j2k.h cio.h tcd.h int.h
-t2.o  : t2.c t2.h tcd.h bio.h j2k.h pi.h tgt.h int.h cio.h
-tgt.o : tgt.c bio.h tgt.h
-tcd.o : tcd.c tcd.h t2.h int.h
-jpip.o : jpip.c j2k.h cio.h tcd.h int.h
-jp2.o : jp2.c j2k.h cio.h tcd.h int.h
-
-index_create : bio.o cio.o int.o pi.o t2.o tgt.o tcd.o index_create.o jpip.o jp2.o
-
-clean:
-	rm -rf *.o *.*~ *~ core.*
diff --git a/indexer_JPIP/bio.c b/indexer_JPIP/bio.c
deleted file mode 100644
index 2c989e5..0000000
--- a/indexer_JPIP/bio.c
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * Copyright (c) 2003, Yannick Verschueren
- * Copyright (c) 2003,  Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 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 "bio.h"
-#include <setjmp.h>
-
-static unsigned char *bio_start, *bio_end, *bio_bp;
-static unsigned int bio_buf;
-static int bio_ct;
-
-extern jmp_buf j2k_error;
-
-/// <summary>
-/// Number of bytes written.
-/// </summary>
-int bio_numbytes() {
-    return bio_bp-bio_start;
-}
-
-/// <summary>
-/// Init decoder.
-/// </summary>
-/// <param name="bp">Input buffer</param>
-/// <param name="len">Input buffer length</param>
-void bio_init_dec(unsigned char *bp, int len) {
-    bio_start=bp;
-    bio_end=bp+len;
-    bio_bp=bp;
-    bio_buf=0;
-    bio_ct=0;
-}
-
-int bio_byteout()
-{
-	bio_buf = (bio_buf << 8) & 0xffff;
-	bio_ct = bio_buf == 0xff00 ? 7 : 8;
-	if (bio_bp >= bio_end)
-		return 1;
-	*bio_bp++ = bio_buf >> 8;
-	return 0;
-}
-
-/// <summary>
-/// Read byte. 
-/// </summary>
-int bio_bytein() {
-    bio_buf=(bio_buf<<8)&0xffff;
-    bio_ct=bio_buf==0xff00?7:8;
-    if (bio_bp>=bio_end) return 1; //longjmp(j2k_error, 1);
-    bio_buf|=*bio_bp++;
-    return 0;
-}
-
-/// <summary>
-/// Read bit.
-/// </summary>
-int bio_getbit() {
-    if (bio_ct==0) {
-        bio_bytein();
-    }
-    bio_ct--;
-    return (bio_buf>>bio_ct)&1;
-}
-
-/// <summary>
-/// Read bits.
-/// </summary>
-/// <param name="n">Number of bits to read</param>
-int bio_read(int n) {
-    int i, v;
-    v=0;
-    for (i=n-1; i>=0; i--) {
-        v+=bio_getbit()<<i;
-    }
-    return v;
-}
-
-/// <summary>
-/// Flush bits.
-/// </summary>
-int bio_flush() {
-    bio_ct=0;
-    bio_byteout();
-    if (bio_ct==7) {
-        bio_ct=0;
-       if ( bio_byteout()) return 1;;
-    }
-    return 0;
-}
-
-/// <summary>
-/// </summary>
-int bio_inalign() {
-    bio_ct=0;
-    if ((bio_buf&0xff)==0xff) {
-       if( bio_bytein()) return 1;
-        bio_ct=0;
-    }
-    return 0;
-}
diff --git a/indexer_JPIP/bio.h b/indexer_JPIP/bio.h
deleted file mode 100644
index eea6cff..0000000
--- a/indexer_JPIP/bio.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * Copyright (c) 2003-2004, Yannick Verschueren
- * Copyright (c) 2003-2004, Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 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 __BIO_H
-#define __BIO_H
-
-int bio_numbytes();
-void bio_init_dec(unsigned char *bp, int len);
-int bio_read(int n);
-int bio_flush();
-int bio_inalign();
-
-#endif
diff --git a/indexer_JPIP/cio.c b/indexer_JPIP/cio.c
deleted file mode 100644
index 29f160e..0000000
--- a/indexer_JPIP/cio.c
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * Copyright (c) 2003, Yannick Verschueren
- * Copyright (c) 2003, Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 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 "cio.h"
-#include <setjmp.h>
-
-static unsigned char *cio_start, *cio_end, *cio_bp;
-
-extern jmp_buf j2k_error;
-
-/// <summary>
-/// Number of bytes written.
-/// </summary>
-int cio_numbytes() {
-    return cio_bp-cio_start;
-}
-
-/// <summary>
-/// Get position in byte stream.
-/// </summary>
-int cio_tell() {
-    return cio_bp-cio_start;
-}
-
-/// <summary>
-/// Set position in byte stream.
-/// </summary>
-void cio_seek(int pos) {
-    cio_bp=cio_start+pos;
-}
-
-/// <summary>
-/// Number of bytes left before the end of the stream.
-/// </summary>
-int cio_numbytesleft() {
-    return cio_end-cio_bp;
-}
-
-/// <summary>
-/// Get pointer to the current position in the stream.
-/// </summary>
-unsigned char *cio_getbp() {
-    return cio_bp;
-}
-
-/// <summary>
-/// Initialize byte IO.
-/// </summary>
-void cio_init(unsigned char *bp, int len) {
-    cio_start=bp;
-    cio_end=bp+len;
-    cio_bp=bp;
-}
-
-/// <summary>
-/// Write a byte.
-/// </summary>
-void cio_byteout(unsigned char v) {
-  if (cio_bp>=cio_end) longjmp(j2k_error, 1);
-  *cio_bp++=v;
-    
-}
-
-/// <summary>
-/// Read a byte.
-/// </summary>
-unsigned char cio_bytein() {
-    if (cio_bp>=cio_end) longjmp(j2k_error, 1);
-    return *cio_bp++;
-}
-
-/// <summary>
-/// Write a byte.
-/// </summary>
-//void cio_write(unsigned int v, int n) {
-void cio_write(long long v, int n) {
-    int i;
-    for (i=n-1; i>=0; i--) 
-      {
-	cio_byteout((unsigned char)((v>>(i<<3))&0xff));
-      }
-}
-
-/// <summary>
-/// Read some bytes.
-/// </summary>
-/* unsigned int cio_read(int n) { */
-long long cio_read(int n) {
-    int i;
-    /*unsigned int v;*/
-    long long v;
-    v=0;
-    for (i=n-1; i>=0; i--) {
-      v+=cio_bytein()<<(i<<3);
-    }
-    return v;
-}
-
-/// <summary>
-/// Write some bytes.
-/// </summary>
-void cio_skip(int n) {
-    cio_bp+=n;
-}
diff --git a/indexer_JPIP/cio.h b/indexer_JPIP/cio.h
deleted file mode 100644
index 3e29789..0000000
--- a/indexer_JPIP/cio.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * Copyright (c) 2003-2004, Yannick Verschueren
- * Copyright (c) 2003-2004, Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 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 __CIO_H
-#define __CIO_H
-
-int cio_tell();
-void cio_seek(int pos);
-int cio_numbytes();
-int cio_numbytesleft();
-unsigned char *cio_getbp();
-void cio_init(unsigned char *bp, int len);
-/* void cio_write(unsigned int v, int n); */
-void cio_write(long long v, int n);
-/* unsigned int cio_read(int n); */
-long long cio_read(int n);
-void cio_skip(int n);
-
-#endif
diff --git a/indexer_JPIP/fix.c b/indexer_JPIP/fix.c
deleted file mode 100644
index 9699bf6..0000000
--- a/indexer_JPIP/fix.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * Copyright (c) 2003, Yannick Verschueren
- * Copyright (c) 2003,  Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 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 "fix.h"
-
-#ifdef WIN32
-#define int64 __int64
-#else
-#define int64 long long
-#endif
-
-/// <summary>
-/// Multiply two fixed-precision rational numbers.
-/// </summary>
-int fix_mul(int a, int b) {
-    return (int)((int64)a*(int64)b>>13);
-}
diff --git a/indexer_JPIP/fix.h b/indexer_JPIP/fix.h
deleted file mode 100644
index 4b6e1b5..0000000
--- a/indexer_JPIP/fix.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * Copyright (c) 2003, Yannick Verschueren
- * Copyright (c) 2003,  Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 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 __FIX_H
-#define __FIX_H
-
-int fix_mul(int a, int b);
-
-#endif
diff --git a/indexer_JPIP/index_create.c b/indexer_JPIP/index_create.c
deleted file mode 100644
index 2b6ae5c..0000000
--- a/indexer_JPIP/index_create.c
+++ /dev/null
@@ -1,1219 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * Copyright (c) 2003-2004, Yannick Verschueren
- * Copyright (c) 2003-2004, Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 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 <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <setjmp.h>
-#include <math.h>
-#include <unistd.h>
-
-#include "j2k.h"
-#include "cio.h"
-#include "tcd.h"
-#include "int.h"
-#include "jpip.h"
-#include "jp2.h"
-
-#define J2K_MS_SOC 0xff4f
-#define J2K_MS_SOT 0xff90
-#define J2K_MS_SOD 0xff93
-#define J2K_MS_EOC 0xffd9
-#define J2K_MS_SIZ 0xff51
-#define J2K_MS_COD 0xff52
-#define J2K_MS_COC 0xff53
-#define J2K_MS_RGN 0xff5e
-#define J2K_MS_QCD 0xff5c
-#define J2K_MS_QCC 0xff5d
-#define J2K_MS_POC 0xff5f
-#define J2K_MS_TLM 0xff55
-#define J2K_MS_PLM 0xff57
-#define J2K_MS_PLT 0xff58
-#define J2K_MS_PPM 0xff60
-#define J2K_MS_PPT 0xff61
-#define J2K_MS_SOP 0xff91
-#define J2K_MS_EPH 0xff92
-#define J2K_MS_CRG 0xff63
-#define J2K_MS_COM 0xff64
-
-#define J2K_STATE_MHSOC 0x0001
-#define J2K_STATE_MHSIZ 0x0002
-#define J2K_STATE_MH 0x0004
-#define J2K_STATE_TPHSOT 0x0008
-#define J2K_STATE_TPH 0x0010
-#define J2K_STATE_MT 0x0020
-
-#define START_NB 5
-#define INCREMENT 5
-
-jmp_buf j2k_error;
-
-static int j2k_state;
-static int j2k_curtileno;
-static j2k_tcp_t j2k_default_tcp;
-static unsigned char *j2k_eot;
-
-static j2k_image_t *j2k_img;
-static j2k_cp_t *j2k_cp;
-
-static unsigned char **j2k_tile_data;
-static int *j2k_tile_len;
-
-static info_image_t img;
-
-
-void j2k_clean() {
-  int tileno = 0;
-  int compno=0, resno=0, precno=0;
-
-  tcd_free(j2k_img, j2k_cp);
-  for (tileno = 0; tileno < j2k_cp->tw * j2k_cp->th; tileno++) {
-    info_tile_t *tile_Idx = &img.tile[tileno];
-    
-    for (compno = 0; compno < img.Comp; compno++)
-      {
-	info_compo_t *compo_Idx = &tile_Idx->compo[compno];
-	for(resno = 0; resno < img.Decomposition + 1; resno++)
-	  {
-	    info_reso_t *reso_Idx = &compo_Idx->reso[resno];
-	    for (precno = 0; precno < img.tile[tileno].pw * img.tile[tileno].ph; precno++)
-	      {
-		info_prec_t *prec_Idx = &reso_Idx->prec[precno];
-		free(prec_Idx->layer);
-	      }
-	    free(reso_Idx->prec);
-	  }
-	free(compo_Idx->reso);
-      }
-    free(tile_Idx->compo);
-    free(tile_Idx->marker);
-    free(tile_Idx->tile_parts);
-    free(tile_Idx->marker_mul.COC);
-    free(tile_Idx->marker_mul.RGN);
-    free(tile_Idx->marker_mul.QCC);
-    free(tile_Idx->marker_mul.PLT);
-    free(tile_Idx->marker_mul.PPT);
-    free(tile_Idx->marker_mul.COM);
-}
-  free(img.tile);
-  free(img.marker);
-  free(img.marker_mul.COC);
-  free(img.marker_mul.RGN);
-  free(img.marker_mul.QCC);
-  free(img.marker_mul.PLM);
-  free(img.marker_mul.PPM);
-  free(img.marker_mul.COM);
-}
-
-
-
-void j2k_read_soc() {
-  j2k_state=J2K_STATE_MHSIZ;
-}
-
-
-
-void j2k_read_siz() {
-    int len, i;
-    info_tile_t *tile;
-
-    len = cio_read(2);
-
-    /* <INDEX> [MHIX BOX] */
-    img.marker[img.num_marker].type = J2K_MS_SIZ;
-    img.marker[img.num_marker].start_pos = cio_tell()-2;
-    img.marker[img.num_marker].len = len;
-    img.num_marker++;
-    /* </INDEX> [MHIX BOX] */
-    
-    cio_read(2);                      /* Rsiz (capabilities) */
-    j2k_img->x1 = cio_read(4);        /* Xsiz                */
-    j2k_img->y1 = cio_read(4);        /* Ysiz                */
-    j2k_img->x0 = cio_read(4);        /* X0siz               */
-    j2k_img->y0 = cio_read(4);        /* Y0siz               */
-    j2k_cp->tdx = cio_read(4);        /* XTsiz               */
-    j2k_cp->tdy = cio_read(4);        /* YTsiz               */
-    j2k_cp->tx0 = cio_read(4);        /* XT0siz              */
-    j2k_cp->ty0 = cio_read(4);        /* YTOsiz              */
-
-    j2k_img->numcomps = cio_read(2);  /* Csiz                */
-    j2k_img->comps = (j2k_comp_t*)malloc(j2k_img->numcomps * sizeof(j2k_comp_t));
-    for (i = 0; i < j2k_img->numcomps; i++) {
-        int tmp, w, h;
-        tmp = cio_read(1);
-        j2k_img->comps[i].prec = (tmp & 0x7f) + 1;
-        j2k_img->comps[i].sgnd = tmp >> 7;
-        j2k_img->comps[i].dx = cio_read(1);
-        j2k_img->comps[i].dy = cio_read(1);
-        w = int_ceildiv(j2k_img->x1-j2k_img->x0, j2k_img->comps[i].dx);
-        h = int_ceildiv(j2k_img->y1-j2k_img->y0, j2k_img->comps[i].dy);
-        j2k_img->comps[i].data = (int*)malloc(sizeof(int) * w * h);
-    }
-    j2k_cp->tw = int_ceildiv(j2k_img->x1 - j2k_cp->tx0, j2k_cp->tdx);
-    j2k_cp->th = int_ceildiv(j2k_img->y1 - j2k_cp->ty0, j2k_cp->tdy);
-
-    j2k_cp->tcps = (j2k_tcp_t*)calloc((j2k_cp->tw * j2k_cp->th), sizeof(j2k_tcp_t));
-
-    for (i = 0; i < j2k_cp->tw * j2k_cp->th; i++)
-      {
-	j2k_cp->tcps[i].POC = 0;
-	j2k_cp->tcps[i].numpocs = 0;
-	// j2k_cp->tcps[i].first=1;
-      }
-
-    /* Initialization for PPM marker */
-    j2k_cp->ppm = 0;
-    j2k_cp->ppm_data = NULL;
-    j2k_cp->ppm_previous = 0;
-    j2k_cp->ppm_store = 0;
-
-    j2k_default_tcp.tccps = (j2k_tccp_t*)malloc(j2k_img->numcomps * sizeof(j2k_tccp_t));
-    for (i = 0; i < j2k_cp->tw * j2k_cp->th; i++) {
-	j2k_cp->tcps[i].tccps = (j2k_tccp_t*)malloc(j2k_img->numcomps * sizeof(j2k_tccp_t));
-    }
-    j2k_tile_data = (unsigned char**)calloc(j2k_cp->tw * j2k_cp->th, sizeof(char*));
-    j2k_tile_len = (int*)calloc(j2k_cp->tw * j2k_cp->th, sizeof(int));
-    j2k_state = J2K_STATE_MH;
-
-    /* <INDEX> */
-    img.Im_w = j2k_img->x1 - j2k_img->x0;
-    img.Im_h = j2k_img->y1 - j2k_img->y0;
-    img.Tile_x = j2k_cp->tdx;
-    img.Tile_y = j2k_cp->tdy;
-    img.Comp = j2k_img->numcomps;
-    img.tw = j2k_cp->tw;
-    img.th = j2k_cp->th;
-    img.tile = (info_tile_t*)malloc(img.tw * img.th * sizeof(info_tile_t));
-
-    for (i = 0; i < img.tw * img.th; i++)
-      {
-	tile = &img.tile[i];
-	tile->marker = (info_marker_t*)malloc(32 * sizeof(info_marker_t));
-	tile->num_marker = 0;
-	tile->marker_mul.num_COC = 0;
-	tile->marker_mul.CzCOC = START_NB;
-	tile->marker_mul.num_RGN = 0;
-	tile->marker_mul.CzRGN = START_NB;
-	tile->marker_mul.num_QCC = 0;
-	tile->marker_mul.CzQCC = START_NB;
-	tile->marker_mul.num_PLT = 0;
-	tile->marker_mul.CzPLT = START_NB;
-	tile->marker_mul.num_PPT = 0;
-	tile->marker_mul.CzPPT = START_NB;
-	tile->marker_mul.num_COM = 0;
-	tile->marker_mul.CzCOM = START_NB;
-      }
-    /* </INDEX> */
-
-
- }
-
-void j2k_read_com() {
-    int len;
-    info_tile_t *tile;
-    info_marker_t *tmp;
-
-    len = cio_read(2);
-
-    /* <INDEX> [MHIX BOX] */
-    if (j2k_state == J2K_STATE_MH)
-      {
-	if (!img.marker_mul.num_COM) 
-	  img.marker_mul.COM = (info_marker_t*)malloc(img.marker_mul.CzCOM * sizeof(info_marker_t));
-	if (img.marker_mul.num_COM >= img.marker_mul.CzCOM)
-	  {
-	    tmp = (info_marker_t*)malloc(2 * img.marker_mul.CzCOM * sizeof(info_marker_t));
-	    memcpy(tmp,img.marker_mul.COM,img.marker_mul.CzCOM);
-	    img.marker_mul.CzCOM *= 2;
-	    free(img.marker_mul.COM);
-	    img.marker_mul.COM = tmp;
-	  }
-
-	img.marker_mul.COM[img.marker_mul.num_COM].type = J2K_MS_COM;
-	img.marker_mul.COM[img.marker_mul.num_COM].start_pos = cio_tell()-2;
-	img.marker_mul.COM[img.marker_mul.num_COM].len = len;
-	img.marker_mul.num_COM++;
-      } else
-	{
-	  tile = &img.tile[j2k_curtileno];
-	  if (!tile->marker_mul.num_COM)
-	    tile->marker_mul.COM = (info_marker_t*)calloc(START_NB, sizeof(info_marker_t));
-	  if (tile->marker_mul.num_COM >= tile->marker_mul.CzCOM)
-	    {
-	      tmp = (info_marker_t*)malloc(2 * tile->marker_mul.CzCOM * sizeof(info_marker_t));
-	      memcpy(tmp,tile->marker_mul.COM,tile->marker_mul.CzCOM);
-	      tile->marker_mul.CzCOM *= 2;
-	      free(tile->marker_mul.COM);
-	      tile->marker_mul.COM = tmp;
-	    }
-	  tile->marker_mul.COM[tile->marker_mul.num_COM].type = J2K_MS_COM;
-	  tile->marker_mul.COM[tile->marker_mul.num_COM].start_pos = cio_tell()-2;
-	  tile->marker_mul.COM[tile->marker_mul.num_COM].len = len;
-	  tile->marker_mul.num_COM++;
-	}
-    /* </INDEX> [MHIX BOX] */
-
-    cio_skip(len - 2);
-}
-
-
-
-
-void j2k_read_cox(int compno) {
-    int i;
-    j2k_tcp_t *tcp;
-    j2k_tccp_t *tccp;
-
-    tcp = j2k_state == J2K_STATE_TPH ? &j2k_cp->tcps[j2k_curtileno] : &j2k_default_tcp;
-    tccp = &tcp->tccps[compno];
-    tccp->numresolutions = cio_read(1) + 1;
-
-    img.Decomposition = tccp->numresolutions - 1; /* <INDEX> */
-
-    tccp->cblkw = cio_read(1) + 2;
-    tccp->cblkh = cio_read(1) + 2;
-    tccp->cblksty = cio_read(1);
-    tccp->qmfbid = cio_read(1);
-    if (tccp->csty&J2K_CP_CSTY_PRT) {
-        for (i = 0; i < tccp->numresolutions; i++) {
-            int tmp = cio_read(1);
-            tccp->prcw[i] = tmp&0xf;
-            tccp->prch[i] = tmp>>4; 
-        }
-    }
-}
-
-
-
-
-void j2k_read_cod() {
-    int len, i, pos;
-    j2k_tcp_t *tcp;
-    info_tile_t *tile;
-
-    tcp = j2k_state == J2K_STATE_TPH ? &j2k_cp->tcps[j2k_curtileno] : &j2k_default_tcp;
-    len = cio_read(2);
-
-    /* <INDEX> [MHIX BOX] */
-    if (j2k_state == J2K_STATE_MH)
-      {
-	img.marker[img.num_marker].type = J2K_MS_SIZ;
-	img.marker[img.num_marker].start_pos = cio_tell()-2;
-	img.marker[img.num_marker].len = len;
-	img.num_marker++;
-      }
-    else
-      {
-	tile = &img.tile[j2k_curtileno];
-	tile->marker[tile->num_marker].type = J2K_MS_SIZ;
-	tile->marker[tile->num_marker].start_pos = cio_tell()-2;
-	tile->marker[tile->num_marker].len = len;
-	tile->num_marker++;
-  }
-    /* </INDEX> [MHIX BOX] */
-    
-    tcp->csty = cio_read(1);
-    tcp->prg = cio_read(1);
-    tcp->numlayers = cio_read(2);
-    tcp->mct = cio_read(1);
-
-    pos = cio_tell();
-    for (i = 0; i < j2k_img->numcomps; i++) {
-        tcp->tccps[i].csty = tcp->csty&J2K_CP_CSTY_PRT;
-        cio_seek(pos);
-        j2k_read_cox(i);
-    }
-    
-    /* <INDEX> */
-    img.Prog = tcp->prg;
-    img.Layer = tcp->numlayers;
-    /* </INDEX> */
-}
-
-
-
-
-void j2k_read_coc() {
-    int len, compno;
-    j2k_tcp_t *tcp;
-    info_tile_t *tile;
-    info_marker_t *tmp;
-
-    tcp = j2k_state == J2K_STATE_TPH ? &j2k_cp->tcps[j2k_curtileno] : &j2k_default_tcp;
-    len = cio_read(2);
-    
-    /* <INDEX> [MHIX BOX] */
-    if (j2k_state == J2K_STATE_MH)
-      {
-	if (!img.marker_mul.num_COC)
-	  img.marker_mul.COC = (info_marker_t*)malloc(img.marker_mul.CzCOC * sizeof(info_marker_t));
-	if (img.marker_mul.num_COC >= img.marker_mul.CzCOC)
-	  {
-	    tmp = (info_marker_t*)malloc((INCREMENT + img.marker_mul.CzCOC) * sizeof(info_marker_t));
-	    memcpy(tmp,img.marker_mul.COC,img.marker_mul.CzCOC);
-	    img.marker_mul.CzCOC += INCREMENT;
-	    free(img.marker_mul.COC);
-	    img.marker_mul.COC = tmp;
-	  }
-	img.marker_mul.COC[img.marker_mul.num_COC].type = J2K_MS_COC;
-	img.marker_mul.COC[img.marker_mul.num_COC].start_pos = cio_tell()-2;
-	img.marker_mul.COC[img.marker_mul.num_COC].len = len;
-	img.marker_mul.num_COC++;
-      } else
-	{
-	  tile = &img.tile[j2k_curtileno];
-	  if (!tile->marker_mul.num_COC)
-	    tile->marker_mul.COC = (info_marker_t*)malloc(tile->marker_mul.CzCOC * sizeof(info_marker_t));
-	  if (tile->marker_mul.num_COC >= tile->marker_mul.CzCOC)
-	    {
-	      tmp = (info_marker_t*)malloc((INCREMENT + tile->marker_mul.CzCOC) * sizeof(info_marker_t));
-	      memcpy(tmp,tile->marker_mul.COC,tile->marker_mul.CzCOC);
-	      tile->marker_mul.CzCOC += INCREMENT;
-	      free(tile->marker_mul.COC);
-	      tile->marker_mul.COC = tmp;
-	    }
-	  tile->marker_mul.COC[tile->marker_mul.num_COC].type = J2K_MS_COC;
-	  tile->marker_mul.COC[tile->marker_mul.num_COC].start_pos = cio_tell() - 2;
-	  tile->marker_mul.COC[tile->marker_mul.num_COC].len = len;
-	  tile->marker_mul.num_COC++;
-	}
-    /* </INDEX> [MHIX BOX] */
-    
-    compno =cio_read(j2k_img->numcomps <= 256 ? 1 : 2);
-
-    tcp->tccps[compno].csty = cio_read(1);
-    j2k_read_cox(compno);
-}
-
-
-
-
-void j2k_read_qcx(int compno, int len) {
-    int tmp;
-    j2k_tcp_t *tcp;
-    j2k_tccp_t *tccp;
-    int bandno, numbands;
-
-    tcp = j2k_state == J2K_STATE_TPH ? &j2k_cp->tcps[j2k_curtileno] : &j2k_default_tcp;
-    tccp = &tcp->tccps[compno];
-    tmp = cio_read(1);
-    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);
-    for (bandno = 0; bandno < numbands; bandno++) {
-        int expn, mant;
-        if (tccp->qntsty == J2K_CCP_QNTSTY_NOQNT) { /* WHY STEPSIZES WHEN NOQNT ? */
-            expn = cio_read(1) >> 3;
-            mant = 0;
-        } else {
-            tmp = cio_read(2);
-            expn = tmp >> 11;
-            mant = tmp & 0x7ff;
-        }
-        tccp->stepsizes[bandno].expn = expn;
-        tccp->stepsizes[bandno].mant = mant;
-    }
-}
-
-
-
-
-void j2k_read_qcd() {
-    int len, i, pos;
-    info_tile_t *tile;
-
-    len = cio_read(2);    
-
-    /* <INDEX> [MHIX BOX] */
-    if (j2k_state == J2K_STATE_MH)
-      {
-	img.marker[img.num_marker].type = J2K_MS_QCD;
-	img.marker[img.num_marker].start_pos = cio_tell()-2;
-	img.marker[img.num_marker].len = len;
-	img.num_marker++;
-      }	 else
-	{
-	  tile = &img.tile[j2k_curtileno];
-	  tile->marker[tile->num_marker].type = J2K_MS_QCD;
-	  tile->marker[tile->num_marker].start_pos = cio_tell()-2;
-	  tile->marker[tile->num_marker].len = len;
-	  tile->num_marker++;
-	}
-    /* </INDEX> [MHIX BOX] */
-    
-    
-    pos=cio_tell();
-    for (i = 0; i < j2k_img->numcomps; i++) {
-        cio_seek(pos);
-        j2k_read_qcx(i, len - 2);
-    }
-}
-
-
-
-
-void j2k_read_qcc() {
-  int len, compno;
-  info_tile_t *tile;
-  info_marker_t *tmp;
-
-  len = cio_read(2);  
-  /* <INDEX> [MHIX BOX] */
-  if (j2k_state == J2K_STATE_MH)
-    {
-      if (!img.marker_mul.num_QCC)
-	img.marker_mul.QCC = (info_marker_t*)malloc(img.marker_mul.CzQCC * sizeof(info_marker_t));
-	if (img.marker_mul.num_QCC >= img.marker_mul.CzQCC)
-	  {
-	    tmp = (info_marker_t*)malloc((INCREMENT + img.marker_mul.CzQCC) * sizeof(info_marker_t));
-	    memcpy(tmp,img.marker_mul.QCC,img.marker_mul.CzQCC);
-	    img.marker_mul.CzQCC += INCREMENT;
-	    free(img.marker_mul.QCC);
-	    img.marker_mul.QCC = tmp;
-	  }
-      img.marker_mul.QCC[img.marker_mul.num_QCC].type = J2K_MS_QCC;
-      img.marker_mul.QCC[img.marker_mul.num_QCC].start_pos = cio_tell() - 2;
-      img.marker_mul.QCC[img.marker_mul.num_QCC].len = len;
-      img.marker_mul.num_QCC++;
-    } else
-      {
-	tile = &img.tile[j2k_curtileno];
-	if (!tile->marker_mul.num_QCC)
-	  tile->marker_mul.QCC = (info_marker_t*)malloc(tile->marker_mul.CzQCC * sizeof(info_marker_t));
-	if (tile->marker_mul.num_QCC >= tile->marker_mul.CzQCC)
-	  {
-	    tmp = (info_marker_t*)malloc((INCREMENT + tile->marker_mul.CzQCC) * sizeof(info_marker_t));
-	    memcpy(tmp,tile->marker_mul.QCC,tile->marker_mul.CzQCC);
-	    tile->marker_mul.CzQCC += INCREMENT;
-	    free(tile->marker_mul.QCC);
-	    tile->marker_mul.QCC = tmp;
-	  }
-	tile->marker_mul.QCC[tile->marker_mul.num_QCC].type = J2K_MS_QCC;
-	tile->marker_mul.QCC[tile->marker_mul.num_QCC].start_pos = cio_tell()-2;
-	tile->marker_mul.QCC[tile->marker_mul.num_QCC].len = len;
-	tile->marker_mul.num_QCC++;
-      }
-  /* </INDEX> [MHIX BOX] */
- 
-  compno = cio_read(j2k_img->numcomps <= 256 ? 1 : 2);
-  j2k_read_qcx(compno, len - 2 - (j2k_img->numcomps <= 256 ? 1 : 2));
-}
-
-
-
-
-void j2k_read_poc() {
-  int len, numpchgs, i, old_poc;
-  j2k_tcp_t *tcp;
-  j2k_tccp_t *tccp;
-  info_tile_t *tile;
-
-  tcp = j2k_state == J2K_STATE_TPH ? &j2k_cp->tcps[j2k_curtileno] : &j2k_default_tcp;
-  old_poc = tcp->POC ? tcp->numpocs+1 : 0;
-  tcp->POC = 1;
-  tccp = &tcp->tccps[0];
-  len = cio_read(2);
-  
-  /* <INDEX> [MHIX BOX] */
-  if (j2k_state == J2K_STATE_MH)
-    {
-      img.marker[img.num_marker].type = J2K_MS_POC;
-      img.marker[img.num_marker].start_pos = cio_tell()-2;
-      img.marker[img.num_marker].len = len;
-      img.num_marker++;
-    } else
-      {
-	tile = &img.tile[j2k_curtileno];
-	tile->marker[tile->num_marker].type = J2K_MS_POC;
-	tile->marker[tile->num_marker].start_pos = cio_tell()-2;
-	tile->marker[tile->num_marker].len = len;
-	tile->num_marker++;
-      }
-  /* </INDEX> [MHIX BOX] */
-
-    numpchgs = (len - 2) / (5 + 2 * (j2k_img->numcomps <= 256 ? 1 : 2));
-    for (i = 0; i < numpchgs; i++) {
-      j2k_poc_t *poc;
-      poc = &tcp->pocs[i];
-      poc->resno0 = cio_read(1);
-      poc->compno0 = cio_read(j2k_img->numcomps <= 256 ? 1 : 2);
-      poc->layno1 = int_min(cio_read(2), tcp->numlayers);
-      poc->resno1 = int_min(cio_read(1), tccp->numresolutions);
-      poc->compno1 = int_min(cio_read(j2k_img->numcomps <= 256 ? 1 : 2), j2k_img->numcomps);
-      poc->prg = cio_read(1);
-    }
-
-    tcp->numpocs = numpchgs + old_poc - 1;
-}
-
-
-
-
-void j2k_read_crg() {
-    int len, i, Xcrg_i, Ycrg_i;
-
-    len = cio_read(2);
-
-    /* <INDEX> [MHIX BOX] */
-    img.marker[img.num_marker].type = J2K_MS_CRG;
-    img.marker[img.num_marker].start_pos = cio_tell()-2;
-    img.marker[img.num_marker].len = len;
-    img.num_marker++;
-    /* </INDEX> [MHIX BOX] */
-
-    for (i = 0; i < j2k_img->numcomps; i++)
-      {  
-	Xcrg_i = cio_read(2);
-	Ycrg_i = cio_read(2);
-      }
-}
-
-
-
-
-void j2k_read_tlm() {
-    int len, Ztlm, Stlm, ST, SP, tile_tlm, i;
-    long int Ttlm_i, Ptlm_i;
-    info_marker_t *tmp;
-
-    len = cio_read(2);
-
-    /* <INDEX> [MHIX BOX] */
-    if (!img.marker_mul.num_TLM)
-      img.marker_mul.TLM = (info_marker_t*)malloc(img.marker_mul.CzTLM * sizeof(info_marker_t));
-    if (img.marker_mul.num_TLM >= img.marker_mul.CzTLM)
-      {
-	tmp = (info_marker_t*)malloc((INCREMENT + img.marker_mul.CzTLM) * sizeof(info_marker_t));
-	memcpy(tmp,img.marker_mul.TLM,img.marker_mul.CzTLM);
-	img.marker_mul.CzTLM += INCREMENT;
-	free(img.marker_mul.TLM);
-	img.marker_mul.TLM = tmp;
-      }
-    img.marker_mul.TLM[img.marker_mul.num_TLM].type = J2K_MS_TLM;
-    img.marker_mul.TLM[img.marker_mul.num_TLM].start_pos = cio_tell()-2;
-    img.marker_mul.TLM[img.marker_mul.num_TLM].len = len;
-    img.marker_mul.num_TLM++;
-    /* </INDEX> [MHIX BOX] */
-    
-    Ztlm = cio_read(1);
-    Stlm = cio_read(1);
-    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(ST);
-	Ptlm_i = cio_read(SP ? 4 : 2);
-      }
-}
-
-
-
-
-void j2k_read_plm() {
-    int len, i, Z_plm, N_plm, add, packet_len=0;
-    info_marker_t *tmp;
-
-    len=cio_read(2);
-
-    /* <INDEX> [MHIX BOX] */
-    if (!img.marker_mul.num_PLM)
-      img.marker_mul.PLM = (info_marker_t*)malloc(img.marker_mul.CzPLM * sizeof(info_marker_t));
-    if (img.marker_mul.num_PLM >= img.marker_mul.CzPLM)
-      {
-	tmp = (info_marker_t*)malloc((INCREMENT + img.marker_mul.CzPLM) * sizeof(info_marker_t));
-	memcpy(tmp,img.marker_mul.PLM,img.marker_mul.CzPLM);
-	img.marker_mul.CzPLM += INCREMENT;
-	free(img.marker_mul.PLM);
-	img.marker_mul.PLM = tmp;
-      }
-    img.marker_mul.PLM[img.marker_mul.num_PLM].type = J2K_MS_PLM;
-    img.marker_mul.PLM[img.marker_mul.num_PLM].start_pos = cio_tell()-2;
-    img.marker_mul.PLM[img.marker_mul.num_PLM].len = len;
-    img.marker_mul.num_PLM++;
-    /* </INDEX> [MHIX BOX] */
-
-    Z_plm = cio_read(1);
-    len -= 3;
-    while (len > 0)
-      {
-	N_plm = cio_read(4);
-	len -= 4;
-	for (i = N_plm ; i > 0 ; i--)
-	  {
-	    add = cio_read(1);
-	    len--;
-	    packet_len = (packet_len << 7) + add;
-	    if ((add & 0x80) == 0)
-	      {
-		/* New packet */
-		packet_len = 0;
-	      }
-	    if (len <= 0) break;
-	  } 
-      }
-}
-
-
-
-
-void j2k_read_plt() {
-    int len, i, Zplt, packet_len=0, add;
-    info_tile_t *tile;
-    info_marker_t *tmp;
-;
-    len = cio_read(2);
- 
-    /* <INDEX> [MHIX BOX] */
-    tile = &img.tile[j2k_curtileno];
-    if (!tile->marker_mul.num_PLT)
-      tile->marker_mul.PLT = (info_marker_t*)malloc(tile->marker_mul.CzPLT * sizeof(info_marker_t));
-    if (tile->marker_mul.num_PLT >= tile->marker_mul.CzPLT)
-      {
-	tmp = (info_marker_t*)malloc((INCREMENT + tile->marker_mul.CzPLT) * sizeof(info_marker_t));
-	memcpy(tmp,tile->marker_mul.PLT,tile->marker_mul.CzPLT);
-	tile->marker_mul.CzPLT += INCREMENT;
-	free(tile->marker_mul.PLT);
-	tile->marker_mul.PLT = tmp;
-      }
-
-    tile->marker_mul.PLT[tile->marker_mul.num_PLT].type = J2K_MS_PLT;
-    tile->marker_mul.PLT[tile->marker_mul.num_PLT].start_pos = cio_tell()-2;
-    tile->marker_mul.PLT[tile->marker_mul.num_PLT].len = len;
-    tile->marker_mul.num_PLT++;
-    /* </INDEX> [MHIX BOX] */
-    
-    Zplt = cio_read(1);
-    for (i = len-3; i > 0; i--)
-      {
-	add = cio_read(1);
-	packet_len = (packet_len << 7) + add;
-	if ((add & 0x80) == 0)
-	  {
-	    /* New packet */
-	    packet_len = 0;
-	  }
-      }
-}
-
-
-
-
-void j2k_read_ppm() {
-    int len, Z_ppm, i, j;
-    int N_ppm;
-    info_marker_t *tmp;
-
-    len = cio_read(2);
-    
-    /* <INDEX> [MHIX BOX] */
-    if (!img.marker_mul.num_PPM)
-      img.marker_mul.PPM = (info_marker_t*)malloc(img.marker_mul.CzPPM * sizeof(info_marker_t));
-    if (img.marker_mul.num_PPM >= img.marker_mul.CzPPM)
-      {
-	tmp = (info_marker_t*)malloc((INCREMENT + img.marker_mul.CzPPM) * sizeof(info_marker_t));
-	memcpy(tmp,img.marker_mul.PPM,img.marker_mul.CzPPM);
-	img.marker_mul.CzPPM += INCREMENT;
-	free(img.marker_mul.PPM);
-	img.marker_mul.PPM = tmp;
-      }
-    img.marker_mul.PLM[img.marker_mul.num_PPM].type = J2K_MS_PPM;
-    img.marker_mul.PLM[img.marker_mul.num_PPM].start_pos = cio_tell()-2;
-    img.marker_mul.PLM[img.marker_mul.num_PPM].len = len;
-    img.marker_mul.num_PPM++;
-    /* </INDEX> [MHIX BOX] */
-    
-    j2k_cp->ppm = 1;
-    
-    Z_ppm = cio_read(1); /* Z_ppm */
-    len -= 3;
-    while (len > 0)
-      {
-	if (j2k_cp->ppm_previous == 0)
-	  {
-	    N_ppm = cio_read(4); /* N_ppm */
-	    len -= 4;
-	  } else
-	    {
-	      N_ppm = j2k_cp->ppm_previous;
-	    }
-	
-	j = j2k_cp->ppm_store;
-	if (Z_ppm == 0) /* First PPM marker */
-	  j2k_cp->ppm_data = (unsigned char*)calloc(N_ppm, sizeof(unsigned char));
-	else      /* NON-first PPM marker */
-	  j2k_cp->ppm_data = (unsigned char*)realloc(j2k_cp->ppm_data, (N_ppm + j2k_cp->ppm_store) * sizeof(unsigned char));
-	
-	for (i = N_ppm ; i > 0 ; i--) /* Read packet header */
-	  {
-	    j2k_cp->ppm_data[j] = cio_read(1);
-	    j++;
-	    len--;
-	    if (len == 0) break; /* Case of non-finished packet header in present marker but finished in next one */
-	  }
-	
-	j2k_cp->ppm_previous = i - 1;
-	j2k_cp->ppm_store = j;
-      }
-}
-
-
-
-
-void j2k_read_ppt() {
-    int len, Z_ppt, i, j = 0;
-    j2k_tcp_t *tcp;
-    info_tile_t *tile;
-    len=cio_read(2);
-
-    /* <INDEX> [MHIX BOX] */
-    tile = & img.tile[j2k_curtileno];
-    tile->marker[tile->num_marker].type = J2K_MS_PPT;
-    tile->marker[tile->num_marker].start_pos = cio_tell()-2;
-    tile->marker[tile->num_marker].len = len;
-    tile->num_marker++;
-    /* </INDEX> [MHIX BOX] */
-
-    Z_ppt = cio_read(1);
-    tcp = &j2k_cp->tcps[j2k_curtileno];
-    tcp->ppt = 1;
-    if (Z_ppt == 0) /* First PPT marker */
-      {
-	tcp->ppt_data = (unsigned char*)calloc(len - 3, sizeof(unsigned char));
-	tcp->ppt_store = 0;
-      }
-    else      /* NON-first PPT marker */
-      tcp->ppt_data = (unsigned char*)realloc(tcp->ppt_data, (len - 3 + tcp->ppt_store) * sizeof(unsigned char));
-    
-    j = tcp->ppt_store;
-    for (i = len - 3 ; i > 0 ; i--)
-      {
-	tcp->ppt_data[j] = cio_read(1);
-	j++;
-      }
-    tcp->ppt_store = j;
-}
-
-
-
-
-void j2k_read_sot() {
-    int len, tileno, totlen, partno, numparts, i;
-    j2k_tcp_t *tcp;
-    j2k_tccp_t *tmp;
-    info_tile_t *tile;
-    info_tile_part_t *tilepart_tmp;
-    
- 
-    //fprintf(stderr,"SOT\n");
-    len = cio_read(2);
-    tileno = cio_read(2);
-    /* <INDEX> [MHIX BOX] */
-    tile = & img.tile[tileno];
-    tile->marker[tile->num_marker].type = J2K_MS_SOT;
-    tile->marker[tile->num_marker].start_pos = cio_tell() - 4;
-    tile->marker[tile->num_marker].len = len;
-    tile->num_marker++;
-    /* </INDEX> [MHIX BOX] */
- 
-    totlen = cio_read(4);
-    if (!totlen) totlen = cio_numbytesleft() + 8;
-    partno = cio_read(1);
-    numparts = cio_read(1);
-
-    /* <INDEX> */
-    if (tileno == 0 && partno == 0 ) 
-      img.Main_head_end = cio_tell() - 7;  /* Correction End = First byte of first SOT */
-    
-    img.tile[tileno].num_tile = tileno;
-    /* </INDEX> */
-  
-    tile->numparts = partno + 1;                                               /* INDEX : Number of tile_parts for the tile */ 
-    img.num_max_tile_parts = int_max(tile->numparts, img.num_max_tile_parts);  /* INDEX : Maximum number of tile_part per tile */
-
-    if (partno == 0)
-    {
-      tile->tile_parts = (info_tile_part_t*)malloc(START_NB * sizeof(info_tile_part_t*));
-      tile->Cztile_parts = START_NB;
-    }
-    if (partno >= tile->Cztile_parts)
-      {
-	tilepart_tmp = (info_tile_part_t*)malloc((INCREMENT + tile->Cztile_parts) * sizeof(info_tile_part_t));
-	memcpy(tmp, tile->tile_parts, tile->Cztile_parts);
-	tile->Cztile_parts += INCREMENT;
-	free(tile->tile_parts);
-	tile->tile_parts = tilepart_tmp;
-      }
-
-    tile->tile_parts[partno].start_pos = cio_tell() - 12;        /* INDEX : start_pos of the tile_part       */
-    tile->tile_parts[partno].length = totlen;                    /* INDEX : length of the tile_part          */  
-    tile->tile_parts[partno].end_pos = totlen + cio_tell() - 12; /* INDEX : end position of the tile_part    */
-
-
-    j2k_curtileno = tileno;
-    j2k_eot = cio_getbp() - 12 + totlen;
-    j2k_state = J2K_STATE_TPH;
-    tcp = &j2k_cp->tcps[j2k_curtileno];
-    
-    tile->tile_parts[numparts].num_reso_AUX = tcp->tccps[0].numresolutions; /* INDEX : AUX value for TPIX       */
-
-     if (partno == 0)
-       //  if (tcp->first == 1) 
-      {
-	tmp = tcp->tccps;
-	*tcp = j2k_default_tcp;
-	/* Initialization PPT */
-	tcp->ppt = 0; 
-	tcp->ppt_data = NULL;
-	
-	tcp->tccps = tmp;
-	for (i = 0; i < j2k_img->numcomps; i++) {
-	  tcp->tccps[i] = j2k_default_tcp.tccps[i];
-	}
-	//j2k_cp->tcps[j2k_curtileno].first=0;
-      }
-}
-
-
-
-void j2k_read_rgn() {
-    int len, compno, roisty;
-    j2k_tcp_t *tcp;
-    info_tile_t *tile;
-    info_marker_t *tmp;
-    // fprintf(stderr,"RGN\n");
-    tcp = j2k_state == J2K_STATE_TPH ? &j2k_cp->tcps[j2k_curtileno] : &j2k_default_tcp;
-    len = cio_read(2);
-    
-    /* <INDEX> [MHIX BOX]*/
-    if (j2k_state == J2K_STATE_MH)
-      {
-	if (!img.marker_mul.num_RGN)
-	  img.marker_mul.RGN = (info_marker_t*)malloc(img.marker_mul.CzRGN * sizeof(info_marker_t));
-	if (img.marker_mul.num_RGN >= img.marker_mul.CzRGN)
-	  {
-	    tmp = (info_marker_t*)malloc((INCREMENT + img.marker_mul.CzRGN) * sizeof(info_marker_t));
-	    memcpy(tmp,img.marker_mul.RGN, img.marker_mul.CzRGN);
-	    img.marker_mul.CzRGN += INCREMENT;
-	    free(img.marker_mul.RGN);
-	    img.marker_mul.RGN = tmp;
-	  }
-	img.marker_mul.RGN[img.marker_mul.num_RGN].type = J2K_MS_RGN;
-	img.marker_mul.RGN[img.marker_mul.num_RGN].start_pos = cio_tell() - 2;
-	img.marker_mul.RGN[img.marker_mul.num_RGN].len = len;
-	img.marker_mul.num_RGN++;
-      } else
-      {
-	tile = &img.tile[j2k_curtileno];
-	if (!tile->marker_mul.num_RGN)
-	  tile->marker_mul.RGN = (info_marker_t*)malloc(tile->marker_mul.CzRGN * sizeof(info_marker_t));
-	if (tile->marker_mul.num_RGN >= tile->marker_mul.CzRGN)
-	  {
-	    tmp = (info_marker_t*)malloc((INCREMENT + tile->marker_mul.CzRGN) * sizeof(info_marker_t));
-	    memcpy(tmp,tile->marker_mul.RGN,tile->marker_mul.CzRGN);
-	    tile->marker_mul.CzRGN += INCREMENT;
-	    free(tile->marker_mul.RGN);
-	    tile->marker_mul.RGN = tmp;
-	  }
-
-	tile->marker_mul.RGN[tile->marker_mul.num_RGN].type = J2K_MS_RGN;
-	tile->marker_mul.RGN[tile->marker_mul.num_RGN].start_pos = cio_tell() - 2;
-        tile->marker_mul.RGN[tile->marker_mul.num_RGN].len = len;
-	tile->marker_mul.num_RGN++;
-      }
-    /* </INDEX> [MHIX BOX] */
-    
-    compno = cio_read(j2k_img->numcomps <= 256 ? 1 : 2);
-    roisty = cio_read(1);
-    tcp->tccps[compno].roishift = cio_read(1);
-}
-
-
-
-
-
-void j2k_read_sod() {
-    int len;
-    unsigned char *data;
-    info_tile_t *tile;
-    info_tile_part_t *tile_part;
-    // fprintf(stderr,"SOD\n");
-    /* <INDEX> [MHIX BOX] */
-    tile = &img.tile[j2k_curtileno];
-    tile->marker[tile->num_marker].type = J2K_MS_SOD;
-    tile->marker[tile->num_marker].start_pos = cio_tell();
-    tile->marker[tile->num_marker].len = 0;
-    tile->num_marker++;
-    /* </INDEX> [MHIX BOX] */
-
-    tile_part = &tile->tile_parts[tile->numparts - 1];                   /* INDEX : Current tilepart of a tile                  */
-    tile_part->length_header = cio_tell() - 1 - tile_part->start_pos;    /* INDEX : length of the tile-part header              */
-    tile_part->end_header = cio_tell() - 1;                              /* INDEX : end header position of the tile-part header */
-
-    len = int_min(j2k_eot - cio_getbp(), cio_numbytesleft());
-    
-    j2k_tile_len[j2k_curtileno] += len;
-    data = (unsigned char*)realloc(j2k_tile_data[j2k_curtileno], j2k_tile_len[j2k_curtileno]);   
-    memcpy(data, cio_getbp(), len);
-    j2k_tile_data[j2k_curtileno] = data;
-    cio_skip(len);
-    j2k_state = J2K_STATE_TPHSOT;
-}
-
-void j2k_read_eoc() {
-    int tileno;
-    tcd_init(j2k_img, j2k_cp, &img);
-    for (tileno = 0; tileno<j2k_cp->tw * j2k_cp->th; tileno++) {
-        tcd_decode_tile(j2k_tile_data[tileno], j2k_tile_len[tileno], tileno, &img);
-    }
-
-    j2k_state = J2K_STATE_MT;
-     longjmp(j2k_error, 1);
-}
-
-
-
-
-void j2k_read_unk() {
-    fprintf(stderr, "warning: unknown marker\n");
-}
-
-
-
-
-int j2k_index_JPIP(char *Idx_file, char *J2K_file, int len, int version){
-  FILE *dest;
-  char *index;
-  int pos_iptr, end_pos;
-  int len_cidx, pos_cidx;
-  int len_jp2c, pos_jp2c;
-  int len_fidx, pos_fidx;
-
-  dest=fopen(Idx_file, "wb");
-  if (!dest) {
-    fprintf(stderr, "Failed to open %s for reading !!\n", Idx_file);
-    return 0;
-  }
-
-  /* INDEX MODE JPIP */
- index = (char*)malloc(len); 
- cio_init(index, len);
- jp2_write_jp();
- jp2_write_ftyp();
- 
- jp2_write_jp2h(j2k_img);
- jp2_write_dbtl(Idx_file);
-
- pos_iptr=cio_tell();
- cio_skip(24); /* IPTR further ! */
- 
- pos_jp2c = cio_tell();
- len_jp2c = jp2_write_jp2c(J2K_file);
-
- pos_cidx = cio_tell();
- len_cidx = jpip_write_cidx(pos_jp2c + 8,img, j2k_cp, version); /* Correction len_jp2C --> pos_jp2c + 8 */  
-
- 
- pos_fidx = cio_tell();
- len_fidx = jpip_write_fidx(pos_jp2c, len_jp2c, pos_cidx, len_cidx);
-
-end_pos = cio_tell();
-
- cio_seek(pos_iptr);
- jpip_write_iptr(pos_fidx,len_fidx);
- cio_seek(end_pos);
- 
- fwrite(index, 1, cio_tell(), dest);
- free(index);
-
- fclose(dest);
- return 1;
-}
-
-
-
-typedef struct {
-  int id;
-    int states;
-    void (*handler)();
-} j2k_dec_mstabent_t;
-
-j2k_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},
-    {0, J2K_STATE_MH|J2K_STATE_TPH, j2k_read_unk}
-};
-
-j2k_dec_mstabent_t *j2k_dec_mstab_lookup(int id) {
-    j2k_dec_mstabent_t *e;
-    for (e = j2k_dec_mstab; e->id != 0; e++) {
-        if (e->id == id) {
-            break;
-        }
-    }
-    return e;
-}
-
-int j2k_decode(unsigned char *src, int len, j2k_image_t **image, j2k_cp_t **cp) {
-    if (setjmp(j2k_error)) {
-        if (j2k_state != J2K_STATE_MT) {
-            fprintf(stderr, "WARNING: incomplete bitstream\n");
-            return 0;
-        }
-        return cio_numbytes();
-    }
-    j2k_img = (j2k_image_t*)calloc(1, sizeof(j2k_image_t));
-    j2k_cp = (j2k_cp_t*)calloc(1, sizeof(j2k_cp_t));
-    *image = j2k_img;
-    *cp = j2k_cp;
-    j2k_state = J2K_STATE_MHSOC;
-    cio_init(src, len);
-    for (;;) {
-        j2k_dec_mstabent_t *e;
-        int id = cio_read(2);
-        if (id >> 8 != 0xff) {
-            fprintf(stderr, "%.8x: expected a marker instead of %x\n", cio_tell() - 2, id);
-            return 0;
-        }
-        e = j2k_dec_mstab_lookup(id);
-        if (!(j2k_state & e->states)) {
-            fprintf(stderr, "%.8x: unexpected marker %x\n", cio_tell() - 2, id);
-            return 0;
-        }
-        if (e->handler) {
-            (*e->handler)();
-        }
-    }
-
-}
-
-
-#ifdef WIN32
-#include <windows.h>
-
-BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) {
-    switch (ul_reason_for_call) {
-		case DLL_PROCESS_ATTACH:
-		case DLL_THREAD_ATTACH:
-		case DLL_THREAD_DETACH:
-		case DLL_PROCESS_DETACH:
-			break;
-    }
-    return TRUE;
-}
-#endif
-
-int main(int argc, char **argv)
-{  
-  FILE *src;
-  int totlen;
-  char *j2kfile;
-  j2k_image_t *imgg;
-  j2k_cp_t *cp;
-  int version;
-
-  if (argc != 4)
-    {
-      fprintf(stderr,"\nERROR in entry : index_create J2K-file Idx-file version\n\nVersion : 0, 1, 2 or 3\n\n");
-      return 1;
-    }
-
-  src=fopen(argv[1], "rb");
-  if (!src) {
-    fprintf(stderr, "Failed to open %s for reading !!\n", argv[1]);
-    return 1;
-  }
-
-  /* length of the codestream */
-  fseek(src, 0, SEEK_END);
-  totlen = ftell(src);
-  fseek(src, 0, SEEK_SET);
-  
-  j2kfile = (char*)malloc(totlen);
-  fread(j2kfile, 1, totlen, src);
-  fclose(src);
-
-  img.marker = (info_marker_t*)malloc(32 * sizeof(info_marker_t));
-  img.num_marker = 0;
-  img.num_max_tile_parts = 0;
-  img.marker_mul.num_COC = 0;
-  img.marker_mul.CzCOC = START_NB;
-  img.marker_mul.num_RGN = 0;
-  img.marker_mul.CzRGN = START_NB;
-  img.marker_mul.num_QCC = 0;
-  img.marker_mul.CzQCC = START_NB;
-  img.marker_mul.num_TLM = 0;
-  img.marker_mul.CzTLM = START_NB;
-  img.marker_mul.num_PLM = 0;
-  img.marker_mul.CzPLM = START_NB;
-  img.marker_mul.num_PPM = 0;
-  img.marker_mul.CzPPM = START_NB;
-  img.marker_mul.num_COM = 0;
-  img.marker_mul.CzCOM = START_NB;
-
-  /* decode */ 
-
-  if (!j2k_decode(j2kfile, totlen, &imgg, &cp)) {
-    fprintf(stderr, "Index_creator: failed to decode image!\n");
-    return 1;
-  }
-  free(j2kfile);
-  
-  // fseek(src, 0, SEEK_SET);
-  img.codestream_size = totlen;
-  sscanf(argv[3], "%d", &version);
-  if (version > 3)
-    {
-      fprintf(stderr,"Error : value of version unauthorized !!  Value accepted : 0, 1, 2 or 3 !!\n");
-      return 0;
-    }
-
-  j2k_index_JPIP(argv[2], argv[1], totlen * 2 > 60000 ? totlen * 2 : 60000, version);
-  
-  j2k_clean();
-  return 0;
-}
- 
diff --git a/indexer_JPIP/int.c b/indexer_JPIP/int.c
deleted file mode 100644
index 29f778c..0000000
--- a/indexer_JPIP/int.c
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * Copyright (c) 2003, Yannick Verschueren
- * Copyright (c) 2003, Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 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.
- */
-
-/// <summary>
-/// Get the minimum of two integers.
-/// </summary>
-int int_min(int a, int b) {
-    return a<b?a:b;
-}
-
-/// <summary>
-/// Get the maximum of two integers.
-/// </summary>
-int int_max(int a, int b) {
-    return a>b?a:b;
-}
-
-/// <summary>
-/// Clamp an integer inside an interval.
-/// </summary>
-int int_clamp(int a, int min, int max) {
-    if (a<min) return min;
-    if (a>max) return max;
-    return a;
-}
-
-/// <summary>
-/// Get absolute value of integer.
-/// </summary>
-int int_abs(int a) {
-    return a<0?-a:a;
-}
-
-/// <summary>
-/// Divide an integer and round upwards.
-/// </summary>
-int int_ceildiv(int a, int b) {
-    return (a+b-1)/b;
-}
-
-/// <summary>
-/// Divide an integer by a power of 2 and round upwards.
-/// </summary>
-int int_ceildivpow2(int a, int b) {
-    return (a+(1<<b)-1)>>b;
-}
-
-/// <summary>
-/// Divide an integer by a power of 2 and round downwards.
-/// </summary>
-int int_floordivpow2(int a, int b) {
-    return a>>b;
-}
-
-/// <summary>
-/// Get logarithm of an integer and round downwards.
-/// </summary>
-int int_floorlog2(int a) {
-    int l;
-    for (l=0; a>1; l++) {
-        a>>=1;
-    }
-    return l;
-}
diff --git a/indexer_JPIP/int.h b/indexer_JPIP/int.h
deleted file mode 100644
index 4921ff4..0000000
--- a/indexer_JPIP/int.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * Copyright (c) 2003, Yannick Verschueren
- * Copyright (c) 2003, Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 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 __INT_H
-#define __INT_H
-
-int int_min(int a, int b);
-int int_max(int a, int b);
-int int_clamp(int a, int min, int max);
-int int_abs(int a);
-int int_ceildiv(int a, int b);
-int int_ceildivpow2(int a, int b);
-int int_floordivpow2(int a, int b);
-int int_floorlog2(int a);
-
-#endif
diff --git a/indexer_JPIP/j2k.h b/indexer_JPIP/j2k.h
deleted file mode 100644
index e87da5d..0000000
--- a/indexer_JPIP/j2k.h
+++ /dev/null
@@ -1,289 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * Copyright (c) 2003-2004, Yannick Verschueren
- * Copyright (c) 2003-2004, Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 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.
- */
-
-#define VERSION "0.0.8"
-
-#ifdef WIN32
-#ifdef LIBJ2K_EXPORTS
-#define LIBJ2K_API __declspec(dllexport)
-#else
-#define LIBJ2K_API __declspec(dllimport)
-#endif
-#else
-#define LIBJ2K_API
-#endif
-
-#ifndef __J2K_H
-#define __J2K_H
-
-#define J2K_MAXRLVLS 33
-#define J2K_MAXBANDS (3*J2K_MAXRLVLS+1)
-
-#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
-
-typedef struct 
-{
-  int dx, dy;   /* XRsiz, YRsiz            */
-  int prec;     /* precision               */
-  int bpp;      /* deapth of image in bits */
-  int sgnd;     /* signed                  */
-  int *data;    /* image-component data    */
-} j2k_comp_t;
-
-typedef struct {
-  int version;
-  int x0, y0;          /* XOsiz, YOsiz              */
-  int x1, y1;          /* Xsiz, Ysiz                */ 
-  int numcomps;        /* number of components      */
-  int index_on;        /* 0 = no index || 1 = index */
-  j2k_comp_t *comps;   /* image-components          */
-} j2k_image_t;
-
-typedef struct {
-  int expn;     /* exponent */
-  int mant;     /* mantissa */
-} j2k_stepsize_t;
-
-typedef struct {
-  int csty;                                /* coding style                          */
-  int numresolutions;                      /* number of resolutions                 */
-  int cblkw;                               /* width of code-blocks                  */
-  int cblkh;                               /* height of code-blocks                 */
-  int cblksty;                             /* code-block coding style               */
-  int qmfbid;                              /* discrete wavelet transform identifier */
-  int qntsty;                              /* quantisation style                    */
-  j2k_stepsize_t stepsizes[J2K_MAXBANDS];  /* stepsizes used for quantisation       */
-  int numgbits;                            /* number of guard bits                  */
-  int roishift;                            /* Region of Interest shift              */
-  int prcw[J2K_MAXRLVLS];                  /* Precinct width                        */
-  int prch[J2K_MAXRLVLS];                  /* Precinct height                       */
-} j2k_tccp_t;
-
-typedef struct {
-    int resno0, compno0; 
-    int layno1, resno1, compno1;
-    int prg;
-    int tile;
-    char progorder[4];
-} j2k_poc_t;
-
-typedef struct {
-  //int first;
-  int csty;                  /* coding style                                                            */  
-  int prg;                   /* progression order                                                       */
-  int numlayers;             /* number of layers                                                        */
-  int mct;                   /* multi-component transform identifier                                    */
-  int rates[100];            /* rates of layers                                                         */
-  int numpocs;               /* number of progression order changes                                     */
-  int POC;                   /* Precise if a POC marker has been used O:NO, 1:YES                       */
-  j2k_poc_t pocs[32];        /* progression order changes                                               */
-  unsigned char *ppt_data;   /* packet header store there for futur use in t2_decode_packet             */
-  int ppt;                   /* If ppt == 1 --> there was a PPT marker for the present tile             */
-  int ppt_store;             /* Use in case of multiple marker PPT (number of info already store)       */
-  j2k_tccp_t *tccps;         /* tile-component coding parameters                                        */
-} j2k_tcp_t;
-
-typedef struct {
-  int tx0, ty0;              /* XTOsiz, YTOsiz                                                          */
-  int tdx, tdy;              /* XTsiz, YTsiz                                                            */
-  int tw, th;
-  unsigned char *ppm_data;   /* packet header store there for futur use in t2_decode_packet             */
-  int ppm;                   /* If ppm == 1 --> there was a PPM marker for the present tile             */
-  int ppm_store;             /* Use in case of multiple marker PPM (number of info already store)       */
-  int ppm_previous;          /* Use in case of multiple marker PPM (case on non-finished previous info) */
-  j2k_tcp_t *tcps;           /* tile coding parameters                                                  */
-} j2k_cp_t;
-
-
-
-
-
-/* Packet information : Layer level */
-typedef struct {  
-  int len;               /* Length of the body of the packet   */
-  int len_header;        /* Length of the header of the packet */
-  int offset;            /* Offset of the body of the packet   */
-  int offset_header;     /* Offset of the header of the packet */
-} info_layer_t;
-
-
-/* Access to packet information : precinct level */
-typedef struct {  
-  info_layer_t *layer;
-} info_prec_t;
-
-
-/* Access to packet information : resolution level */
-typedef struct {  
-  info_prec_t *prec;
-} info_reso_t;
-
-
-/* Access to packet information : component level */
-typedef struct {  
-  info_reso_t *reso;
-} info_compo_t;
-
-
-/* Information about the marker */
-typedef struct {
-  int type;       /* type of marker [SIZ, QCD, POC, PPM, CRG, COD] appearing only once */
-  int start_pos;  /* Start position of the marker                                      */
-  int len;        /* Length of the marker                                              */
-} info_marker_t;
-
-
-/* Multiple marker in tile header */
-typedef struct{
-  info_marker_t *COC;    /* COC markers                    */
-  int num_COC;           /* Number of COC marker           */
-  int CzCOC;             /* Current size of the vector COC */
-  
-  info_marker_t *RGN;    /* RGN markers                    */
-  int num_RGN;           /* Number of RGN marker           */
-  int CzRGN;             /* Current size of the vector RGN */
-  
-  info_marker_t *QCC;    /* QCC markers                    */
-  int num_QCC;           /* Number of QCC marker           */
-  int CzQCC;             /* Current size of the vector QCC */
-  
-  info_marker_t *PLT;    /* PLT markers                    */
-  int num_PLT;           /* Number of PLT marker           */
-  int CzPLT;             /* Current size of the vector PLT */
-  
-  info_marker_t *PPT;    /* PPT markers                    */
-  int num_PPT;           /* Number of PPT marker           */
-  int CzPPT;             /* Current size of the vector PPT */
-  
-  info_marker_t *COM;    /* COM markers                    */
-  int num_COM;           /* Number of COM marker           */
-  int CzCOM;             /* Current size of the vector COC */
-} info_marker_mul_tile_t; 
-
-
-/* Information about each tile_part for a particulary tile */
-typedef struct{
-  int start_pos;                      /* Start position of the tile_part       */ 
-  int length;                         /* Length of the tile_part header + body */
-  int length_header;                  /* Length of the header                  */
-  int end_pos;                        /* End position of the tile part         */
-  int end_header;                     /* End position of the tile part header  */
-
-  int num_reso_AUX;                   /* Number of resolution level completed  */
-} info_tile_part_t;
-
-
-/* Information about each tile */
-typedef struct {
-  int num_tile;                       /* Number of Tile                                                    */
-  int pw, ph;                         /* number of precinct by tile                                        */
-  int num_packet;                     /* number of packet in the tile                                      */
-  info_compo_t *compo;                /* component [packet]                                                */
-  
-  info_marker_t *marker;              /* information concerning markers inside image [only one apparition] */
-  info_marker_mul_tile_t marker_mul;  /* information concerning markers inside image [multiple apparition] */ 
-  int num_marker;                     /* number of marker                                                  */
-  
-  int numparts;                       /* number of tile_part for this tile                                 */
-  info_tile_part_t *tile_parts;       /* Information about each tile_part                                  */
-  int Cztile_parts;                   /* Current size of the tile_parts vector                             */
-} info_tile_t;                        /* index struct                                                      */
-
-
-/* Multiple marker in main header */
-typedef struct{
-  info_marker_t *COC;    /* COC markers                    */
-  int num_COC;           /* Number of COC marker           */
-  int CzCOC;             /* Current size of the vector COC */
- 
-  info_marker_t *RGN;    /* RGN markers                    */
-  int num_RGN;           /* Number of RGN marker           */
-  int CzRGN;             /* Current size of the vector RGN */
-  
-  info_marker_t *QCC;    /* QCC markers                    */
-  int num_QCC;           /* Number of QCC marker           */
-  int CzQCC;             /* Current size of the vector QCC */
-  
-  info_marker_t *TLM;    /* TLM markers                    */
-  int num_TLM;           /* Number of TLM marker           */
-  int CzTLM;             /* Current size of the vector TLM */
-  
-  info_marker_t *PLM;    /* PLM markers                    */
-  int num_PLM;           /* Number of PLM marker           */
-  int CzPLM;             /* Current size of the vector PLM */
-  
-  info_marker_t *PPM;    /* PPM markers                    */
-  int num_PPM;           /* Number of PPM marker           */
-  int CzPPM;             /* Current size of the vector PPM */
-  
-  info_marker_t *COM;    /* COM markers                    */
-  int num_COM;           /* Number of COM marker           */
-  int CzCOM;             /* Current size of the vector COM */
-} info_marker_mul_t; /* index struct */
-
-
-/* Information about image */
-typedef struct {
-  int Im_w, Im_h;                /* Image width and Height                                            */
-  int Tile_x, Tile_y;            /* Number of Tile in X and Y                                         */
-  int tw, th;
-  int pw, ph;                    /* nombre precinct in X and Y                                        */
-  int pdx, pdy;                  /* size of precinct in X and Y                                       */
-
-  int Prog;                      /* progression order                                                 */
-  int Comp;                      /* Component numbers                                                 */
-  int Layer;                     /* number of layer                                                   */
-  int Decomposition;             /* number of decomposition                                           */
-
-  int Main_head_end;             /* Main header position                                              */
-  int codestream_size;           /* codestream's size                                                 */
-
-  info_marker_t *marker;         /* information concerning markers inside image [only one apparition] */
-  info_marker_mul_t marker_mul;  /* information concerning markers inside image [multiple apparition] */ 
-  int num_marker;                /* number of marker                                                  */
-
-  int num_packet_max;            /* Maximum number of packet                                          */
-
-  int num_max_tile_parts;        /* Maximum number of tile-part                                       */
-  info_tile_t *tile;             /* information concerning tiles inside image                         */
-} info_image_t; /* index struct */
-
-
-#endif
diff --git a/indexer_JPIP/jp2.c b/indexer_JPIP/jp2.c
deleted file mode 100644
index 1c193ad..0000000
--- a/indexer_JPIP/jp2.c
+++ /dev/null
@@ -1,301 +0,0 @@
-/*
- * Copyright (c) 2003-2004, Yannick Verschueren
- * Copyright (c) 2003-2004,  Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 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 <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "j2k.h"
-#include "cio.h"
-#include "tcd.h"
-#include "int.h"
-
-#define JPIP_JPIP 0x6a706970
-
-#define JP2_JP   0x6a502020
-#define JP2_FTYP 0x66747970
-#define JP2_JP2H 0x6a703268
-#define JP2_IHDR 0x69686472
-#define JP2_COLR 0x636f6c72
-#define JP2_JP2C 0x6a703263
-#define JP2_URL  0x75726c20
-#define JP2_DBTL 0x6474626c
-#define JP2_BPCC 0x62706363
-#define JP2      0x6a703220
-
-
-void jp2_write_url(char *Idx_file)
-{
-  int len, lenp, i;
-  char str[256];
-
-  sprintf(str, "%s", Idx_file);
-  lenp=cio_tell();
-  cio_skip(4);
-  cio_write(JP2_URL, 4);  // DBTL
-  cio_write(0,1);          // VERS
-  cio_write(0,3);          // FLAG
-
-  for (i=0; i<strlen(str); i++) {
-        cio_write(str[i], 1);
-    }
-
-  len=cio_tell()-lenp;
-  cio_seek(lenp);
-  cio_write(len,4);         // L
-  cio_seek(lenp+len);
-}
-
-void jp2_write_dbtl(char *Idx_file)
-{
-  int len, lenp;
-
-  lenp=cio_tell();
-  cio_skip(4);
-  cio_write(JP2_DBTL, 4);  // DBTL
-  cio_write(1,2);           // NDR : Only 1
-  
-  jp2_write_url(Idx_file); // URL Box
-
-  len=cio_tell()-lenp;
-  cio_seek(lenp);
-  cio_write(len,4);         // L
-  cio_seek(lenp+len);
-}
-
-int jp2_write_ihdr(j2k_image_t *j2k_img)
-{
-  int len, lenp,i; 
-  int depth_0,depth, sign, BPC_ok=1;
-
-  lenp=cio_tell();
-  cio_skip(4);
-  cio_write(JP2_IHDR, 4);  // IHDR
-
-  cio_write(j2k_img->y1-j2k_img->x0,4);   // HEIGHT
-  cio_write(j2k_img->x1-j2k_img->x0,4);   // WIDTH
-  cio_write(j2k_img->numcomps,2);   // NC
-
-  depth_0=j2k_img->comps[0].prec-1;
-  sign=j2k_img->comps[0].sgnd;
-
-  for(i=1;i<j2k_img->numcomps;i++)
-    {
-      depth=j2k_img->comps[i].prec-1;
-      sign=j2k_img->comps[i].sgnd;
-      if(depth_0!=depth) BPC_ok=0;
-    }
-  
-  if (BPC_ok)
-    cio_write(depth_0+(sign<<7),1);
-  else
-    cio_write(255,1);
-
-  cio_write(7,1);          // C : Always 7
-  cio_write(1,1);          // UnkC, colorspace unknow
-  cio_write(0,1);          // IPR, no intellectual property
-
-  len=cio_tell()-lenp;
-  cio_seek(lenp);
-  cio_write(len,4);         // L
-  cio_seek(lenp+len);
-
-  return BPC_ok;
-}
-
-void jp2_write_bpcc(j2k_image_t *j2k_img)
-{
-  int len, lenp, i;
-  
-  lenp=cio_tell();
-  cio_skip(4);
-  cio_write(JP2_BPCC, 4);  // BPCC
-  
-  for(i=0;i<j2k_img->numcomps;i++)
-    cio_write(j2k_img->comps[i].prec-1+(j2k_img->comps[i].sgnd<<7),1);
-
-  len=cio_tell()-lenp;
-  cio_seek(lenp);
-  cio_write(len,4);         // L
-  cio_seek(lenp+len);
-}
-
-void jp2_write_colr(int BPC_ok, j2k_image_t *j2k_img)
-{
-  int len, lenp, meth;
-  
-  lenp=cio_tell();
-  cio_skip(4);
-  cio_write(JP2_COLR, 4);  // COLR
-
-  if ((j2k_img->numcomps==1 || j2k_img->numcomps==3) && (BPC_ok && j2k_img->comps[0].prec==8))
-    meth=1;
-  else
-    meth=2;
-
-  cio_write(meth,1);       // METH
-  cio_write(0,1);          // PREC
-  cio_write(0,1);          // APPROX
-  
-  if (meth==1)
-    cio_write(j2k_img->numcomps>1?16:17,4);          // EnumCS
-
-  if (meth==2)
-    cio_write(0,1);        // PROFILE (??) 
-
-  len=cio_tell()-lenp;
-  cio_seek(lenp);
-  cio_write(len,4);         // L
-  cio_seek(lenp+len);
-}
-
-/*
- * Write the JP2H box
- *
- * JP2 Header box
- *
- */
-void jp2_write_jp2h(j2k_image_t *j2k_img)
-{
-  int len, lenp, BPC_ok;
-  
-  lenp=cio_tell();
-  cio_skip(4);
-  cio_write(JP2_JP2H, 4);           /* JP2H */
-
-  BPC_ok=jp2_write_ihdr(j2k_img);
-
-  if (!BPC_ok)
-    jp2_write_bpcc(j2k_img);
-  jp2_write_colr(BPC_ok, j2k_img);
-
-  len=cio_tell()-lenp;
-  cio_seek(lenp);
-  cio_write(len,4);         /* L */
-  cio_seek(lenp+len);
-}
-
-/*
- * Write the FTYP box
- *
- * File type box
- *
- */
-void jp2_write_ftyp()
-{
-  int len, lenp;
-  
-  lenp=cio_tell();
-  cio_skip(4);
-  cio_write(JP2_FTYP, 4);   /* FTYP       */
-
-  cio_write(JP2,4);         /* BR         */
-  cio_write(0,4);           /* MinV       */
-  cio_write(JP2,4);         /* CL0 : JP2  */
-  cio_write(JPIP_JPIP,4);   /* CL1 : JPIP */
-
-  len=cio_tell()-lenp;
-  cio_seek(lenp);
-  cio_write(len,4);         /* L          */
-  cio_seek(lenp+len);
-}
-
-/*
- * Read the FTYP box
- *
- * File type box
- *
- */
-void jp2_read_ftyp(int length)
-{
-  int BR, MinV, type, i;
-
-  BR = cio_read(4);         /* BR              */
-  MinV = cio_read(4);       /* MinV            */
-  length-=8;
-  
-  for (i=length/4;i>0;i--)
-    type = cio_read(4);     /* CLi : JP2, JPIP */
-}
-
-int jp2_write_jp2c(char *J2K_file)
-{
-  int len, lenp, totlen, i;
-  FILE *src;
-  char *j2kfile;
-
-  lenp=cio_tell();
-  cio_skip(4);
-  cio_write(JP2_JP2C, 4);  // JP2C
-
-  src=fopen(J2K_file, "rb");
-  fseek(src, 0, SEEK_END);
-  totlen=ftell(src);
-  fseek(src, 0, SEEK_SET);
-  
-  j2kfile=(char*)malloc(totlen);
-  fread(j2kfile, 1, totlen, src);
-  fclose(src);
-
-  for (i=0;i<totlen;i++)
-    cio_write(j2kfile[i],1);
-  
-  len=cio_tell()-lenp;
-  cio_seek(lenp);
-  cio_write(len,4);         // L
-  cio_seek(lenp+len);
-  return lenp;
-}
-
-void jp2_write_jp()
-{
-  int len, lenp;
-  
-  lenp=cio_tell();
-  cio_skip(4);
-  cio_write(JP2_JP, 4);  // JP
-  cio_write(0x0d0a870a,4);
-  len=cio_tell()-lenp;
-  cio_seek(lenp);
-  cio_write(len,4);         // L
-  cio_seek(lenp+len);
-}
-
-/*
- * Read the JP box
- *
- * JPEG 2000 signature
- *
- * return 1 if error else 0
- */
-int jp2_read_jp()
-{
-  if (0x0d0a870a!=cio_read(4))
-    return 1;
-  else
-    return 0;
-}
diff --git a/indexer_JPIP/jp2.h b/indexer_JPIP/jp2.h
deleted file mode 100644
index d5510f5..0000000
--- a/indexer_JPIP/jp2.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (c) 2003, Yannick Verschueren
- * Copyright (c) 2003,  Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 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 __JP2_H
-#define __JP2_H
-
-#include "j2k.h"
-
-void jp2_write_url(char *Idx_file);
-
-void jp2_write_dbtl(char *Idx_file);
-
-void jp2_write_jp2h(j2k_image_t *j2k_img);
-
-void jp2_write_ftyp();
-
-int jp2_write_jp2c(char *J2K_file);
-
-void jp2_write_jp();
-
-#endif
diff --git a/indexer_JPIP/jpip.c b/indexer_JPIP/jpip.c
deleted file mode 100644
index 1e43a87..0000000
--- a/indexer_JPIP/jpip.c
+++ /dev/null
@@ -1,769 +0,0 @@
-/*
- * Copyright (c) 2003-2004, Yannick Verschueren
- * Copyright (c) 2003-2004, Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 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 <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <setjmp.h>
-#include <math.h>
-#include <unistd.h>
-
-#include "j2k.h"
-#include "cio.h"
-#include "tcd.h"
-#include "int.h"
-
-#define JPIP_CIDX 0x63696478   /* Codestream index                */
-#define JPIP_CPTR 0x63707472   /* Codestream Finder Box           */
-#define JPIP_MANF 0x6d616e66   /* Manifest Box                    */
-#define JPIP_FAIX 0x66616978   /* Fragment array Index box        */
-#define JPIP_MHIX 0x6d686978   /* Main Header Index Table         */
-#define JPIP_TPIX 0x74706978   /* Tile-part Index Table box       */
-#define JPIP_THIX 0x74686978   /* Tile header Index Table box     */
-#define JPIP_PPIX 0x70706978   /* Precinct Packet Index Table box */
-#define JPIP_PHIX 0x70686978   /* Packet Header index Table       */
-#define JPIP_FIDX 0x66696478   /* File Index                      */
-#define JPIP_FPTR 0x66707472   /* File Finder                     */
-#define JPIP_PRXY 0x70727879   /* Proxy boxes                     */
-#define JPIP_IPTR 0x69707472   /* Index finder box                */
-#define JPIP_PHLD 0x70686c64   /* Place holder                    */
-
-#define JP2C      0x6a703263
-
-//static info_marker_t marker_jpip[32], marker_local_jpip[32];  /* SIZE to precise ! */
-//static int num_marker_jpip, num_marker_local_jpip;
-
-/* 
- * Write the CPTR box
- *
- * Codestream finder box (box)
- *
- */
-void jpip_write_cptr(int offset, info_image_t img)
-{
-  int len, lenp;
-
-  lenp=cio_tell(); 
-  cio_skip(4);                       /* L [at the end]     */
-  cio_write(JPIP_CPTR,4);            /* T                  */
-  cio_write(0,2);                    /* DR  A PRECISER !!  */
-  cio_write(0,2);                    /* CONT               */
-  cio_write(offset,8);               /* COFF A PRECISER !! */
-  cio_write(img.codestream_size,8);  /* CLEN               */
-  len=cio_tell()-lenp;
-  cio_seek(lenp);
-  cio_write(len, 4);                 /* L                  */
-  cio_seek(lenp+len);
-}
-
-/* 
- * Read the CPTR box
- *
- * Codestream finder box (box)
- *
- */
-void jpip_read_cptr()
-{
-  int DR, CONT;
-  long long Coff, codestream_size;
-
-  DR = cio_read(2);               /* DR   */
-  CONT = cio_read(2);             /* CONT */
-  Coff = cio_read(8);             /* COFF */
-  codestream_size = cio_read(8);  /* CLEN */
-}
-
-/* 
- * Write the MANF box
- *
- * Manifest box (box)
- *
- */
-void jpip_write_manf(int second, int v, info_marker_t *marker)
-{
-  int len, lenp, i;
-  lenp=cio_tell(); 
-  cio_skip(4);                         /* L [at the end]                    */
-  cio_write(JPIP_MANF,4);              /* T                                 */
-
-  if (second)                          /* Write only during the second pass */
-    {
-      for(i=0;i<v;i++)
-	{
-	  cio_write(marker[i].len,4);  /* Marker length                     */ 
-	  cio_write(marker[i].type,4); /* Marker type                       */
-	}
-    }
-
-  len=cio_tell()-lenp;
-  cio_seek(lenp);
-  cio_write(len, 4);                   /* L                                 */
-  cio_seek(lenp+len);
-}
-
-/* 
- * Read the MANF box
- *
- * Manifest box (box)
- *
- */
-void jpip_read_manf(int len)
-{
-  int i, v, marker_len, marker_type;
-  
-  v = (len - 8)/ 8;
-  
-  for(i=0;i<v;i++)
-    {
-      marker_len = cio_read(4);       /* Marker length */ 
-      marker_type = cio_read(4);      /* Marker type   */
-    }
-}
-
-/* 
- * Write the MHIX box
- *
- * Main Header Index Table (box)
- *
- */
-int jpip_write_mhix(info_image_t img, int status, int tileno)
-{
-  int len, lenp, i;
-  info_tile_t *tile;
-  lenp=cio_tell();
-  cio_skip(4);                               /* L [at the end]                    */
-  cio_write(JPIP_MHIX, 4);                   /* MHIX                              */
-
-  if (status) /* MAIN HEADER */
-    {
-      cio_write(img.Main_head_end,8);        /* TLEN                              */
-      
-      for(i = 0; i < img.num_marker; i++)    /* Marker restricted to 1 apparition */
-	{
-	  cio_write(img.marker[i].type, 2);
-	  cio_write(0, 2);
-	  cio_write(img.marker[i].start_pos, 8);
-	  cio_write(img.marker[i].len, 2);
-	}
-      
-      /* Marker NOT restricted to 1 apparition */
-      for(i = img.marker_mul.num_COC - 1; i >= 0; i--) /* COC */
-	{
-	  cio_write(img.marker_mul.COC[i].type, 2);
-	  cio_write(i, 2);
-	  cio_write(img.marker_mul.COC[i].start_pos, 8);
-	  cio_write(img.marker_mul.COC[i].len, 2);
-	}
-      
-      for(i = img.marker_mul.num_RGN - 1; i >= 0; i--) /* RGN */
-	{
-	  cio_write(img.marker_mul.RGN[i].type, 2);
-	  cio_write(i, 2);
-	  cio_write(img.marker_mul.RGN[i].start_pos, 8);
-	  cio_write(img.marker_mul.RGN[i].len, 2);
-	}
-      
-      for(i = img.marker_mul.num_QCC - 1; i >= 0; i--) /* QCC */
-	{
-	  cio_write(img.marker_mul.QCC[i].type, 2);
-	  cio_write(i, 2);
-	  cio_write(img.marker_mul.QCC[i].start_pos, 8);
-	  cio_write(img.marker_mul.QCC[i].len, 2);
-	}
-      
-      for(i = img.marker_mul.num_TLM - 1; i >= 0; i--) /* TLM */
-	{
-	  cio_write(img.marker_mul.TLM[i].type, 2);
-	  cio_write(i, 2);
-	  cio_write(img.marker_mul.TLM[i].start_pos, 8);
-	  cio_write(img.marker_mul.TLM[i].len, 2);
-	}
-      
-      for(i = img.marker_mul.num_PLM - 1; i >= 0; i--) /* PLM */
-	{
-	  cio_write(img.marker_mul.PLM[i].type, 2);
-	  cio_write(i, 2);
-	  cio_write(img.marker_mul.PLM[i].start_pos, 8);
-	  cio_write(img.marker_mul.PLM[i].len, 2);
-	}
-      
-      for(i = img.marker_mul.num_PPM - 1; i >= 0; i--) /* PPM */
-	{
-	  cio_write(img.marker_mul.PPM[i].type, 2);
-	  cio_write(i, 2);
-	  cio_write(img.marker_mul.PPM[i].start_pos, 8);
-	  cio_write(img.marker_mul.PPM[i].len, 2);
-	}
-
-      for(i = img.marker_mul.num_COM - 1; i >= 0; i--) /* COM */
-	{
-	  cio_write(img.marker_mul.COM[i].type, 2);
-	  cio_write(i, 2);
-	  cio_write(img.marker_mul.COM[i].start_pos, 8);
-	  cio_write(img.marker_mul.COM[i].len, 2);
-	}
-    } 
-  else /* TILE HEADER */
-    {
-      tile = &img.tile[tileno];
-      cio_write(tile->tile_parts[0].length_header, 8);  /* TLEN                              */ 
-      
-      for(i = 0; i < tile->num_marker; i++)             /* Marker restricted to 1 apparition */
-	{
-	  cio_write(tile->marker[i].type, 2);
-	  cio_write(0, 2);
-	  cio_write(tile->marker[i].start_pos, 8);
-	  cio_write(tile->marker[i].len, 2);
-	}
-      
-      /* Marker NOT restricted to 1 apparition */
-      for(i = tile->marker_mul.num_COC - 1; i >= 0; i--) /* COC */
-	{
-	  cio_write(tile->marker_mul.COC[i].type, 2);
-	  cio_write(i, 2);
-	  cio_write(tile->marker_mul.COC[i].start_pos, 8);
-	  cio_write(tile->marker_mul.COC[i].len, 2);
-	}
-      
-      for(i = tile->marker_mul.num_RGN - 1; i >= 0; i--) /* RGN */
-	{
-	  cio_write(tile->marker_mul.RGN[i].type, 2);
-	  cio_write(i, 2);
-	  cio_write(tile->marker_mul.RGN[i].start_pos, 8);
-	  cio_write(tile->marker_mul.RGN[i].len, 2);
-	}
-      
-      for(i = tile->marker_mul.num_QCC - 1; i >= 0; i--) /* QCC */
-	{
-	  cio_write(tile->marker_mul.QCC[i].type, 2);
-	  cio_write(i, 2);
-	  cio_write(tile->marker_mul.QCC[i].start_pos, 8);
-	  cio_write(tile->marker_mul.QCC[i].len, 2);
-	}
-      
-      for(i = tile->marker_mul.num_PLT - 1; i >= 0; i--) /* PLT */
-	{
-	  cio_write(tile->marker_mul.PLT[i].type,2);
-	  cio_write(i,2);
-	  cio_write(tile->marker_mul.PLT[i].start_pos,8);
-	  cio_write(tile->marker_mul.PLT[i].len,2);
-	}
-      
-      for(i = tile->marker_mul.num_PPT - 1; i >= 0; i--) /* PPT */
-	{
-	  cio_write(tile->marker_mul.PPT[i].type, 2);
-	  cio_write(i, 2);
-	  cio_write(tile->marker_mul.PPT[i].start_pos, 8);
-	  cio_write(tile->marker_mul.PPT[i].len, 2);
-	}
-      
-      for(i = tile->marker_mul.num_COM - 1; i >= 0; i--) /* COM */
-	{
-	  cio_write(tile->marker_mul.COM[i].type, 2);
-	  cio_write(i, 2);
-	  cio_write(tile->marker_mul.COM[i].start_pos, 8);
-	  cio_write(tile->marker_mul.COM[i].len, 2);
-	} 
-    }      
-  
-  len=cio_tell()-lenp;
-  cio_seek(lenp);
-  cio_write(len, 4);        /* L           */
-  cio_seek(lenp+len);
-  
-  return len;
-}
-
-/* 
- * Read the MHIX box
- *
- * Main Header Index Table (box)
- *
- */
-void jpip_read_mhix(int len)
-{
-  int i, v, marker_type, marker_start_pos, marker_len, marker_remains;
-
-  v = (len - 8) / 14;
-
-  for (i=0; i<v ; i++)
-    {
-      marker_type = cio_read(2);       /* Type of the marker               */ 
-      marker_remains = cio_read(2);    /* Number of same markers following */
-      marker_start_pos = cio_read(2);  /* Start position of the marker     */
-      marker_len = cio_read(2);        /* Length of the marker             */
-    }
-}
-
-/* 
- * Write the FAIX box
- *
- * Fragment array Index box (box)
- *
- */
-int jpip_write_faix(int v, int compno, info_image_t img, j2k_cp_t *j2k_cp, int version)
-{
-  int len, lenp, i, j;
-  /*int version = 0;*/
-  int tileno, resno, precno, layno, num_packet=0;
-
-  lenp=cio_tell();
-  cio_skip(4);              /* L [at the end]      */
-  cio_write(JPIP_FAIX, 4);  /* FAIX                */ 
-  cio_write(version,1);     /* Version 0 = 4 bytes */
-  
-  switch(v)
-    {
-    case 0:   /* TPIX */
-      cio_write(img.num_max_tile_parts,(version & 0x01)?8:4);                      /* NMAX           */
-      cio_write(img.tw*img.th,(version & 0x01)?8:4);                               /* M              */
-      for (i = 0; i < img.tw*img.th; i++)
-	{
-	  for (j = 0; j < img.tile[i].numparts ; j++)
-	    {
-	      cio_write(img.tile[i].tile_parts[j].start_pos,(version & 0x01)?8:4); /* start position */
-	      cio_write(img.tile[i].tile_parts[j].length,(version & 0x01)?8:4);    /* length         */
-	      if (version & 0x02)
-		cio_write(img.tile[i].tile_parts[j].num_reso_AUX,4); /* Aux_i,j : Auxiliary value */
-	      //cio_write(0,4);
-	    }
-	  /* PADDING */
-	  while (j < img.num_max_tile_parts)
-	    {
-	      cio_write(0,(version & 0x01)?8:4); /* start position            */
-	      cio_write(0,(version & 0x01)?8:4); /* length                    */
-	      if (version & 0x02)
-		cio_write(0,4);                  /* Aux_i,j : Auxiliary value */
-	      j++;
-	    }
-	}
-      break;
-      
-      /*   case 1: */   /* THIX */
-      /* cio_write(1,(version & 0x01)?8:4);  */           /* NMAX */
-      /* cio_write(img.tw*img.th,(version & 0x01)?8:4); */ /* M    */
-      /* for (i=0;i<img.tw*img.th;i++) */
-      /* { */
-      /* cio_write(img.tile[i].start_pos,(version & 0x01)?8:4); */                         /* start position */
-      /* cio_write(img.tile[i].end_header-img.tile[i].start_pos,(version & 0x01)?8:4); */  /* length         */
-      /* if (version & 0x02)*/
-      /* cio_write(0,4); */ /* Aux_i,j : Auxiliary value */
-      /* } */
-      /* break; */
-
-    case 2:  /* PPIX  NOT FINISHED !! */
-      cio_write(img.num_packet_max,(version & 0x01)?8:4); /* NMAX */
-      cio_write(img.tw*img.th,(version & 0x01)?8:4);      /* M    */
-      for(tileno=0;tileno<img.tw*img.th;tileno++)
-	{
-	  info_tile_t *tile_Idx = &img.tile[tileno];
-	  info_compo_t *compo_Idx = &tile_Idx->compo[compno];
-	  int correction;
-	  
-	  num_packet=0;
-	  
-	  if(j2k_cp->tcps[tileno].csty&J2K_CP_CSTY_EPH)
-	    correction=3;
-	  else
-	    correction=1;
-	  for(resno=0;resno<img.Decomposition+1;resno++)
-	    {
-	      info_reso_t *reso_Idx = &compo_Idx->reso[resno];
-	      for (precno=0;precno<img.tile[tileno].pw*img.tile[tileno].ph;precno++)
-		{
-		  info_prec_t *prec_Idx = &reso_Idx->prec[precno];
-		  for(layno=0;layno<img.Layer;layno++)
-		    {
-		      info_layer_t *layer_Idx = &prec_Idx->layer[layno];
-		      cio_write(layer_Idx->offset,(version & 0x01)?8:4);                                   /* start position */
-		      cio_write((layer_Idx->len_header-correction)?0:layer_Idx->len,(version & 0x01)?8:4); /* length         */
-		      if (version & 0x02)
-			cio_write(0,4); /* Aux_i,j : Auxiliary value */
-		      num_packet++;
-		    }
-		}
-	    }
-	  /* PADDING */
-	  while (num_packet < img.num_packet_max)
-	    {
-	      cio_write(0,(version & 0x01)?8:4); /* start position            */
-	      cio_write(0,(version & 0x01)?8:4); /* length                    */
-	      if (version & 0x02)
-		cio_write(0,4);                  /* Aux_i,j : Auxiliary value */
-	      num_packet++;
-	    }
-	}
-      
-      break;
-      
-    case 3:  /* PHIX NOT FINISHED !! */
-      cio_write(img.num_packet_max,(version & 0x01)?8:4); /* NMAX */
-      cio_write(img.tw*img.th,(version & 0x01)?8:4);      /* M    */
-      for(tileno=0;tileno<img.tw*img.th;tileno++)
-	{
-	  info_tile_t *tile_Idx = &img.tile[tileno];
-	  info_compo_t *compo_Idx = &tile_Idx->compo[compno];
-	  int correction;
-
-	  num_packet = 0;
-	  if(j2k_cp->tcps[tileno].csty&J2K_CP_CSTY_EPH)
-	    correction=3;
-	  else
-	    correction=1;
-	  for(resno=0;resno<img.Decomposition+1;resno++)
-	    {
-	      info_reso_t *reso_Idx = &compo_Idx->reso[resno];
-	      for (precno=0;precno<img.tile[tileno].pw*img.tile[tileno].ph;precno++)
-		{
-		  info_prec_t *prec_Idx = &reso_Idx->prec[precno];
-		  for(layno=0;layno<img.Layer;layno++)
-		    {
-		      info_layer_t *layer_Idx = &prec_Idx->layer[layno];
-		      cio_write(layer_Idx->offset_header,(version & 0x01)?8:4);                                   /* start position */
-		      cio_write((layer_Idx->len_header-correction)?0:layer_Idx->len_header,(version & 0x01)?8:4); /* length         */
-		      if (version & 0x02)
-			cio_write(0,4); /* Aux_i,j : Auxiliary value */
-		      num_packet++;
-		    }
-		}
-	    }
-	  /* PADDING */
-	  while (num_packet<img.num_packet_max)
-	    {
-	      cio_write(0,(version & 0x01)?8:4); /* start position            */
-	      cio_write(0,(version & 0x01)?8:4); /* length                    */
-	      if (version & 0x02)
-		cio_write(0,4);                  /* Aux_i,j : Auxiliary value */
-	      num_packet++;
-	    }
-	}
-      break;
-    }
-  
-  len=cio_tell()-lenp;
-  cio_seek(lenp);
-  cio_write(len, 4);        /* L  */
-  cio_seek(lenp+len);
-
-  return len;
-}
-
-/* 
- * Write the TPIX box
- *
- * Tile-part Index table box (superbox)
- *
- */
-int jpip_write_tpix(info_image_t img, j2k_cp_t *j2k_cp, int version)
-{
-  int len, lenp;
-  lenp=cio_tell();
-  cio_skip(4);              /* L [at the end] */
-  cio_write(JPIP_TPIX, 4);  /* TPIX           */
-  
-  jpip_write_faix(0,0,img, j2k_cp, version);
-
-  len=cio_tell()-lenp;
-  cio_seek(lenp);
-  cio_write(len, 4);        /* L              */
-  cio_seek(lenp+len);
-
-  return len;
-}
-
-/* 
- * Write the THIX box
- *
- * Tile header Index table box (superbox)
- *
- */
-//int jpip_write_thix(info_image_t img, j2k_cp_t *j2k_cp)
-//  {
-//  int len, lenp;
-//  lenp=cio_tell();
-//  cio_skip(4);              /* L [at the end] */
-//  cio_write(JPIP_THIX, 4);  /* THIX           */
-  
-//  jpip_write_faix(1,0,img, j2k_cp);
-
-//  len=cio_tell()-lenp;
-//  cio_seek(lenp);
-//  cio_write(len, 4);        /* L              */
-//  cio_seek(lenp+len);
-
-//  return len;
-//}
-
-int jpip_write_thix(info_image_t img, j2k_cp_t *j2k_cp)
-{
-  int len, lenp, i;
-  int tileno;
-  info_marker_t *marker;
-  int num_marker_local_jpip;
-
-  marker = (info_marker_t*)calloc(sizeof(info_marker_t), j2k_cp->tw*j2k_cp->th);
-
-  for ( i = 0; i < 2 ; i++ )
-    {
-      if (i) cio_seek(lenp);
-      
-      lenp = cio_tell();
-      cio_skip(4);              /* L [at the end] */
-      cio_write(JPIP_THIX, 4);  /* THIX           */
-      jpip_write_manf(i, j2k_cp->tw*j2k_cp->th, marker);
-      num_marker_local_jpip=img.Comp;
-      
-      for (tileno = 0; tileno < j2k_cp->tw*j2k_cp->th; tileno++)
-	{
-	  marker[tileno].len = jpip_write_mhix(img, 1, tileno);
-	  marker[tileno].type = JPIP_MHIX;
-	}
-      
-      len=cio_tell()-lenp;
-      cio_seek(lenp);
-      cio_write(len, 4);        /* L              */
-      cio_seek(lenp+len);
-    }
-
-  free(marker);
-
-  return len;
-}
-/* 
- * Write the PPIX box
- *
- * Precinct Packet Index table box (superbox)
- *
- */
-int jpip_write_ppix(info_image_t img,j2k_cp_t *j2k_cp)
-{
-  int len, lenp, compno, i;
-  info_marker_t *marker;
-  int num_marker_local_jpip;
-  marker = (info_marker_t*)calloc(sizeof(info_marker_t), img.Comp);
-  
-  for (i=0;i<2;i++)
-    {
-      if (i) cio_seek(lenp);
-      
-      lenp=cio_tell();
-      cio_skip(4);              /* L [at the end] */
-      cio_write(JPIP_PPIX, 4);  /* PPIX           */
-      jpip_write_manf(i,img.Comp,marker);
-      num_marker_local_jpip=img.Comp;
-      
-      for (compno=0; compno<img.Comp; compno++)
-	{
-	  marker[compno].len=jpip_write_faix(2,compno,img, j2k_cp, 0);
-	  marker[compno].type=JPIP_FAIX;
-	}
-   
-      len=cio_tell()-lenp;
-      cio_seek(lenp);
-      cio_write(len, 4);        /* L              */
-      cio_seek(lenp+len);
-    }
-  
-  free(marker);
-
-  return len;
-}
-
-/* 
- * Write the PHIX box
- *
- * Packet Header Index table box (superbox)
- *
- */
-int jpip_write_phix(info_image_t img, j2k_cp_t *j2k_cp)
-{
-  int len, lenp=0, compno, i;
-  info_marker_t *marker;
-
-  marker = (info_marker_t*)calloc(sizeof(info_marker_t), img.Comp);
-
-  for (i=0;i<2;i++)
-    {
-      if (i) cio_seek(lenp);
-      
-      lenp=cio_tell();
-      cio_skip(4);              /* L [at the end] */
-      cio_write(JPIP_PHIX, 4);  /* PHIX           */
-      
-      jpip_write_manf(i,img.Comp,marker);
-
-      for (compno=0; compno<img.Comp; compno++)
-	{	
-	  marker[compno].len=jpip_write_faix(3,compno,img, j2k_cp, 0);
-	  marker[compno].type=JPIP_FAIX;
-	}
-
-      len=cio_tell()-lenp;
-      cio_seek(lenp);
-      cio_write(len, 4);        /* L              */
-      cio_seek(lenp+len);
-    }
-
-  free(marker);
-
-  return len;
-}
-
-/* 
- * Write the CIDX box
- *
- * Codestream Index box (superbox)
- *
- */
-int jpip_write_cidx(int offset, info_image_t img, j2k_cp_t *j2k_cp, int version)
-{
-  int len, lenp = 0, i;
-  info_marker_t *marker_jpip;
-  int num_marker_jpip = 0;
-
-  marker_jpip = (info_marker_t*)calloc(sizeof(info_marker_t), 32);
-
-  for (i=0;i<2;i++)
-    {
-      if(i)
-	cio_seek(lenp);
-
-      lenp=cio_tell();
-
-      cio_skip(4);              /* L [at the end] */
-      cio_write(JPIP_CIDX, 4);  /* CIDX           */
-      jpip_write_cptr(offset, img);
-
-      jpip_write_manf(i,num_marker_jpip, marker_jpip);
-
-      num_marker_jpip=0;
-      marker_jpip[num_marker_jpip].len=jpip_write_mhix(img, 0, 0);
-      marker_jpip[num_marker_jpip].type=JPIP_MHIX;
-      num_marker_jpip++;
-
-      marker_jpip[num_marker_jpip].len=jpip_write_tpix(img, j2k_cp, version);
-      marker_jpip[num_marker_jpip].type=JPIP_TPIX;
-      num_marker_jpip++;
-
-      marker_jpip[num_marker_jpip].len=jpip_write_thix(img, j2k_cp);
-      marker_jpip[num_marker_jpip].type=JPIP_THIX;
-      num_marker_jpip++;
-
-      marker_jpip[num_marker_jpip].len=jpip_write_ppix(img, j2k_cp);
-      marker_jpip[num_marker_jpip].type=JPIP_PPIX;
-      num_marker_jpip++;
-
-      marker_jpip[num_marker_jpip].len=jpip_write_phix(img, j2k_cp);
-      marker_jpip[num_marker_jpip].type=JPIP_PHIX;
-      num_marker_jpip++;
-
-      len=cio_tell()-lenp;
-      cio_seek(lenp);
-      cio_write(len, 4);        /* L             */
-      cio_seek(lenp+len);
-    }
-
-  free(marker_jpip);
-
-  return len;
-
-}
-
-/* 
- * Write the IPTR box
- *
- * Index Finder box
- *
- */
-void jpip_write_iptr(int offset, int length)
-{
-  int len, lenp;
-  lenp=cio_tell();
-  cio_skip(4);              /* L [at the end] */
-  cio_write(JPIP_IPTR, 4);  /* IPTR           */
-  
-  cio_write(offset,8);
-  cio_write(length,8);
-
-  len=cio_tell()-lenp;
-  cio_seek(lenp);
-  cio_write(len, 4);        /* L             */
-  cio_seek(lenp+len);
-}
-
-/* 
- * Write the PRXY box
- *
- * proxy (box)
- *
- */
-void jpip_write_prxy(int offset_jp2c, int length_jp2c, int offset_idx, int length_idx)
-{
-  int len, lenp;
-  lenp=cio_tell();
-  cio_skip(4);              /* L [at the end] */
-  cio_write(JPIP_PRXY, 4);  /* IPTR           */
-  
-  cio_write(offset_jp2c,8); /* OOFF           */
-  cio_write(length_jp2c,4); /* OBH part 1     */
-  cio_write(JP2C,4);        /* OBH part 2     */
-  
-  cio_write(1,1);           /* NI             */
-
-  cio_write(offset_idx,8);  /* IOFF           */
-  cio_write(length_idx,4);  /* IBH part 1     */
-  cio_write(JPIP_CIDX,4);   /* IBH part 2     */
-
-  len=cio_tell()-lenp;
-  cio_seek(lenp);
-  cio_write(len, 4);        /* L              */
-  cio_seek(lenp+len);
-}
-
-
-/* 
- * Write the FIDX box
- *
- * File Index (superbox)
- *
- */
-int jpip_write_fidx(int offset_jp2c, int length_jp2c, int offset_idx, int length_idx)
-{
-  int len, lenp;
-  lenp=cio_tell();
-  cio_skip(4);              /* L [at the end] */
-  cio_write(JPIP_FIDX, 4);  /* IPTR           */
-  
-  jpip_write_prxy(offset_jp2c, length_jp2c, offset_idx, offset_jp2c);
-
-  len=cio_tell()-lenp;
-  cio_seek(lenp);
-  cio_write(len, 4);        /* L              */
-  cio_seek(lenp+len);
-
-  return len;
-}
diff --git a/indexer_JPIP/jpip.h b/indexer_JPIP/jpip.h
deleted file mode 100644
index 84df355..0000000
--- a/indexer_JPIP/jpip.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 2003, Yannick Verschueren
- * Copyright (c) 2003,  Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 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 __JPIP_H
-#define __JPIP_H
-
-#include "j2k.h"
-
-// Codestream index box (superbox)
-int jpip_write_cidx(int offset, info_image_t img, j2k_cp_t *j2k_cp, int version);
-
-// Index Finder Box
-void jpip_write_iptr(int offset, int length);
-
-// File Index Box
-int jpip_write_fidx(int offset_jp2c, int length_jp2c, int offset_idx, int length_idx);
-
-#endif
diff --git a/indexer_JPIP/pi.c b/indexer_JPIP/pi.c
deleted file mode 100644
index 691ef49..0000000
--- a/indexer_JPIP/pi.c
+++ /dev/null
@@ -1,465 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * Copyright (c) 2003-2004, Yannick Verschueren
- * Copyright (c) 2003-2004, Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 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 "pi.h"
-#include "int.h"
-#include <stdlib.h>
-#include <stdio.h>
-
-
-/* <summary> */
-/* Create a packet iterator.   */
-/* </summary> */
-pi_iterator_t *pi_create(j2k_image_t * img, j2k_cp_t * cp, int tileno)
-{
-	int p, q;
-	int compno, resno, pino;
-	int maxres = 0;
-	pi_iterator_t *pi;
-	j2k_tcp_t *tcp;
-	j2k_tccp_t *tccp;
-
-	tcp = &cp->tcps[tileno];
-	pi = (pi_iterator_t *) malloc((tcp->numpocs + 1) * sizeof(pi_iterator_t));
-
-	for (pino = 0; pino < tcp->numpocs + 1; pino++) {	/* change */
-		p = tileno % cp->tw;
-		q = tileno / cp->tw;
-
-		pi[pino].tx0 = int_max(cp->tx0 + p * cp->tdx, img->x0);
-		pi[pino].ty0 = int_max(cp->ty0 + q * cp->tdy, img->y0);
-		pi[pino].tx1 = int_min(cp->tx0 + (p + 1) * cp->tdx, img->x1);
-		pi[pino].ty1 = int_min(cp->ty0 + (q + 1) * cp->tdy, img->y1);
-		pi[pino].numcomps = img->numcomps;
-		pi[pino].comps = (pi_comp_t *) malloc(img->numcomps * sizeof(pi_comp_t));
-
-		for (compno = 0; compno < pi->numcomps; compno++) {
-			int tcx0, tcy0, tcx1, tcy1;
-			pi_comp_t *comp = &pi[pino].comps[compno];
-			tccp = &tcp->tccps[compno];
-			comp->dx = img->comps[compno].dx;
-			comp->dy = img->comps[compno].dy;
-			comp->numresolutions = tccp->numresolutions;
-			comp->resolutions =
-				(pi_resolution_t *) malloc(comp->numresolutions *
-																	 sizeof(pi_resolution_t));
-			tcx0 = int_ceildiv(pi->tx0, comp->dx);
-			tcy0 = int_ceildiv(pi->ty0, comp->dy);
-			tcx1 = int_ceildiv(pi->tx1, comp->dx);
-			tcy1 = int_ceildiv(pi->ty1, comp->dy);
-			if (comp->numresolutions > maxres) {
-				maxres = comp->numresolutions;
-			}
-			for (resno = 0; resno < comp->numresolutions; resno++) {
-				int levelno;
-				int rx0, ry0, rx1, ry1;
-				int px0, py0, px1, py1;
-				pi_resolution_t *res = &comp->resolutions[resno];
-				if (tccp->csty & J2K_CCP_CSTY_PRT) {
-					res->pdx = tccp->prcw[resno];
-					res->pdy = tccp->prch[resno];
-				} else {
-					res->pdx = 15;
-					res->pdy = 15;
-				}
-				levelno = comp->numresolutions - 1 - resno;
-				rx0 = int_ceildivpow2(tcx0, levelno);
-				ry0 = int_ceildivpow2(tcy0, levelno);
-				rx1 = int_ceildivpow2(tcx1, levelno);
-				ry1 = int_ceildivpow2(tcy1, levelno);
-				px0 = int_floordivpow2(rx0, res->pdx) << res->pdx;
-				py0 = int_floordivpow2(ry0, res->pdy) << res->pdy;
-				px1 = int_ceildivpow2(rx1, res->pdx) << res->pdx;
-				py1 = int_ceildivpow2(ry1, res->pdy) << res->pdy;
-				res->pw = (px1 - px0) >> res->pdx;
-				res->ph = (py1 - py0) >> res->pdy;
-			}
-		}
-		
-		tccp = &tcp->tccps[0];
-		pi[pino].step_p=1;
-		pi[pino].step_c=100*pi[pino].step_p;
-		pi[pino].step_r=img->numcomps*pi[pino].step_c;
-		pi[pino].step_l=maxres*pi[pino].step_r;
-		
-		if (pino==0)
-		  pi[pino].include=(short int*)calloc(img->numcomps*maxres*tcp->numlayers*100,sizeof(short int));
-		else
-		  pi[pino].include=pi[pino-1].include;
-
-		/*if (pino == tcp->numpocs) {*/
-		  if (tcp->POC == 0) {
-			pi[pino].first = 1;
-			pi[pino].poc.resno0 = 0;
-			pi[pino].poc.compno0 = 0;
-			pi[pino].poc.layno1 = tcp->numlayers;
-			pi[pino].poc.resno1 = maxres;
-			pi[pino].poc.compno1 = img->numcomps;
-			pi[pino].poc.prg = tcp->prg;
-		} else {
-			pi[pino].first = 1;
-			pi[pino].poc.resno0 = tcp->pocs[pino].resno0;
-			pi[pino].poc.compno0 = tcp->pocs[pino].compno0;
-			pi[pino].poc.layno1 = tcp->pocs[pino].layno1;
-			pi[pino].poc.resno1 = tcp->pocs[pino].resno1;
-			pi[pino].poc.compno1 = tcp->pocs[pino].compno1;
-			pi[pino].poc.prg = tcp->pocs[pino].prg;
-		}
-	}
-	return pi;
-}
-
-/* <summary> */
-/* Get next packet in layer=resolution-component-precinct order.   */
-/* </summary> */
-int pi_next_lrcp(pi_iterator_t * pi)
-{
-	pi_comp_t *comp;
-	pi_resolution_t *res;
-
-	if (!pi->first) {
-		comp = &pi->comps[pi->compno];
-		res = &comp->resolutions[pi->resno];
-		goto skip;
-	} else {
-		pi->first = 0;
-	}
-	for (pi->layno = 0; pi->layno < pi->poc.layno1; pi->layno++) {
-		for (pi->resno = pi->poc.resno0; pi->resno < pi->poc.resno1;
-				 pi->resno++) {
-			for (pi->compno = pi->poc.compno0; pi->compno < pi->poc.compno1;
-					 pi->compno++) {
-				comp = &pi->comps[pi->compno];
-				if (pi->resno >= comp->numresolutions) {
-
-					continue;
-				}
-				res = &comp->resolutions[pi->resno];
-				for (pi->precno = 0; pi->precno < res->pw * res->ph; pi->precno++) {
-				  if (!pi->include[pi->layno * pi->step_l + pi->resno * pi->step_r + pi->compno * pi->step_c + pi->precno * pi->step_p]){
-				    pi->include[pi->layno * pi->step_l + pi->resno * pi->step_r + pi->compno * pi->step_c + pi->precno * pi->step_p] = 1;
-				    return 1;
-					}
-				skip:;
-				}
-			}
-		}
-	}
-	return 0;
-}
-
-/* <summary> */
-/* Get next packet in resolution-layer-component-precinct order.   */
-/* </summary> */
-int pi_next_rlcp(pi_iterator_t * pi)
-{
-	pi_comp_t *comp;
-	pi_resolution_t *res;
-	if (!pi->first) {
-		comp = &pi->comps[pi->compno];
-		res = &comp->resolutions[pi->resno];
-		goto skip;
-	} else {
-		pi->first = 0;
-	}
-	for (pi->resno = pi->poc.resno0; pi->resno < pi->poc.resno1; pi->resno++) {
-		for (pi->layno = 0; pi->layno < pi->poc.layno1; pi->layno++) {
-			for (pi->compno = pi->poc.compno0; pi->compno < pi->poc.compno1;
-					 pi->compno++) {
-				comp = &pi->comps[pi->compno];
-				if (pi->resno >= comp->numresolutions) {
-					continue;
-				}
-				res = &comp->resolutions[pi->resno];
-				for (pi->precno = 0; pi->precno < res->pw * res->ph; pi->precno++) {
-				  if (!pi->include[pi->layno*pi->step_l+pi->resno*pi->step_r+pi->compno*pi->step_c+pi->precno*pi->step_p]){
-				    pi->include[pi->layno*pi->step_l+pi->resno*pi->step_r+pi->compno*pi->step_c+pi->precno*pi->step_p] = 1;
-				    return 1;
-				  }
-				skip:;
-				}
-			}
-		}
-	}
-	return 0;
-}
-
-/* <summary> */
-/* Get next packet in resolution-precinct-component-layer order.   */
-/* </summary> */
-int pi_next_rpcl(pi_iterator_t * pi)
-{
-	pi_comp_t *comp;
-	pi_resolution_t *res;
-	if (!pi->first) {
-		goto skip;
-	} else {
-		int compno, resno;
-		pi->first = 0;
-		pi->dx = 0;
-		pi->dy = 0;
-		for (compno = 0; compno < pi->numcomps; compno++) {
-			comp = &pi->comps[compno];
-			for (resno = 0; resno < comp->numresolutions; resno++) {
-				int dx, dy;
-				res = &comp->resolutions[resno];
-				dx =
-					comp->dx * (1 << (res->pdx + comp->numresolutions - 1 - resno));
-				dy =
-					comp->dy * (1 << (res->pdy + comp->numresolutions - 1 - resno));
-				pi->dx = !pi->dx ? dx : int_min(pi->dx, dx);
-				pi->dy = !pi->dy ? dy : int_min(pi->dy, dy);
-			}
-		}
-	}
-	for (pi->resno = pi->poc.resno0; pi->resno < pi->poc.resno1; pi->resno++) {
-		for (pi->y = pi->ty0; pi->y < pi->ty1;
-				 pi->y += pi->dy - (pi->y % pi->dy)) {
-			for (pi->x = pi->tx0; pi->x < pi->tx1;
-					 pi->x += pi->dx - (pi->x % pi->dx)) {
-				for (pi->compno = pi->poc.compno0; pi->compno < pi->poc.compno1;
-						 pi->compno++) {
-					int levelno;
-					int trx0, try0;
-					int rpx, rpy;
-					int prci, prcj;
-					comp = &pi->comps[pi->compno];
-					if (pi->resno >= comp->numresolutions) {
-						continue;
-					}
-					res = &comp->resolutions[pi->resno];
-					levelno = comp->numresolutions - 1 - pi->resno;
-					trx0 = int_ceildiv(pi->tx0, comp->dx << levelno);
-					try0 = int_ceildiv(pi->ty0, comp->dy << levelno);
-					rpx = res->pdx + levelno;
-					rpy = res->pdy + levelno;
-					if (!
-							(pi->x % (comp->dx << rpx) == 0
-							 || (pi->x == pi->tx0 && (trx0 << levelno) % (1 << rpx)))) {
-						continue;
-					}
-					if (!
-							(pi->y % (comp->dy << rpy) == 0
-							 || (pi->y == pi->ty0 && (try0 << levelno) % (1 << rpx)))) {
-						continue;
-					}
-					prci =
-						int_floordivpow2(int_ceildiv(pi->x, comp->dx << levelno),
-														 res->pdx) - int_floordivpow2(trx0, res->pdx);
-					prcj =
-						int_floordivpow2(int_ceildiv(pi->y, comp->dy << levelno),
-														 res->pdy) - int_floordivpow2(try0, res->pdy);
-					pi->precno = prci + prcj * res->pw;
-					for (pi->layno = 0; pi->layno < pi->poc.layno1; pi->layno++) {
-					  if (!pi->include[pi->layno*pi->step_l+pi->resno*pi->step_r+pi->compno*pi->step_c+pi->precno*pi->step_p]){
-					    pi->include[pi->layno*pi->step_l+pi->resno*pi->step_r+pi->compno*pi->step_c+pi->precno*pi->step_p] = 1;
-					    return 1;
-						}
-					skip:;
-					}
-				}
-			}
-		}
-	}
-	return 0;
-}
-
-/* <summary> */
-/* Get next packet in precinct-component-resolution-layer order.   */
-/* </summary> */
-int pi_next_pcrl(pi_iterator_t * pi)
-{
-	pi_comp_t *comp;
-	pi_resolution_t *res;
-	if (!pi->first) {
-		comp = &pi->comps[pi->compno];
-		goto skip;
-	} else {
-		int compno, resno;
-		pi->first = 0;
-		pi->dx = 0;
-		pi->dy = 0;
-		for (compno = 0; compno < pi->numcomps; compno++) {
-			comp = &pi->comps[compno];
-			for (resno = 0; resno < comp->numresolutions; resno++) {
-				int dx, dy;
-				res = &comp->resolutions[resno];
-				dx =
-					comp->dx * (1 << (res->pdx + comp->numresolutions - 1 - resno));
-				dy =
-					comp->dy * (1 << (res->pdy + comp->numresolutions - 1 - resno));
-				pi->dx = !pi->dx ? dx : int_min(pi->dx, dx);
-				pi->dy = !pi->dy ? dy : int_min(pi->dy, dy);
-			}
-		}
-	}
-	for (pi->y = pi->ty0; pi->y < pi->ty1;
-			 pi->y += pi->dy - (pi->y % pi->dy)) {
-		for (pi->x = pi->tx0; pi->x < pi->tx1;
-				 pi->x += pi->dx - (pi->x % pi->dx)) {
-			for (pi->compno = pi->poc.compno0; pi->compno < pi->poc.compno1;
-					 pi->compno++) {
-				comp = &pi->comps[pi->compno];
-				for (pi->resno = pi->poc.resno0;
-						 pi->resno < int_min(pi->poc.resno1, comp->numresolutions);
-						 pi->resno++) {
-					int levelno;
-					int trx0, try0;
-					int rpx, rpy;
-					int prci, prcj;
-					res = &comp->resolutions[pi->resno];
-					levelno = comp->numresolutions - 1 - pi->resno;
-					trx0 = int_ceildiv(pi->tx0, comp->dx << levelno);
-					try0 = int_ceildiv(pi->ty0, comp->dy << levelno);
-					rpx = res->pdx + levelno;
-					rpy = res->pdy + levelno;
-					if (!
-							(pi->x % (comp->dx << rpx) == 0
-							 || (pi->x == pi->tx0 && (trx0 << levelno) % (1 << rpx)))) {
-						continue;
-					}
-					if (!
-							(pi->y % (comp->dy << rpy) == 0
-							 || (pi->y == pi->ty0 && (try0 << levelno) % (1 << rpx)))) {
-						continue;
-					}
-					prci =
-						int_floordivpow2(int_ceildiv(pi->x, comp->dx << levelno),
-														 res->pdx) - int_floordivpow2(trx0, res->pdx);
-					prcj =
-						int_floordivpow2(int_ceildiv(pi->y, comp->dy << levelno),
-														 res->pdy) - int_floordivpow2(try0, res->pdy);
-					pi->precno = prci + prcj * res->pw;
-					for (pi->layno = 0; pi->layno < pi->poc.layno1; pi->layno++) {
-					  if (! pi->include[pi->layno*pi->step_l+pi->resno*pi->step_r+pi->compno*pi->step_c+pi->precno*pi->step_p]){
-					    pi->include[pi->layno*pi->step_l+pi->resno*pi->step_r+pi->compno*pi->step_c+pi->precno*pi->step_p] = 1;
-							return 1;
-						}
-					skip:;
-					}
-				}
-			}
-		}
-	}
-	return 0;
-}
-
-/* <summary> */
-/* Get next packet in component-precinct-resolution-layer order.   */
-/* </summary> */
-int pi_next_cprl(pi_iterator_t * pi)
-{
-	pi_comp_t *comp;
-	pi_resolution_t *res;
-	if (!pi->first) {
-		comp = &pi->comps[pi->compno];
-		goto skip;
-	} else {
-		pi->first = 0;
-	}
-	for (pi->compno = pi->poc.compno0; pi->compno < pi->poc.compno1;
-			 pi->compno++) {
-		int resno;
-		comp = &pi->comps[pi->compno];
-		pi->dx = 0;
-		pi->dy = 0;
-		for (resno = 0; resno < comp->numresolutions; resno++) {
-			int dx, dy;
-			res = &comp->resolutions[resno];
-			dx = comp->dx * (1 << (res->pdx + comp->numresolutions - 1 - resno));
-			dy = comp->dy * (1 << (res->pdy + comp->numresolutions - 1 - resno));
-			pi->dx = !pi->dx ? dx : int_min(pi->dx, dx);
-			pi->dy = !pi->dy ? dy : int_min(pi->dy, dy);
-		}
-		for (pi->y = pi->ty0; pi->y < pi->ty1;
-				 pi->y += pi->dy - (pi->y % pi->dy)) {
-			for (pi->x = pi->tx0; pi->x < pi->tx1;
-					 pi->x += pi->dx - (pi->x % pi->dx)) {
-				for (pi->resno = pi->poc.resno0;
-						 pi->resno < int_min(pi->poc.resno1, comp->numresolutions);
-						 pi->resno++) {
-					int levelno;
-					int trx0, try0;
-					int rpx, rpy;
-					int prci, prcj;
-					res = &comp->resolutions[pi->resno];
-					levelno = comp->numresolutions - 1 - pi->resno;
-					trx0 = int_ceildiv(pi->tx0, comp->dx << levelno);
-					try0 = int_ceildiv(pi->ty0, comp->dy << levelno);
-					rpx = res->pdx + levelno;
-					rpy = res->pdy + levelno;
-					if (!
-							(pi->x % (comp->dx << rpx) == 0
-							 || (pi->x == pi->tx0 && (trx0 << levelno) % (1 << rpx)))) {
-						continue;
-					}
-					if (!
-							(pi->y % (comp->dy << rpy) == 0
-							 || (pi->y == pi->ty0 && (try0 << levelno) % (1 << rpx)))) {
-						continue;
-					}
-					prci =
-						int_floordivpow2(int_ceildiv(pi->x, comp->dx << levelno),
-														 res->pdx) - int_floordivpow2(trx0, res->pdx);
-					prcj =
-						int_floordivpow2(int_ceildiv(pi->y, comp->dy << levelno),
-														 res->pdy) - int_floordivpow2(try0, res->pdy);
-					pi->precno = prci + prcj * res->pw;
-					for (pi->layno = 0; pi->layno < pi->poc.layno1; pi->layno++) {
-					  if (! pi->include[pi->layno*pi->step_l+pi->resno*pi->step_r+pi->compno*pi->step_c+pi->precno*pi->step_p]){
-					    pi->include[pi->layno*pi->step_l+pi->resno*pi->step_r+pi->compno*pi->step_c+pi->precno*pi->step_p] = 1;
-					    return 1;
-						}
-					skip:;
-					}
-				}
-			}
-		}
-	}
-	return 0;
-}
-
-/* <summary> */
-/* Get next packet.   */
-/* </summary> */
-int pi_next(pi_iterator_t * pi)
-{
-	switch (pi->poc.prg) {
-	case 0:
-		return pi_next_lrcp(pi);
-	case 1:
-		return pi_next_rlcp(pi);
-	case 2:
-		return pi_next_rpcl(pi);
-	case 3:
-		return pi_next_pcrl(pi);
-	case 4:
-		return pi_next_cprl(pi);
-	}
-	return 0;
-}
diff --git a/indexer_JPIP/pi.h b/indexer_JPIP/pi.h
deleted file mode 100644
index b300b9e..0000000
--- a/indexer_JPIP/pi.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * 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 __PI_H
-#define __PI_H
-
-#include "j2k.h"
-#include "tcd.h"
-
-typedef struct {
-	int pdx, pdy;
-	int pw, ph;
-} pi_resolution_t;
-
-typedef struct {
-	int dx, dy;
-	int numresolutions;
-	pi_resolution_t *resolutions;
-} pi_comp_t;
-
-typedef struct {
-	short int *include;
-  int step_l, step_r, step_c, step_p; 
-	int compno, resno, precno, layno;	/* component, resolution, precinct and layer that indentify the packet */
-	int first;
-	j2k_poc_t poc;
-	int numcomps;
-	pi_comp_t *comps;
-	int tx0, ty0, tx1, ty1;
-	int x, y, dx, dy;
-} pi_iterator_t;								/* packet iterator */
-
-/*
- * Create a packet iterator
- * img: raw image for which the packets will be listed
- * cp: coding paremeters
- * tileno: number that identifies the tile for which to list the packets
- * return value: returns a packet iterator that points to the first packet of the tile
- */
-pi_iterator_t *pi_create(j2k_image_t * img, j2k_cp_t * cp, int tileno);
-
-/* 
- * Modify the packet iterator to point to the next packet
- * pi: packet iterator to modify
- * return value: returns 0 if pi pointed to the last packet or else returns 1 
- */
-int pi_next(pi_iterator_t * pi);
-
-#endif
diff --git a/indexer_JPIP/t2.c b/indexer_JPIP/t2.c
deleted file mode 100644
index 14a44be..0000000
--- a/indexer_JPIP/t2.c
+++ /dev/null
@@ -1,389 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * Copyright (c) 2003, Yannick Verschueren
- * Copyright (c) 2003,  Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 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 "t2.h"
-#include "tcd.h"
-#include "bio.h"
-#include "j2k.h"
-#include "pi.h"
-#include "tgt.h"
-#include "int.h"
-#include "cio.h"
-#include <stdio.h>
-#include <setjmp.h>
-#include <string.h>
-#include <stdlib.h> 
-
-#define RESTART 0x04
-
-extern jmp_buf j2k_error;
-
-int t2_getcommacode() {
-    int n;
-    for (n=0; bio_read(1); n++) {}
-    return n;
-}
-
-int t2_getnumpasses()
-{
-    int n;
-    if (!bio_read(1)) return 1;
-    if (!bio_read(1)) return 2;
-    if ((n=bio_read(2))!=3) return 3+n;
-    if ((n=bio_read(5))!=31) return 6+n;
-    return 37+bio_read(7);
-}
-
-void t2_init_seg(tcd_seg_t *seg, int cblksty) {
-    seg->numpasses=0;
-    seg->len=0;
-    seg->maxpasses=cblksty&J2K_CCP_CBLKSTY_TERMALL?1:100;
-}
-
-int t2_decode_packet(unsigned char *src, int len, tcd_tile_t *tile, j2k_cp_t * cp, j2k_tcp_t *tcp, int compno, int resno, int precno, int layno, info_layer_t *layer_Idx) {
-    int bandno, cblkno;
-    tcd_tilecomp_t *tilec = &tile->comps[compno];
-    tcd_resolution_t *res = &tilec->resolutions[resno];
-    unsigned char *c = src;
-    unsigned char *d = c;
-    int e;
-    int present;
-
-    if (layno == 0) {
-        for (bandno = 0; bandno < res->numbands; bandno++) {
-            tcd_band_t *band = &res->bands[bandno];
-            tcd_precinct_t *prc = &band->precincts[precno];
-            tgt_reset(prc->incltree);
-            tgt_reset(prc->imsbtree);
-            for (cblkno = 0; cblkno < prc->cw * prc->ch; cblkno++) {
-                tcd_cblk_t *cblk = &prc->cblks[cblkno];
-                cblk->numsegs = 0;
-            }
-        }  
-    }
-    /* INDEX */
-    layer_Idx->len_header = 0;
-
-    /* When the marker PPT/PPM is used the packet header are store in PPT/PPM marker
-       This part deal with this caracteristic
-       step 1: Read packet header in the saved structure
-       step 2: (futher) return to codestream for decoding */
-    if (cp->ppm == 1) /* PPM */
-      {	    
-	c = cp->ppm_data;
-	d = c;
-	bio_init_dec(c, 1000);
-      } else 
-	{
-	  if (tcp->ppt == 1) /* PPT */
-	    {
-	      c = tcp->ppt_data;
-	      d = c;
-	      bio_init_dec(c, 1000);
-	    } else /* Normal Case */
-	      {
-		if (tcp->csty & J2K_CP_CSTY_SOP) 
-		  {
-		    if ((*c) != 255 || (*(c+1) != 145)) {printf("Error : expected SOP marker [1]!!!\n");}
-		    c += 6;
-		  }
-		bio_init_dec(c, src + len - c);
-		layer_Idx->len_header = -6;
-	      }
-	}
-    
-    present = bio_read(1);
-    
-    if (!present) 
-      {
-	bio_inalign();
-	/* Normal case */
-	c += bio_numbytes();
-	if (tcp->csty & J2K_CP_CSTY_EPH) 
-	  {
-	    if ((*c) != 255 || (*(c+1) != 146)) {printf("Error : expected EPH marker [1]!!!\n");}
-	    c += 2;
-	  }
-	/* INDEX */
-	layer_Idx->len_header += (c-d);
-
-	/* PPT and PPM dealing */
-	if (cp->ppm == 1) /* PPM */
-	  {	
-	    cp->ppm_data = c;	    
-	    return 0;
-	  }
-	if (tcp->ppt == 1) /* PPT */
-	  {
-	    tcp->ppt_data = c;
-	    return 0;
-	  }
-	return c - src;
-      }
-    
-    for (bandno=0; bandno<res->numbands; bandno++) {
-        tcd_band_t *band = &res->bands[bandno];
-        tcd_precinct_t *prc = &band->precincts[precno];
-        for (cblkno = 0; cblkno < prc->cw * prc->ch; cblkno++) {
-            int included, increment, n;
-            tcd_cblk_t *cblk = &prc->cblks[cblkno];
-            tcd_seg_t *seg;
-            if (!cblk->numsegs) {
-                included = tgt_decode(prc->incltree, cblkno, layno+1);
-            } else {
-                included = bio_read(1);
-            }
-            if (!included) {
-                cblk->numnewpasses = 0;
-                continue;
-            }
-            if (!cblk->numsegs) {
-                int i, numimsbs;
-                for (i = 0; !tgt_decode(prc->imsbtree, cblkno, i); i++) {}
-                numimsbs = i-1;
-                cblk->numbps = band->numbps - numimsbs;
-                cblk->numlenbits = 3;
-            }
-            cblk->numnewpasses = t2_getnumpasses();
-            increment = t2_getcommacode();
-            cblk->numlenbits += increment;
-            if (!cblk->numsegs) {
-                seg = &cblk->segs[0];
-                t2_init_seg(seg, tcp->tccps[compno].cblksty);
-            } else {
-                seg = &cblk->segs[cblk->numsegs - 1];
-                if (seg->numpasses == seg->maxpasses) {
-                    t2_init_seg(++seg, tcp->tccps[compno].cblksty);
-                }
-            }
-            n = cblk->numnewpasses;
-            do {
-                seg->numnewpasses = int_min(seg->maxpasses-seg->numpasses, n);
-                seg->newlen = bio_read(cblk->numlenbits + int_floorlog2(seg->numnewpasses));
-                n -= seg->numnewpasses;
-                if (n > 0) {
-                    t2_init_seg(++seg, tcp->tccps[compno].cblksty);
-                }
-            } while (n > 0);
-        }
-    }
-    if(bio_inalign()) return -999;
-    c += bio_numbytes();
-
-    if (tcp->csty & J2K_CP_CSTY_EPH) { /* EPH marker */
-      if ((*c) != 255 || (*(c+1) != 146)) {printf("Error : expected EPH marker [2]!!!\n"); }
-      c += 2;
-    }
-    
-    /* INDEX */
-    layer_Idx->len_header += (c-d);
-
-    /* PPT Step 2 : see above for details */
-    if (cp->ppm == 1)
-      {
-	cp->ppm_data = c; /* Update pointer */
-
-	/* INDEX */
-	layer_Idx->len_header = c-d;
-
-	c = src;
-	d = c;
-	if (tcp->csty & J2K_CP_CSTY_SOP) 
-	  {
-	    if ((*c) != 255 || (*(c+1) != 145)) {printf("Error : expected SOP marker [2] !!!\n"); }
-	    c += 6;
-	  }
-	bio_init_dec(c, src + len - c);
-      } else 
-	{
-	  if (tcp->ppt == 1)
-	    { 
-	      tcp->ppt_data = c; /* Update pointer */
-	      /* INDEX */
-	      layer_Idx->len_header = c-d;
-
-	      c = src;
-	      d = c;
-	      if (tcp->csty & J2K_CP_CSTY_SOP) /* SOP marker */
-		{ 
-		  if ((*c) != 255 || (*(c+1) != 145)) {printf("Error : expected SOP marker [2] !!!\n"); }
-		  c += 6;
-		}
-	      bio_init_dec(c, src + len - c);
-	      
-	    }
-	}
-
-    for (bandno = 0; bandno < res->numbands; bandno++) {
-        tcd_band_t *band = &res->bands[bandno];
-        tcd_precinct_t *prc = &band->precincts[precno];
-        for (cblkno = 0; cblkno < prc->cw*prc->ch; cblkno++) {
-            tcd_cblk_t *cblk = &prc->cblks[cblkno];
-            tcd_seg_t *seg;
-            if (!cblk->numnewpasses) continue;
-            if (!cblk->numsegs) {
-                seg = &cblk->segs[cblk->numsegs++];
-                cblk->len = 0;
-            } else {
-                seg = &cblk->segs[cblk->numsegs-1];
-                if (seg->numpasses == seg->maxpasses) {
-                    seg++;
-                    cblk->numsegs++;
-                }
-            }
-            do {
-	      if (c + seg->newlen > src + len) return -999;
-                memcpy(cblk->data + cblk->len, c, seg->newlen);
-                if (seg->numpasses == 0) {
-                    seg->data = cblk->data + cblk->len;
-                }
-                c += seg->newlen;
-                cblk->len += seg->newlen;
-                seg->len += seg->newlen;
-                seg->numpasses += seg->numnewpasses;
-                cblk->numnewpasses -= seg->numnewpasses;
-                if (cblk->numnewpasses > 0) {
-                    seg++;
-                    cblk->numsegs++;
-                }
-            } while (cblk->numnewpasses > 0);
-        }
-    }
-    /* <INDEX> */
-    e = c-d;
-    layer_Idx->len = e;
-    /* </INDEX> */
-
-    return c-src;
-}
-
-void t2_init_info_packets(info_image_t *img, j2k_cp_t *cp)
-{
-  int compno, tileno, resno, precno, layno;
-
-  for(compno = 0; compno < img->Comp; compno++)
-    {
-      for(tileno = 0; tileno < img->tw*img->th; tileno++)
-	{
-	  info_tile_t *tile_Idx = &img->tile[tileno];
-	  info_compo_t *compo_Idx = &tile_Idx->compo[compno];
-	  for(resno = 0; resno < img->Decomposition + 1 ; resno++)
-	    {
-	      info_reso_t *reso_Idx = &compo_Idx->reso[resno];
-	      for (precno = 0; precno < img->tile[tileno].pw * img->tile[tileno].ph; precno++)
-		{
-		  info_prec_t *prec_Idx = &reso_Idx->prec[precno];
-		  for(layno = 0; layno < img->Layer ; layno++)
-		    {
-		      info_layer_t *layer_Idx = &prec_Idx->layer[layno];
-		      layer_Idx->offset = 0;        /* start position */
-		      layer_Idx->len_header = 0;    /* length         */
-		    }
-		}
-	    }
-	}
-    }
-}
-
-int t2_decode_packets(unsigned char *src, int len, j2k_image_t *img, j2k_cp_t *cp, int tileno, tcd_tile_t *tile, info_image_t *imgg) {
-    unsigned char *c = src;
-    pi_iterator_t *pi;
-    int pino, compno,e;
-    int partno;
-    info_tile_part_t *tile_part;
-    int position;
-    int length_read;
-    info_tile_t *tile_Idx;
-    info_compo_t *compo_Idx;
-    info_reso_t *reso_Idx;
-    info_prec_t *prec_Idx;
-    info_layer_t *layer_Idx;
-
-    t2_init_info_packets(imgg, cp); /* Initialize the packets information : LEN and OFFSET to 0 */
-
-    tile_Idx = &imgg->tile[tileno];
-    tile_Idx->num_packet = 0;
-    pi = pi_create(img, cp, tileno);
-    partno = 0;
-    tile_part = &tile_Idx->tile_parts[partno];
-    position = tile_part->end_header + 1;
-    length_read = 0;
-
-    for (pino = 0; pino <= cp->tcps[tileno].numpocs; pino++)
-      {
-	while (pi_next(&pi[pino])) 
-	  {   
-	    compo_Idx = &tile_Idx->compo[pi[pino].compno];
-	    reso_Idx = &compo_Idx->reso[pi[pino].resno];
-	    prec_Idx = &reso_Idx->prec[pi[pino].precno];
-	    layer_Idx = &prec_Idx->layer[pi[pino].layno];
-	    
-	    layer_Idx->offset = position;
-	    layer_Idx->offset_header = position;
-	    
-	    e = t2_decode_packet(c, src+len-c, tile, cp, &cp->tcps[tileno], pi[pino].compno, pi[pino].resno, pi[pino].precno, pi[pino].layno,layer_Idx);
-	    if (e == -999)
-	      {
-		break;
-	      } else
-		c += e;
-	    position += e;
-	    
-	    /* Update position in case of multiple tile-parts for a tile >> */
-	    length_read += e;
-	    if (length_read >= (tile_part->end_pos - tile_part->end_header))
-	      {
-		partno++;
-		tile_part = &tile_Idx->tile_parts[partno];
-		position = tile_part->end_header + 1;
-		length_read = 0;
-	      }
-	    /* << end_update */
-	    
-	    tile_Idx->num_packet++;
-	  }
-	
-	// FREE space memory taken by pi
-	for (compno = 0; compno < pi[pino].numcomps; compno++) 
-	  { 
-	    free(pi[pino].comps[compno].resolutions);
-	  } 
-	free(pi[pino].comps);
-      }
-    
-    free(pi[0].include);
-    free(pi);
- 
-    if (e==-999)
-      return e;
-    else
-      {
-	imgg->num_packet_max=int_max(imgg->num_packet_max,tile_Idx->num_packet);
-	return c-src;
-      }
-}
diff --git a/indexer_JPIP/t2.h b/indexer_JPIP/t2.h
deleted file mode 100644
index f495107..0000000
--- a/indexer_JPIP/t2.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * Copyright (c) 2003, Yannick Verschueren
- * Copyright (c) 2003,  Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 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 __T2_H
-#define __T2_H
-
-#include "tcd.h"
-#include "j2k.h"
-
-/*
- * Decode the packets of a tile from a source buffer
- * src: the source buffer
- * len: length of the source buffer
- * img: destination image
- * cp: image coding parameters
- * tileno: number that identifies the tile for which to decode the packets
- * tile: tile for which to decode the packets
- */
-int t2_decode_packets(unsigned char *src, int len, j2k_image_t *img, j2k_cp_t *cp, int tileno, tcd_tile_t *tile, info_image_t *imgg);
-
-#endif
diff --git a/indexer_JPIP/tcd.c b/indexer_JPIP/tcd.c
deleted file mode 100644
index c4045c7..0000000
--- a/indexer_JPIP/tcd.c
+++ /dev/null
@@ -1,285 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * Copyright (c) 2003, Yannick Verschueren
- * Copyright (c) 2003,  Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 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 "tcd.h"
-#include "int.h"
-#include "t2.h"
-#include <setjmp.h>
-#include <float.h>
-#include <stdio.h>
-#include <time.h>
-#include <math.h>
-#include <stdlib.h>
-#include <string.h>
-
-static tcd_image_t tcd_image;
-
-static j2k_image_t *tcd_img;
-static j2k_cp_t *tcd_cp;
-
-extern jmp_buf j2k_error;
-
-void tcd_init(j2k_image_t *img, j2k_cp_t *cp, info_image_t *imgg) {
-    int tileno, compno, resno, bandno, precno, cblkno;
-    tcd_img=img;
-    tcd_cp=cp;
-    tcd_image.tw=cp->tw;
-    tcd_image.th=cp->th;
-    tcd_image.tiles=(tcd_tile_t*)malloc(cp->tw*cp->th*sizeof(tcd_tile_t));
-    for (tileno=0; tileno<cp->tw*cp->th; tileno++) {
-        j2k_tcp_t *tcp=&cp->tcps[tileno];
-        tcd_tile_t *tile=&tcd_image.tiles[tileno];
-        // cfr p59 ISO/IEC FDIS15444-1 : 2000 (18 august 2000)
-        int p=tileno%cp->tw;  // si numerotation matricielle ..
-        int q=tileno/cp->tw;  // .. coordonnees de la tile (q,p) q pour ligne et p pour colonne
-	info_tile_t *tile_Idx=&imgg->tile[tileno]; // INDEX
-
-	// 4 borders of the tile rescale on the image if necessary
-        tile->x0=int_max(cp->tx0+p*cp->tdx, img->x0);
-        tile->y0=int_max(cp->ty0+q*cp->tdy, img->y0);
-        tile->x1=int_min(cp->tx0+(p+1)*cp->tdx, img->x1);
-        tile->y1=int_min(cp->ty0+(q+1)*cp->tdy, img->y1);
-	
-        tile->numcomps=img->numcomps;
-        tile->comps=(tcd_tilecomp_t*)malloc(img->numcomps*sizeof(tcd_tilecomp_t));
-        tile_Idx->compo=(info_compo_t*)malloc(img->numcomps*sizeof(info_compo_t)); // INDEX
-	for (compno=0; compno<tile->numcomps; compno++) {
-            j2k_tccp_t *tccp=&tcp->tccps[compno];
-            tcd_tilecomp_t *tilec=&tile->comps[compno];
-	    info_compo_t *compo_Idx=&tile_Idx->compo[compno]; // INDEX
-
-	    // border of each tile component (global)
-            tilec->x0=int_ceildiv(tile->x0, img->comps[compno].dx);
-            tilec->y0=int_ceildiv(tile->y0, img->comps[compno].dy);
-	    tilec->x1=int_ceildiv(tile->x1, img->comps[compno].dx);
-            tilec->y1=int_ceildiv(tile->y1, img->comps[compno].dy);
-	    
-            tilec->data=(int*)malloc(sizeof(int)*(tilec->x1-tilec->x0)*(tilec->y1-tilec->y0));
-            tilec->numresolutions=tccp->numresolutions;
-            tilec->resolutions=(tcd_resolution_t*)malloc(tilec->numresolutions*sizeof(tcd_resolution_t));
-	    compo_Idx->reso=(info_reso_t*)malloc(tilec->numresolutions*sizeof(info_reso_t)); // INDEX
-            for (resno=0; resno<tilec->numresolutions; resno++) {
-                int pdx, pdy;
-                int levelno=tilec->numresolutions-1-resno;
-                int tlprcxstart, tlprcystart, brprcxend, brprcyend;
-                int tlcbgxstart, tlcbgystart, brcbgxend, brcbgyend;
-                int cbgwidthexpn, cbgheightexpn;
-                int cblkwidthexpn, cblkheightexpn;
-                tcd_resolution_t *res=&tilec->resolutions[resno];
-		info_reso_t *res_Idx=&compo_Idx->reso[resno]; // INDEX
-		int precno_Idx; // INDEX
-
-		// border for each resolution level (global)
-                res->x0=int_ceildivpow2(tilec->x0, levelno);
-                res->y0=int_ceildivpow2(tilec->y0, levelno);
-                res->x1=int_ceildivpow2(tilec->x1, levelno);
-                res->y1=int_ceildivpow2(tilec->y1, levelno);
-		
-		res->numbands=resno==0?1:3;
-		// p. 35, table A-23, ISO/IEC FDIS154444-1 : 2000 (18 august 2000)
-                if (tccp->csty&J2K_CCP_CSTY_PRT) {
-                    pdx=tccp->prcw[resno];
-                    pdy=tccp->prch[resno];
-		} else {
-                    pdx=15;
-                    pdy=15;
-                }
-		// p. 64, B.6, ISO/IEC FDIS15444-1 : 2000 (18 august 2000) 
-                tlprcxstart=int_floordivpow2(res->x0, pdx)<<pdx;
-                tlprcystart=int_floordivpow2(res->y0, pdy)<<pdy;
-                brprcxend=int_ceildivpow2(res->x1, pdx)<<pdx;
-                brprcyend=int_ceildivpow2(res->y1, pdy)<<pdy;
-                res->pw=(brprcxend-tlprcxstart)>>pdx;
-                res->ph=(brprcyend-tlprcystart)>>pdy;
-
-		// <INDEX>
-		imgg->tile[tileno].pw=res->pw;
-		imgg->tile[tileno].ph=res->ph;
-		
-		res_Idx->prec=(info_prec_t*)malloc(res->pw*res->ph*sizeof(info_prec_t));
-		for (precno_Idx=0;precno_Idx<res->pw*res->ph;precno_Idx++)
-		  {
-		    info_prec_t *prec_Idx = &res_Idx->prec[precno_Idx];
-		    prec_Idx->layer=(info_layer_t*)malloc(imgg->Layer*sizeof(info_layer_t));
-		  }
-		
-		imgg->pw=res->pw;  // old parser version
-		imgg->ph=res->ph;  // old parser version
-		imgg->pdx=1<<pdx;
-		imgg->pdy=1<<pdy;
-		// </INDEX>
-
-                if (resno==0) {
-                    tlcbgxstart=tlprcxstart;
-                    tlcbgystart=tlprcystart;
-                    brcbgxend=brprcxend;
-                    brcbgyend=brprcyend;
-                    cbgwidthexpn=pdx;
-                    cbgheightexpn=pdy;
-                } else {
-                    tlcbgxstart=int_ceildivpow2(tlprcxstart, 1);
-                    tlcbgystart=int_ceildivpow2(tlprcystart, 1);
-                    brcbgxend=int_ceildivpow2(brprcxend, 1);
-                    brcbgyend=int_ceildivpow2(brprcyend, 1);
-                    cbgwidthexpn=pdx-1;
-                    cbgheightexpn=pdy-1;
-                }
-
-                cblkwidthexpn=int_min(tccp->cblkw, cbgwidthexpn);
-                cblkheightexpn=int_min(tccp->cblkh, cbgheightexpn);
-
-                for (bandno=0; bandno<res->numbands; bandno++) {
-                    int x0b, y0b;
-                    tcd_band_t *band=&res->bands[bandno];
-                    band->bandno=resno==0?0:bandno+1;
-                    x0b=(band->bandno==1)||(band->bandno==3)?1:0;
-                    y0b=(band->bandno==2)||(band->bandno==3)?1:0;
-
-                    if (band->bandno==0) {
-		      // band border (global)
-		      band->x0=int_ceildivpow2(tilec->x0, levelno);
-		      band->y0=int_ceildivpow2(tilec->y0, levelno);
-		      band->x1=int_ceildivpow2(tilec->x1, levelno);
-		      band->y1=int_ceildivpow2(tilec->y1, levelno);
-                    } else {
-		      // band border (global)
-		      band->x0=int_ceildivpow2(tilec->x0-(1<<levelno)*x0b, levelno+1);
-		      band->y0=int_ceildivpow2(tilec->y0-(1<<levelno)*y0b, levelno+1);
-		      band->x1=int_ceildivpow2(tilec->x1-(1<<levelno)*x0b, levelno+1);
-		      band->y1=int_ceildivpow2(tilec->y1-(1<<levelno)*y0b, levelno+1);
-                    }
-
-                    band->precincts=(tcd_precinct_t*)malloc(res->pw*res->ph*sizeof(tcd_precinct_t));
-
-                    for (precno=0; precno<res->pw*res->ph; precno++) {
-                        int tlcblkxstart, tlcblkystart, brcblkxend, brcblkyend;
-                        int cbgxstart=tlcbgxstart+(precno%res->pw)*(1<<cbgwidthexpn);
-                        int cbgystart=tlcbgystart+(precno/res->pw)*(1<<cbgheightexpn);
-                        int cbgxend=cbgxstart+(1<<cbgwidthexpn);
-                        int cbgyend=cbgystart+(1<<cbgheightexpn);
-                        tcd_precinct_t *prc=&band->precincts[precno];
-			// precinct size (global)
-                        prc->x0=int_max(cbgxstart, band->x0);
-                        prc->y0=int_max(cbgystart, band->y0);
-                        prc->x1=int_min(cbgxend, band->x1);
-                        prc->y1=int_min(cbgyend, band->y1);
-
-                        tlcblkxstart=int_floordivpow2(prc->x0, cblkwidthexpn)<<cblkwidthexpn;
-                        tlcblkystart=int_floordivpow2(prc->y0, cblkheightexpn)<<cblkheightexpn;
-                        brcblkxend=int_ceildivpow2(prc->x1, cblkwidthexpn)<<cblkwidthexpn;
-                        brcblkyend=int_ceildivpow2(prc->y1, cblkheightexpn)<<cblkheightexpn;
-                        prc->cw=(brcblkxend-tlcblkxstart)>>cblkwidthexpn;
-                        prc->ch=(brcblkyend-tlcblkystart)>>cblkheightexpn;
-
-                        prc->cblks=(tcd_cblk_t*)malloc(prc->cw*prc->ch*sizeof(tcd_cblk_t));
-
-                        prc->incltree=tgt_create(prc->cw, prc->ch);
-                        prc->imsbtree=tgt_create(prc->cw, prc->ch);
-
-                        for (cblkno=0; cblkno<prc->cw*prc->ch; cblkno++) {
-                            int cblkxstart=tlcblkxstart+(cblkno%prc->cw)*(1<<cblkwidthexpn);
-                            int cblkystart=tlcblkystart+(cblkno/prc->cw)*(1<<cblkheightexpn);
-                            int cblkxend=cblkxstart+(1<<cblkwidthexpn);
-                            int cblkyend=cblkystart+(1<<cblkheightexpn);
-                            tcd_cblk_t *cblk=&prc->cblks[cblkno];
-			    // code-block size (global)
-                            cblk->x0=int_max(cblkxstart, prc->x0);
-                            cblk->y0=int_max(cblkystart, prc->y0);
-                            cblk->x1=int_min(cblkxend, prc->x1);
-                            cblk->y1=int_min(cblkyend, prc->y1);
-                        }
-                    }
-                }
-            }
-        }
-    }
-}
-
-
-void tcd_free(j2k_image_t *img, j2k_cp_t *cp) {
-  int tileno, compno, resno, bandno, precno;
-  tcd_img=img;
-  tcd_cp=cp;
-  tcd_image.tw=cp->tw;
-  tcd_image.th=cp->th;
-  for (tileno=0; tileno<tcd_image.tw*tcd_image.th; tileno++) 
-    {
-      //  j2k_tcp_t *tcp=&cp->tcps[curtileno];
-      tcd_tile_t *tile=&tcd_image.tiles[tileno];
-      for (compno=0; compno<tile->numcomps; compno++) 
-	{
-	 tcd_tilecomp_t *tilec=&tile->comps[compno];
-	  for (resno=0; resno<tilec->numresolutions; resno++) 
-	    {
-	      tcd_resolution_t *res=&tilec->resolutions[resno];
-	      for (bandno=0; bandno<res->numbands; bandno++) 
-		{
-		 tcd_band_t *band=&res->bands[bandno];
-		  for (precno=0; precno<res->pw*res->ph; precno++) 
-		    {
-		     tcd_precinct_t *prc=&band->precincts[precno];
-		      
-		      if (prc->incltree!=NULL)
-			tgt_destroy(prc->incltree);
-		      if (prc->imsbtree!=NULL)
-			tgt_destroy(prc->imsbtree);
-		      free(prc->cblks);
-		    } // for (precno
-		  free(band->precincts);
-		} // for (bandno
-	    }	// for (resno
-	  free(tilec->resolutions);
-	}	// for (compno
-      free(tile->comps);
-    }	// for (tileno
-  free(tcd_image.tiles);
-}
-
-
-int tcd_decode_tile(unsigned char *src, int len, int tileno, info_image_t *imgg) {
-    int l;
-    int eof=0;
-    tcd_tile_t *tile;
-
-    tile = &tcd_image.tiles[tileno];
-
-    l = t2_decode_packets(src, len, tcd_img, tcd_cp, tileno, tile, imgg);
-
-    if (l==-999)
-      {
-	eof=1;
-	fprintf(stderr, "tcd_decode: incomplete bistream\n");
-      }
-    
-     if (eof) {
-       longjmp(j2k_error, 1);
-     }
-
-    l=1;
-    return l;
-}
diff --git a/indexer_JPIP/tcd.h b/indexer_JPIP/tcd.h
deleted file mode 100644
index 9a31723..0000000
--- a/indexer_JPIP/tcd.h
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * Copyright (c) 2003, Yannick Verschueren
- * Copyright (c) 2003,  Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 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 __TCD_H
-#define __TCD_H
-
-#include "j2k.h"
-#include "tgt.h"
-
-typedef struct {
-    int numpasses;
-    int len;
-    unsigned char *data;
-    int maxpasses;
-    int numnewpasses;
-    int newlen;
-} tcd_seg_t;
-
-typedef struct {
-    int rate;
-    double distortiondec;
-} tcd_pass_t;
-
-typedef struct {
-    int numpasses;
-    int len;
-    unsigned char *data;
-} tcd_layer_t;
-
-typedef struct {
-    int x0, y0, x1, y1;
-    int numbps;
-    int numlenbits;
-    int len;
-    int numpasses;
-    int numnewpasses;
-    int numsegs;
-    tcd_seg_t segs[100];
-    unsigned char data[8192];
-    int numpassesinlayers;
-    tcd_layer_t layers[100];
-    int totalpasses;
-    tcd_pass_t passes[100];
-} tcd_cblk_t;
-
-typedef struct {
-    int x0, y0, x1, y1;
-    int cw, ch;
-    tcd_cblk_t *cblks;
-    tgt_tree_t *incltree;
-    tgt_tree_t *imsbtree;
-} tcd_precinct_t;
-
-typedef struct {
-    int x0, y0, x1, y1;
-    int bandno;
-    tcd_precinct_t *precincts;
-    int numbps;
-    int stepsize;
-} tcd_band_t;
-
-typedef struct {
-    int x0, y0, x1, y1;  
-  int previous_x0, previous_y0, previous_x1, previous_y1; // usefull for the DWT
-  int cas_col, cas_row; // usefull for the DWT
-    int pw, ph;
-    int numbands;
-    tcd_band_t bands[3];
-} tcd_resolution_t;
-
-typedef struct {
-    int x0, y0, x1, y1;
-  int previous_row, previous_col; // usefull for the DWT
-    int numresolutions;
-    tcd_resolution_t *resolutions;
-    int *data;
-} tcd_tilecomp_t;
-
-typedef struct {
-    int x0, y0, x1, y1;
-    int numcomps;
-  //int PPT;
-  //int len_ppt;
-    tcd_tilecomp_t *comps;
-} tcd_tile_t;
-
-typedef struct {
-    int tw, th;
-    tcd_tile_t *tiles;
-} tcd_image_t;
-
-/*
- * Initialize the tile coder/decoder
- * img: raw image
- * cp: coding parameters
- * imgg: creation of index file
- */
-
-void tcd_init(j2k_image_t *img, j2k_cp_t *cp, info_image_t *imgg);
-
-void tcd_free(j2k_image_t *img, j2k_cp_t *cp);
-
-/*
- * Decode a tile from a buffer into a raw image
- * src: source buffer
- * len: length of the source buffer
- * tileno: number that identifies the tile that will be decoded
- * imgg : Structure for index file
- */
-int tcd_decode_tile(unsigned char *src, int len, int tileno, info_image_t *imgg);
-
-#endif
diff --git a/indexer_JPIP/tgt.c b/indexer_JPIP/tgt.c
deleted file mode 100644
index c2b4682..0000000
--- a/indexer_JPIP/tgt.c
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * Copyright (c) 2003, Yannick Verschueren
- * Copyright (c) 2003, Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 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 "tgt.h"
-#include "bio.h"
-#include <stdlib.h>
-#include <stdio.h>
-
-/// <summary>
-/// Reset tag-tree.
-/// </summary>
-void tgt_reset(tgt_tree_t *tree)
-{
-    int i;
-    for (i=0; i<tree->numnodes; i++) {
-        tree->nodes[i].value=999;
-        tree->nodes[i].low=0;
-        tree->nodes[i].known=0;
-    }
-}
-
-/// <summary>
-/// Create tag-tree.
-/// </summary>
-tgt_tree_t *tgt_create(int numleafsh, int numleafsv)
-{
-    int nplh[32];
-    int nplv[32];
-    tgt_node_t *node;
-    tgt_node_t *parentnode;
-    tgt_node_t *parentnode0;
-    tgt_tree_t *tree;
-    int i, j, k;
-    int numlvls;
-    int n;
-
-    tree=(tgt_tree_t*)malloc(sizeof(tgt_tree_t));
-    tree->numleafsh=numleafsh;
-    tree->numleafsv=numleafsv;
-
-    numlvls=0;
-    nplh[0]=numleafsh;
-    nplv[0]=numleafsv;
-    tree->numnodes=0;
-    do {
-        n=nplh[numlvls]*nplv[numlvls];
-        nplh[numlvls+1]=(nplh[numlvls]+1)/2;
-        nplv[numlvls+1]=(nplv[numlvls]+1)/2;
-        tree->numnodes+=n;
-        ++numlvls;
-    } while (n>1);
-
-    tree->nodes=(tgt_node_t*)malloc(tree->numnodes*sizeof(tgt_node_t));
-
-    node=tree->nodes;
-    parentnode=&tree->nodes[tree->numleafsh*tree->numleafsv];
-    parentnode0=parentnode;
-
-    for (i=0; i<numlvls-1; ++i) {
-        for (j=0; j<nplv[i]; ++j) {
-            k=nplh[i];
-            while (--k>=0) {
-                node->parent=parentnode;
-                ++node;
-                if (--k >= 0) {
-                    node->parent=parentnode;
-                    ++node;
-                }
-                ++parentnode;
-            }
-            if ((j&1)||j==nplv[i]-1) {
-                parentnode0=parentnode;
-            } else {
-                parentnode=parentnode0;
-                parentnode0+=nplh[i];
-            }
-        }
-    }
-    node->parent=0;
-
-    tgt_reset(tree);
-
-    return tree;
-}
-
-/// <summary>
-/// Destroy tag-tree.
-/// </summary>
-void tgt_destroy(tgt_tree_t *t) {
-    free(t->nodes);
-    free(t);
-}
-
-/// <summary>
-/// Set the value of a leaf of the tag-tree.
-/// </summary>
-void tgt_setvalue(tgt_tree_t *tree, int leafno, int value) {
-    tgt_node_t *node;
-    node=&tree->nodes[leafno];
-    while (node && node->value>value) {
-        node->value=value;
-        node=node->parent;
-    }
-}
-
-/// <summary>
-/// Decode the value of a leaf of the tag-tree.
-/// </summary>
-int tgt_decode(tgt_tree_t *tree, int leafno, int threshold)
-{
-    tgt_node_t *stk[31];
-    tgt_node_t **stkptr;
-    tgt_node_t *node;
-    int low;
-
-    stkptr=stk;
-    node=&tree->nodes[leafno];
-    while (node->parent) {
-        *stkptr++=node;
-        node=node->parent;
-    }
-
-    low=0;
-    for (;;) {
-        if (low>node->low) {
-            node->low=low;
-        } else {
-            low=node->low;
-        }
-        while (low<threshold && low<node->value) {
-            if (bio_read(1)) {
-                node->value=low;
-            } else {
-                ++low;
-            }
-        }
-        node->low=low;
-        if (stkptr==stk) {
-            break;
-        }
-        node=*--stkptr;
-    }
-
-    return (node->value<threshold)?1:0;
-}
diff --git a/indexer_JPIP/tgt.h b/indexer_JPIP/tgt.h
deleted file mode 100644
index 9d85ade..0000000
--- a/indexer_JPIP/tgt.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * Copyright (c) 2003, Yannick Verschueren
- * Copyright (c) 2003,  Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 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 __TGT_H
-#define __TGT_H
-
-typedef struct tgt_node {
-	struct tgt_node *parent;
-	int value;
-	int low;
-	int known;
-} tgt_node_t;
-
-typedef struct {
-	int numleafsh;
-	int numleafsv;
-	int numnodes;
-	tgt_node_t *nodes;
-} tgt_tree_t;
-
-/*
- * Create a tag-tree
- * numleafsh: width of the array of leafs of the tree
- * numleafsv: height of the array of leafs of the tree
- */
-tgt_tree_t *tgt_create(int numleafsh, int numleafsv);
-
-/*
- * Reset a tag-tree (set all leafs to 0)
- * tree: tag-tree to reset
- */
-void tgt_reset(tgt_tree_t *tree);
-
-/*
- * Destroy a tag-tree, liberating memory
- * tree: tag-tree to destroy
- */
-void tgt_destroy(tgt_tree_t *tree);
-
-/*
- * Set the value of a leaf of a tag-tree
- * tree: tag-tree to modify
- * leafno: number that identifies the leaf to modify
- * value: new value of the leaf
- */
-void tgt_setvalue(tgt_tree_t *tree, int leafno, int value);
-
-/*
- * Decode the value of a leaf of the tag-tree up to a given threshold
- * leafno: number that identifies the leaf to decode
- * threshold: threshold to use when decoding value of the leaf
- */
-int tgt_decode(tgt_tree_t *tree, int leafno, int threshold);
-
-#endif
diff --git a/libopenjpeg/.cvsignore b/libopenjpeg/.cvsignore
deleted file mode 100644
index 5aca9ad..0000000
--- a/libopenjpeg/.cvsignore
+++ /dev/null
@@ -1,6 +0,0 @@
-obj
-obj.w32
-bin
-bin.w32
-lib
-lib.w32
diff --git a/libopenjpeg/Makefile b/libopenjpeg/Makefile
deleted file mode 100644
index 07990e6..0000000
--- a/libopenjpeg/Makefile
+++ /dev/null
@@ -1,77 +0,0 @@
-# $Id$
-#
-# makefile for OpenJPEG library
-
-CFLAGS  = -Wall -O3 -fno-strength-reduce -fomit-frame-pointer
-
-ifndef DEBUG
-  LDFLAGS = -s -lm
-else
-  LDFLAGS = -lm
-endif
-
-OBJ_DIR_W32 = obj.w32
-LIB_DIR_W32 = lib.w32
-
-ifdef MINGW32
-  CC = i386-mingw32-gcc
-  AR = i386-mingw32-ar
-  OBJ_DIR = $(OBJ_DIR_W32)
-  LIB_DIR = $(LIB_DIR_W32)
-  all:	$(OBJ_DIR) $(LIB_DIR) \
-	$(LIB_DIR)/libopenjpeg.a $(LIB_DIR)/libopenjpeg.dll
-else
-  CC = gcc
-  AR = ar
-  OBJ_DIR = obj
-  LIB_DIR = lib
-  all:	$(OBJ_DIR) $(LIB_DIR) \
-	$(LIB_DIR)/libopenjpeg.a $(LIB_DIR)/libopenjpeg.so
-endif
-
-$(OBJ_DIR):
-	mkdir $(OBJ_DIR)
-
-$(LIB_DIR):	
-	mkdir $(LIB_DIR)
-
-$(OBJ_DIR)/%.o:
-	$(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<
-
-$(OBJ_DIR)/bio.o:	bio.c bio.h
-$(OBJ_DIR)/cio.o:	cio.c cio.h
-$(OBJ_DIR)/dwt.o:	dwt.c dwt.h int.h fix.h tcd.h
-$(OBJ_DIR)/fix.o:	fix.c fix.h
-$(OBJ_DIR)/int.o:	int.c
-$(OBJ_DIR)/j2k.o:	j2k.c j2k.h cio.h tcd.h dwt.h int.h
-$(OBJ_DIR)/mct.o:	mct.c mct.h fix.h
-$(OBJ_DIR)/mqc.o:	mqc.c mqc.h
-
-$(OBJ_DIR)/pi.o:	pi.c pi.h int.h
-$(OBJ_DIR)/raw.o:	raw.c raw.h
-$(OBJ_DIR)/t1.o:	t1.c t1.h j2k.h mqc.h raw.h int.h mct.h dwt.h fix.h
-$(OBJ_DIR)/t2.o:	t2.c t2.h tcd.h bio.h j2k.h pi.h tgt.h int.h cio.h
-$(OBJ_DIR)/tcd.o:	tcd.c tcd.h int.h t1.h t2.h dwt.h mct.h
-$(OBJ_DIR)/tgt.o:	tgt.c tgt.h bio.h
-$(OBJ_DIR)/jpt.o:       jpt.c jpt.h cio.h
-
-COM_OBJS = $(addprefix $(OBJ_DIR)/, j2k.o bio.o cio.o dwt.o fix.o int.o mct.o \
-	   mqc.o pi.o t1.o t2.o  tgt.o tcd.o raw.o jpt.o)
-
-$(LIB_DIR)/libopenjpeg.a: ${COM_OBJS}
-	$(AR) -sr $@ $^
-
-$(LIB_DIR)/libopenjpeg.dll: ${COM_OBJS}
-	${CC} -s -shared -Wl,-soname,libopenjpeg.dll -o $@ $^
-
-$(LIB_DIR)/libopenjpeg.so.1.0: ${COM_OBJS}
-	${CC} -s -shared -Wl,-soname,libopenjpeg.so.1 -o $@ $^
-
-$(LIB_DIR)/libopenjpeg.so.1: $(LIB_DIR)/libopenjpeg.so.1.0
-	ln -s libopenjpeg.so.1.0 $(LIB_DIR)/libopenjpeg.so.1
-
-$(LIB_DIR)/libopenjpeg.so: $(LIB_DIR)/libopenjpeg.so.1
-	ln -s libopenjpeg.so.1 $(LIB_DIR)/libopenjpeg.so
-
-clean:
-	rm -f $(OBJ_DIR_W32)/* $(OBJ_DIR)/* $(LIB_DIR_W32)/* $(LIB_DIR)/*
diff --git a/libopenjpeg/bio.c b/libopenjpeg/bio.c
deleted file mode 100644
index 45e875f..0000000
--- a/libopenjpeg/bio.c
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * Copyright (c) 2003, Yannick Verschueren
- * Copyright (c) 2003,  Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- *
- * 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 "bio.h"
-#include <stdio.h>
-#include <setjmp.h>
-
-static unsigned char *bio_start; /* pointer to the start of the buffer */
-static unsigned char *bio_end;   /* pointer to the end of the buffer */
-static unsigned char *bio_bp;    /* pointer to the present position in the buffer */
-static unsigned int bio_buf;     /* temporary place where each byte is read or written */
-static int bio_ct;               /* coder : number of bits free to write // decoder : number of bits read */
-
-extern jmp_buf j2k_error;
-
-/*
- * Number of bytes written.
- */
-int bio_numbytes()
-{
-	return bio_bp - bio_start;
-}
-
-/*
- * Init encoder.
- *
- * bp  : Output buffer
- * len : Output buffer length 
- */
-void bio_init_enc(unsigned char *bp, int len)
-{
-	bio_start = bp;
-	bio_end = bp + len;
-	bio_bp = bp;
-	bio_buf = 0;
-	bio_ct = 8;
-}
-
-/*
- * Init decoder.
- * 
- * bp  : Input buffer
- * len : Input buffer length 
- */
-void bio_init_dec(unsigned char *bp, int len)
-{
-	bio_start = bp;
-	bio_end = bp + len;
-	bio_bp = bp;
-	bio_buf = 0;
-	bio_ct = 0;
-}
-
-/*
- * Write byte. --> function modified to eliminate longjmp !!! 
- *
- */
-int bio_byteout()
-{
-	bio_buf = (bio_buf << 8) & 0xffff;
-	bio_ct = bio_buf == 0xff00 ? 7 : 8;
-	if (bio_bp >= bio_end)
-		return 1;
-	*bio_bp++ = bio_buf >> 8;
-	return 0;
-}
-
-/*
- * Read byte. --> function modified to eliminate longjmp !!
- *
- */
-int bio_bytein()
-{
-	bio_buf = (bio_buf << 8) & 0xffff;
-	bio_ct = bio_buf == 0xff00 ? 7 : 8;
-	if (bio_bp >= bio_end)
-		return 1;
-	bio_buf |= *bio_bp++;
-	return 0;
-}
-
-/*
- * Write bit.
- *
- * b : Bit to write (0 or 1)
- */
-void bio_putbit(int b)
-{
-	if (bio_ct == 0) {
-		bio_byteout();
-	}
-	bio_ct--;
-	bio_buf |= b << bio_ct;
-}
-
-/*
- * Read bit.
- *
- */
-int bio_getbit()
-{
-	if (bio_ct == 0) {
-		bio_bytein();
-	}
-	bio_ct--;
-	return (bio_buf >> bio_ct) & 1;
-}
-
-/*
- * Write bits.
- *
- * v : Value of bits
- * n : Number of bits to write 
- */
-void bio_write(int v, int n)
-{
-	int i;
-	for (i = n - 1; i >= 0; i--) {
-		bio_putbit((v >> i) & 1);
-	}
-}
-
-/*
- * Read bits.
- * 
- * n : Number of bits to read
- */
-int bio_read(int n)
-{
-	int i, v;
-	v = 0;
-	for (i = n - 1; i >= 0; i--) {
-		v += bio_getbit() << i;
-	}
-	return v;
-}
-
-/*
- * Flush bits. Modified to eliminate longjmp !!
- *
- */
-int bio_flush()
-{
-	bio_ct = 0;
-	if (bio_byteout())
-		return 1;
-	if (bio_ct == 7) {
-		bio_ct = 0;
-
-		if (bio_byteout())
-			return 1;
-	}
-	return 0;
-}
-
-/*
- * Passes the ending bits (coming from flushing)
- */
-int bio_inalign()
-{
-	bio_ct = 0;
-	if ((bio_buf & 0xff) == 0xff) {
-		if (bio_bytein())
-			return 1;
-		bio_ct = 0;
-	}
-	return 0;
-}
diff --git a/libopenjpeg/bio.h b/libopenjpeg/bio.h
deleted file mode 100644
index adb2034..0000000
--- a/libopenjpeg/bio.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * Copyright (c) 2003, Yannick Verschueren
- * Copyright (c) 2003,  Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 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 __BIO_H
-#define __BIO_H
-
-/*
- * Number of bytes written.
- */ 
-int bio_numbytes();
-
-/*
- * Init encoder.
- *
- * bp  : Output buffer
- * len : Output buffer length 
- */
-void bio_init_enc(unsigned char *bp, int len);
-
-/*
- * Init decoder.
- *
- * bp  : Input buffer
- * len : Input buffer length
- */
-void bio_init_dec(unsigned char *bp, int len);
-
-/*
- * Write bits.
- *
- * v  : Value of bits
- * n  : Number of bits to write
- */
-void bio_write(int v, int n);
-
-/*
- * Read bits. 
- *
- * n : Number of bits to read 
- */
-int bio_read(int n);
-
-/*
- * Flush bits. Modified to eliminate longjmp !!
- */
-int bio_flush();
-
-int bio_inalign();  /* modified to eliminated longjmp !! */
-
-#endif
diff --git a/libopenjpeg/cio.c b/libopenjpeg/cio.c
deleted file mode 100644
index b57e085..0000000
--- a/libopenjpeg/cio.c
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * 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 "cio.h"
-#include <setjmp.h>
-
-static unsigned char *cio_start;  /* pointer to the start of the stream */
-static unsigned char *cio_end;    /* pointer to the end of the stream */
-static unsigned char *cio_bp;     /* pointer to the present position */
-
-extern jmp_buf j2k_error;
-
-/* 
- * Number of bytes written.
- */
-int cio_numbytes()
-{
-	return cio_bp - cio_start;
-}
-
-/*
- * Get position in byte stream.
- */
-int cio_tell()
-{
-	return cio_bp - cio_start;
-}
-
-/*
- * Set position in byte stream.
- *
- * pos : position, in number of bytes, from the beginning of the stream
- */
-void cio_seek(int pos)
-{
-	cio_bp = cio_start + pos;
-}
-
-/*
- * Number of bytes left before the end of the stream.
- */
-int cio_numbytesleft()
-{
-	return cio_end - cio_bp;
-}
-
-/*
- * Get pointer to the current position in the stream.
- */
-unsigned char *cio_getbp()
-{
-	return cio_bp;
-}
-
-/* 
- * Initialize byte IO
- *
- * bp  : destination/source stream
- * len : length of the stream
- */
-void cio_init(unsigned char *bp, int len)
-{
-	cio_start = bp;
-	cio_end = bp + len;
-	cio_bp = bp;
-}
-
-/*
- * Write a byte.
- */
-void cio_byteout(unsigned char v)
-{
-	if (cio_bp >= cio_end)
-		longjmp(j2k_error, 1);
-	*cio_bp++ = v;
-
-}
-
-/*
- * Read a byte.
- */
-unsigned char cio_bytein()
-{
-	if (cio_bp >= cio_end)
-		longjmp(j2k_error, 1);
-	return *cio_bp++;
-}
-
-/*
- * Write some bytes.
- *
- * v : value to write
- * n : number of bytes to write
- */
-void cio_write(unsigned int v, int n)
-{
-	int i;
-	for (i = n - 1; i >= 0; i--) {
-		cio_byteout((unsigned char) ((v >> (i << 3)) & 0xff));
-	}
-}
-
-/*
- * Read some bytes.
- *
- * n : number of bytes to read
- *
- * return : value of the n bytes read
- */
-unsigned int cio_read(int n)
-{
-	int i;
-	unsigned int v;
-	v = 0;
-	for (i = n - 1; i >= 0; i--) {
-		v += cio_bytein() << (i << 3);
-	}
-	return v;
-}
-
-/* 
- * Skip some bytes.
- *
- * n : number of bytes to skip
- */
-void cio_skip(int n)
-{
-	cio_bp += n;
-}
diff --git a/libopenjpeg/cio.h b/libopenjpeg/cio.h
deleted file mode 100644
index c75a465..0000000
--- a/libopenjpeg/cio.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * 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 __CIO_H
-#define __CIO_H
-
-/* 
- * Number of bytes written.
- *
- * returns number of bytes written
- */
-int cio_numbytes();
-
-/*
- * Get position in byte stream.
- *
- * return position in bytes
- */
-int cio_tell();
-
-/*
- * Set position in byte stream.
- *
- * pos : position, in number of bytes, from the beginning of the stream
- */
-void cio_seek(int pos);
-
-/*
- * Number of bytes left before the end of the stream.
- *
- * Returns the number of bytes before the end of the stream 
- */
-int cio_numbytesleft();
-
-/*
- * Get pointer to the current position in the stream.
- *
- * return : pointer to the position
- */
-unsigned char *cio_getbp();
-
-/* 
- * Initialize byte IO
- *
- * bp  : destination/source stream
- * len : length of the stream
- */
-void cio_init(unsigned char *bp, int len);
-
-/*
- * Write some bytes.
- *
- * v : value to write
- * n : number of bytes to write
- */
-void cio_write(unsigned int v, int n);
-
-/*
- * Read some bytes.
- *
- * n : number of bytes to read
- *
- * return : value of the n bytes read
- */
-unsigned int cio_read(int n);
-
-/* 
- * Skip some bytes.
- *
- * n : number of bytes to skip
- */
-void cio_skip(int n);
-
-#endif
diff --git a/libopenjpeg/dwt.c b/libopenjpeg/dwt.c
deleted file mode 100644
index 6ef991f..0000000
--- a/libopenjpeg/dwt.c
+++ /dev/null
@@ -1,444 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * Copyright (c) 2002-2004, Yannick Verschueren
- * Copyright (c) 2002-2004, Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 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 "dwt.h"
-#include "int.h"
-#include "fix.h"
-#include "tcd.h"
-#include <stdlib.h>
-#include <stdio.h>
-//#include <math.h>
-
-#define S(i) a[x*(i)*2]
-#define D(i) a[x*(1+(i)*2)]
-#define S_(i) ((i)<0?S(0):((i)>=sn?S(sn-1):S(i)))
-#define D_(i) ((i)<0?D(0):((i)>=dn?D(dn-1):D(i)))
-/* new */
-#define SS_(i) ((i)<0?S(0):((i)>=dn?S(dn-1):S(i)))
-#define DD_(i) ((i)<0?D(0):((i)>=sn?D(sn-1):D(i)))
-
-/* <summary>                                                              */
-/* This table contains the norms of the 5-3 wavelets for different bands. */
-/* </summary>                                                             */
-double dwt_norms[4][10] = {
-	{1.000, 1.500, 2.750, 5.375, 10.68, 21.34, 42.67, 85.33, 170.7, 341.3},
-	{1.038, 1.592, 2.919, 5.703, 11.33, 22.64, 45.25, 90.48, 180.9},
-	{1.038, 1.592, 2.919, 5.703, 11.33, 22.64, 45.25, 90.48, 180.9},
-	{.7186, .9218, 1.586, 3.043, 6.019, 12.01, 24.00, 47.97, 95.93}
-};
-
-/* <summary>                                                              */
-/* This table contains the norms of the 9-7 wavelets for different bands. */
-/* </summary>                                                             */
-double dwt_norms_real[4][10] = {
-	{1.000, 1.965, 4.177, 8.403, 16.90, 33.84, 67.69, 135.3, 270.6, 540.9},
-	{2.022, 3.989, 8.355, 17.04, 34.27, 68.63, 137.3, 274.6, 549.0},
-	{2.022, 3.989, 8.355, 17.04, 34.27, 68.63, 137.3, 274.6, 549.0},
-	{2.080, 3.865, 8.307, 17.18, 34.71, 69.59, 139.3, 278.6, 557.2}
-};
-
-/* Add Patrick */
-static int *b = NULL;
-static int lastSizeOfB = 0;
-
-/* <summary>       */
-/* Claning memory. */
-/* </summary>      */
-
-void dwt_clean()
-{
-	if (b != NULL) {
-		free(b);
-	}
-	b = NULL;
-	lastSizeOfB = 0;
-}
-
-/* \ Add Patrick */
-
-/* <summary>               */
-/* Forward lazy transform. */
-/* </summary>              */
-void dwt_deinterleave(int *a, int n, int x, int res, int cas)
-{
-	int dn, sn, i;
-	sn = res;
-	dn = n - res;
-	if (lastSizeOfB != n) {
-		if (b != NULL)
-			free(b);
-		b = (int *) malloc(n * sizeof(int));
-		lastSizeOfB = n;
-	}
-
-	if (cas) {
-		for (i = 0; i < sn; i++)
-			b[i] = a[(2 * i + 1) * x];
-		for (i = 0; i < dn; i++)
-			b[sn + i] = a[2 * i * x];
-	} else {
-		for (i = 0; i < sn; i++)
-			b[i] = a[2 * i * x];
-		for (i = 0; i < dn; i++)
-			b[sn + i] = a[(2 * i + 1) * x];
-	}
-	for (i = 0; i < n; i++)
-		a[i * x] = b[i];
-}
-
-/* <summary>               */
-/* Inverse lazy transform. */
-/* </summary>              */
-void dwt_interleave(int *a, int n, int x, int res, int cas)
-{
-	int dn, sn, i;
-	sn = res;
-	dn = n - res;
-
-	if (lastSizeOfB != n) {
-		if (b != NULL)
-			free(b);
-		b = (int *) malloc(n * sizeof(int));
-		lastSizeOfB = n;
-	}
-
-	if (cas) {
-		for (i = 0; i < sn; i++)
-			b[2 * i + 1] = a[i * x];
-		for (i = 0; i < dn; i++)
-			b[2 * i] = a[(sn + i) * x];
-	} else {
-		for (i = 0; i < sn; i++)
-			b[2 * i] = a[i * x];
-		for (i = 0; i < dn; i++)
-			b[2 * i + 1] = a[(sn + i) * x];
-	}
-	for (i = 0; i < n; i++)
-		a[i * x] = b[i];
-}
-
-/* <summary>                            */
-/* Forward 5-3 wavelet tranform in 1-D. */
-/* </summary>                           */
-void dwt_encode_1(int *a, int n, int x, int res, int cas)
-{
-	int dn, sn, i = 0;
-	sn = res;
-	dn = n - res;
-
-	if (cas) {
-		if (!sn && dn == 1) 	/* NEW :  CASE ONE ELEMENT */
-			S(i) *= 2;
-		else {
-			for (i = 0; i < dn; i++)
-				S(i) -= (DD_(i) + DD_(i - 1)) >> 1;
-			for (i = 0; i < sn; i++)
-				D(i) += (SS_(i) + SS_(i + 1) + 2) >> 2;
-		}
-	} else {
-		if ((dn > 0) || (sn > 1)) {  /* NEW :  CASE ONE ELEMENT */
-			for (i = 0; i < dn; i++)
-				D(i) -= (S_(i) + S_(i + 1)) >> 1;
-			for (i = 0; i < sn; i++)
-				S(i) += (D_(i - 1) + D_(i) + 2) >> 2;
-		}
-	}
-	dwt_deinterleave(a, n, x, res, cas);
-}
-
-/* <summary>                            */
-/* Inverse 5-3 wavelet tranform in 1-D. */
-/* </summary>                           */
-void dwt_decode_1(int *a, int n, int x, int res, int cas)
-{
-	int dn, sn, i = 0;
-	sn = res;
-	dn = n - res;
-
-	dwt_interleave(a, n, x, res, cas);
-	if (cas) {
-		if (!sn && dn == 1)	/* NEW :  CASE ONE ELEMENT */
-			S(i) /= 2;
-		else {
-			for (i = 0; i < sn; i++)
-				D(i) -= (SS_(i) + SS_(i + 1) + 2) >> 2;
-			for (i = 0; i < dn; i++)
-				S(i) += (DD_(i) + DD_(i - 1)) >> 1;
-		}
-	} else {
-		if ((dn > 0) || (sn > 1)) { /* NEW :  CASE ONE ELEMENT */
-			for (i = 0; i < sn; i++)
-				S(i) -= (D_(i - 1) + D_(i) + 2) >> 2;
-			for (i = 0; i < dn; i++)
-				D(i) += (S_(i) + S_(i + 1)) >> 1;
-		}
-	}
-}
-
-/* <summary>                            */
-/* Forward 5-3 wavelet tranform in 2-D. */
-/* </summary>                           */
-void dwt_encode(int *a, int w, int h, tcd_tilecomp_t * tilec, int l)
-{
-	int i, j;
-	int rw;            /* width of the resolution level computed                                                           */
-	int rh;            /* heigth of the resolution level computed                                                          */
-	int rw1;           /* width of the resolution level once lower than computed one                                       */
-	int rh1;           /* height of the resolution level once lower than computed one                                      */
-
-	for (i = 0; i < l; i++) {
-	  int cas_col = 0; /* 0 = non inversion on horizontal filtering 1 = inversion between low-pass and high-pass filtering */
-	  int cas_row = 0; /* 0 = non inversion on vertical filtering 1 = inversion between low-pass and high-pass filtering   */
-		rw = tilec->resolutions[l - i].x1 - tilec->resolutions[l - i].x0;
-		rh = tilec->resolutions[l - i].y1 - tilec->resolutions[l - i].y0;
-		rw1 = tilec->resolutions[l - i - 1].x1 - tilec->resolutions[l - i - 1].x0;
-		rh1 = tilec->resolutions[l - i - 1].y1 - tilec->resolutions[l - i - 1].y0;
-
-		cas_row = tilec->resolutions[l - i].x0 % 2;
-		cas_col = tilec->resolutions[l - i].y0 % 2;
-
-		for (j = 0; j < rw; j++)
-			dwt_encode_1(a + j, rh, w, rh1, cas_col);
-		for (j = 0; j < rh; j++)
-			dwt_encode_1(a + j * w, rw, 1, rw1, cas_row);
-	}
-
-	dwt_clean();
-}
-
-/* <summary>                            */
-/* Inverse 5-3 wavelet tranform in 2-D. */
-/* </summary>                           */
-void dwt_decode(int *a, int w, int h, tcd_tilecomp_t * tilec, int l)//, tcd_tilecomp_t * row_tilec, tcd_tilecomp_t * col_tilec)
-{
-	int i, j;
-	int rw;            /* width of the resolution level computed                                                           */
-	int rh;            /* heigth of the resolution level computed                                                          */
-	int rw1;           /* width of the resolution level once lower than computed one                                       */
-	int rh1;           /* height of the resolution level once lower than computed one                                      */
-
-	for (i = l - 1; i >= 0; i--) {
-	  int cas_col = 0; /* 0 = non inversion on horizontal filtering 1 = inversion between low-pass and high-pass filtering */
-	  int cas_row = 0; /* 0 = non inversion on vertical filtering 1 = inversion between low-pass and high-pass filtering   */
-
-	  	rw = tilec->resolutions[l - i].x1 - tilec->resolutions[l - i].x0;
-		rh = tilec->resolutions[l - i].y1 - tilec->resolutions[l - i].y0;
-		rw1 = tilec->resolutions[l - i - 1].x1 - tilec->resolutions[l - i - 1].x0;
-		rh1 = tilec->resolutions[l - i - 1].y1 - tilec->resolutions[l - i - 1].y0;
-		
-		cas_row = tilec->resolutions[l - i].x0 % 2;
-		cas_col = tilec->resolutions[l - i].y0 % 2;
-
-		for (j = 0; j < rh; j++)
-			dwt_decode_1(a + j * w, rw, 1, rw1, cas_row);
-		for (j = 0; j < rw; j++)
-			dwt_decode_1(a + j, rh, w, rh1, cas_col);
-	}
-	dwt_clean();
-}
-
-/* <summary>                          */
-/* Get gain of 5-3 wavelet transform. */
-/* </summary>                         */
-int dwt_getgain(int orient)
-{
-	if (orient == 0)
-		return 0;
-	if (orient == 1 || orient == 2)
-		return 1;
-	return 2;
-}
-
-/* <summary>                */
-/* Get norm of 5-3 wavelet. */
-/* </summary>               */
-double dwt_getnorm(int level, int orient)
-{
-	return dwt_norms[orient][level];
-}
-
-/* <summary>                             */
-/* Forward 9-7 wavelet transform in 1-D. */
-/* </summary>                            */
-void dwt_encode_1_real(int *a, int n, int x, int res, int cas)
-{
-	int dn, sn, i = 0;
-	dn = n - res;
-	sn = res;
-
-	if (cas) {
-		if ((sn > 0) || (dn > 1)) {  /* NEW :  CASE ONE ELEMENT */
-			for (i = 0; i < dn; i++)
-				S(i) -= fix_mul(DD_(i) + DD_(i - 1), 12993);
-			for (i = 0; i < sn; i++)
-				D(i) -= fix_mul(SS_(i) + SS_(i + 1), 434);
-			for (i = 0; i < dn; i++)
-				S(i) += fix_mul(DD_(i) + DD_(i - 1), 7233);
-			for (i = 0; i < sn; i++)
-				D(i) += fix_mul(SS_(i) + SS_(i + 1), 3633);
-			for (i = 0; i < dn; i++)
-			  S(i) = fix_mul(S(i), 5038); /*5038*/
-			for (i = 0; i < sn; i++)
-			  D(i) = fix_mul(D(i), 6659); /*6660*/
-		}
-	} else {
-	  if ((dn > 0) || (sn > 1)) {  /* NEW :  CASE ONE ELEMENT */
-			for (i = 0; i < dn; i++)
-				D(i) -= fix_mul(S_(i) + S_(i + 1), 12993);
-			for (i = 0; i < sn; i++)
-				S(i) -= fix_mul(D_(i - 1) + D_(i), 434);
-			for (i = 0; i < dn; i++)
-				D(i) += fix_mul(S_(i) + S_(i + 1), 7233);
-			for (i = 0; i < sn; i++)
-				S(i) += fix_mul(D_(i - 1) + D_(i), 3633);
-			for (i = 0; i < dn; i++)
-				D(i) = fix_mul(D(i), 5038); /*5038*/
-			for (i = 0; i < sn; i++)
-				S(i) = fix_mul(S(i), 6659); /*6660*/
-		}
-	}
-	dwt_deinterleave(a, n, x, res, cas);
-}
-
-/* <summary>                             */
-/* Inverse 9-7 wavelet transform in 1-D. */
-/* </summary>                            */
-void dwt_decode_1_real(int *a, int n, int x, int res, int cas)
-{
-	int dn, sn, i = 0;
-	dn = n - res;
-	sn = res;
-	dwt_interleave(a, n, x, res, cas);
-	if (cas) {
-		if ((sn > 0) || (dn > 1)) {  /* NEW :  CASE ONE ELEMENT */
-			for (i = 0; i < sn; i++)
-			  D(i) = fix_mul(D(i), 10078); /* 10076 */
-			for (i = 0; i < dn; i++)
-				S(i) = fix_mul(S(i), 13318); /* 13320*/
-			for (i = 0; i < sn; i++)
-				D(i) -= fix_mul(SS_(i) + SS_(i + 1), 3633);
-			for (i = 0; i < dn; i++)
-				S(i) -= fix_mul(DD_(i) + DD_(i - 1), 7233);
-			for (i = 0; i < sn; i++)
-				D(i) += fix_mul(SS_(i) + SS_(i + 1), 434);
-			for (i = 0; i < dn; i++)
-				S(i) += fix_mul(DD_(i) + DD_(i - 1), 12993);
-		}
-	} else {
-		if ((dn > 0) || (sn > 1)) {  /* NEW :  CASE ONE ELEMENT */
-			for (i = 0; i < sn; i++)
-				S(i) = fix_mul(S(i), 10078); /* 10076 */
-			for (i = 0; i < dn; i++)
-			  D(i) = fix_mul(D(i), 13318); /* 13320*/
-			for (i = 0; i < sn; i++)
-				S(i) -= fix_mul(D_(i - 1) + D_(i), 3633);
-			for (i = 0; i < dn; i++)
-				D(i) -= fix_mul(S_(i) + S_(i + 1), 7233);
-			for (i = 0; i < sn; i++)
-				S(i) += fix_mul(D_(i - 1) + D_(i), 434);
-			for (i = 0; i < dn; i++)
-				D(i) += fix_mul(S_(i) + S_(i + 1), 12993);
-		}
-	}
-}
-
-/* <summary>                             */
-/* Forward 9-7 wavelet transform in 2-D. */
-/* </summary>                            */
-
-void dwt_encode_real(int *a, int w, int h, tcd_tilecomp_t * tilec, int l)
-{
-        int i, j;
-	int rw;            /* width of the resolution level computed                                                     */
-	int rh;            /* heigth of the resolution level computed                                                    */
-	int rw1;           /* width of the resolution level once lower than computed one                                 */
-	int rh1;           /* height of the resolution level once lower than computed one                                */
-
-	for (i = 0; i < l; i++) {
-		int cas_col = 0;  /* 0 = non inversion on horizontal filtering 1 = inversion between low-pass and high-pass filtering */
-		int cas_row = 0;  /* 0 = non inversion on vertical filtering 1 = inversion between low-pass and high-pass filtering   */
-		rw = tilec->resolutions[l - i].x1 - tilec->resolutions[l - i].x0;
-		rh = tilec->resolutions[l - i].y1 - tilec->resolutions[l - i].y0;
-		rw1 = tilec->resolutions[l - i - 1].x1 - tilec->resolutions[l - i - 1].x0;
-		rh1 = tilec->resolutions[l - i - 1].y1 - tilec->resolutions[l - i - 1].y0;
-		
-		cas_row = tilec->resolutions[l - i].x0 % 2;
-		cas_col = tilec->resolutions[l - i].y0 % 2;
-
-		for (j = 0; j < rw; j++)
-			dwt_encode_1_real(a + j, rh, w, rh1, cas_col);
-		for (j = 0; j < rh; j++)
-			dwt_encode_1_real(a + j * w, rw, 1, rw1, cas_row);
-	}
-}
-
-/* <summary>                             */
-/* Inverse 9-7 wavelet transform in 2-D. */
-/* </summary>                            */
-void dwt_decode_real(int *a, int w, int h, tcd_tilecomp_t * tilec, int l)//, tcd_tilecomp_t * row_tilec, tcd_tilecomp_t * col_tilec)
-{
-        int i, j;
-	int rw;            /* width of the resolution level computed                                                           */
-	int rh;            /* heigth of the resolution level computed                                                          */
-	int rw1;           /* width of the resolution level once lower than computed one                                       */
-	int rh1;           /* height of the resolution level once lower than computed one                                      */
-
-	for (i = l - 1; i >= 0; i--) {
-	  int cas_col = 0; /* 0 = non inversion on horizontal filtering 1 = inversion between low-pass and high-pass filtering */
-	  int cas_row = 0; /* 0 = non inversion on vertical filtering 1 = inversion between low-pass and high-pass filtering   */
-
-		rw = tilec->resolutions[l - i].x1 - tilec->resolutions[l - i].x0;
-		rh = tilec->resolutions[l - i].y1 - tilec->resolutions[l - i].y0;
-		rw1 = tilec->resolutions[l - i - 1].x1 - tilec->resolutions[l - i - 1].x0;
-		rh1 = tilec->resolutions[l - i - 1].y1 - tilec->resolutions[l - i - 1].y0;
-
-		cas_row = tilec->resolutions[l - i].x0 % 2;
-		cas_col = tilec->resolutions[l - i].y0 % 2;		
-
-		for (j = 0; j < rh; j++)
-			dwt_decode_1_real(a + j * w, rw, 1, rw1, cas_row);
-		for (j = 0; j < rw; j++)
-			dwt_decode_1_real(a + j, rh, w, rh1, cas_col);
-	}
-}
-
-/* <summary>                          */
-/* Get gain of 9-7 wavelet transform. */
-/* </summary>                         */
-int dwt_getgain_real(int orient)
-{
-	return 0;
-}
-
-/* <summary>                */
-/* Get norm of 9-7 wavelet. */
-/* </summary>               */
-double dwt_getnorm_real(int level, int orient)
-{
-	return dwt_norms_real[orient][level];
-}
diff --git a/libopenjpeg/dwt.h b/libopenjpeg/dwt.h
deleted file mode 100644
index fc0bfa5..0000000
--- a/libopenjpeg/dwt.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * Copyright (c) 2002-2003, Yannick Verschueren
- * Copyright (c) 2002-2003,  Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 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 "tcd.h"
-
-#ifndef __DWT_H
-#define __DWT_H
-
-/*
- * Apply a reversible DWT transform to a component of an image  
- * a: samples of the component
- * w: width of the component
- * h: height of the component
- * tilec : tile component information (present tile)
- * l: number of decomposition levels in the DWT
- */
-/* void dwt_encode(int* a, int w, int h, int l); */
-void dwt_encode(int *a, int w, int h, tcd_tilecomp_t * tilec, int l);
-/*
- * Apply a reversible inverse DWT transform to a component of an image  
- * a: samples of the component
- * w: width of the component
- * h: height of the component
- * tilec : tile component information (present tile)
- * l: number of decomposition levels in the DWT
- * row_tilec : tile component information (previous tile on the same row)
- * col_tilec : tile component information (previous tile on the same column)
- */
-void dwt_decode(int *a, int w, int h, tcd_tilecomp_t * tilec, int l);//, tcd_tilecomp_t * row_tilec, tcd_tilecomp_t * col_tilec);
-
-/*
- * Get the gain of a subband for the reversible DWT
- * orient: number that identifies the subband (0->LL, 1->HL, 2->LH, 3->HH)
- */
-int dwt_getgain(int orient);
-
-/*
- * Get the norm of a wavelet function of a subband at a specified level for the reversible DWT
- * level: level of the wavelet function
- * orient: band of the wavelet function
- */
-double dwt_getnorm(int level, int orient);
-
-/*
- * Apply an irreversible DWT transform to a component of an image  
- * a: samples of the component
- * w: width of the component
- * h: height of the component
- * l: number of decomposition levels in the DWT
- */
-void dwt_encode_real(int *a, int w, int h, tcd_tilecomp_t * tilec, int l);
-
-/*
- * Apply an irreversible inverse DWT transform to a component of an image  
- * a: samples of the component
- * w: width of the component
- * h: height of the component
- * l: number of decomposition levels in the DWT
- */
-void dwt_decode_real(int *a, int w, int h, tcd_tilecomp_t * tilec, int l);//, tcd_tilecomp_t * row_tilec, tcd_tilecomp_t * col_tilec);
-/*
- * Get the gain of a subband for the irreversible DWT
- * orient: number that identifies the subband (0->LL, 1->HL, 2->LH, 3->HH)
- */
-int dwt_getgain_real(int orient);
-
-/*
- * Get the norm of a wavelet function of a subband at a specified level for the irreversible DWT
- * level: level of the wavelet function
- * orient: band of the wavelet function
- */
-double dwt_getnorm_real(int level, int orient);
-
-#endif
diff --git a/libopenjpeg/fix.c b/libopenjpeg/fix.c
deleted file mode 100644
index 55dc01b..0000000
--- a/libopenjpeg/fix.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * 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 "fix.h"
-
-#ifdef DAVID_WIN32
-#define int64 __int64
-#else
-#define int64 long long
-#endif
-
-/*
- * Multiply two fixed-precision rational numbers.
- */
-int fix_mul(int a, int b)
-{
-	return (int) ((int64) a * (int64) b >> 13);
-}
diff --git a/libopenjpeg/fix.h b/libopenjpeg/fix.h
deleted file mode 100644
index 768cada..0000000
--- a/libopenjpeg/fix.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * 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 __FIX_H
-#define __FIX_H
-
-int fix_mul(int a, int b);
-
-#endif
diff --git a/libopenjpeg/int.c b/libopenjpeg/int.c
deleted file mode 100644
index 283df09..0000000
--- a/libopenjpeg/int.c
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * 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.
- */
-
-/*
- * Get the minimum of two integers.
- *
- * returns a if a < b else b
- */
-int int_min(int a, int b)
-{
-	return a < b ? a : b;
-}
-
-/*
- * Get the maximum of two integers.
- *
- * returns a if a > b else b
- */
-int int_max(int a, int b)
-{
-	return a > b ? a : b;
-}
-
-/*
- * Clamp an integer inside an interval.
- *
- * return a if (min < a < max)
- * return max if (a > max)
- * return min if (a < min) 
- */
-int int_clamp(int a, int min, int max)
-{
-	if (a < min)
-		return min;
-	if (a > max)
-		return max;
-	return a;
-}
-
-/*
- * Get absolute value of integer.
- */
-int int_abs(int a)
-{
-	return a < 0 ? -a : a;
-}
-
-/*
- * Divide an integer and round upwards.
- *
- * a divided by b
- */
-int int_ceildiv(int a, int b)
-{
-	return (a + b - 1) / b;
-}
-
-/*
- * Divide an integer by a power of 2 and round upwards.
- *
- * a divided by 2^b
- */
-int int_ceildivpow2(int a, int b)
-{
-	return (a + (1 << b) - 1) >> b;
-}
-
-/*
- * Divide an integer by a power of 2 and round downwards.
- *
- * a divided by 2^b
- */
-int int_floordivpow2(int a, int b)
-{
-	return a >> b;
-}
-
-/*
- * Get logarithm of an integer and round downwards.
- *
- * log2(a)
- */
-int int_floorlog2(int a)
-{
-	int l;
-	for (l = 0; a > 1; l++) {
-		a >>= 1;
-	}
-	return l;
-}
diff --git a/libopenjpeg/int.h b/libopenjpeg/int.h
deleted file mode 100644
index a1b590d..0000000
--- a/libopenjpeg/int.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * 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 __INT_H
-#define __INT_H
-
-/*
- * Get the minimum of two integers.
- *
- * returns a if a < b else b
- */
-int int_min(int a, int b);
-
-/*
- * Get the maximum of two integers.
- *
- * returns a if a > b else b
- */
-int int_max(int a, int b);
-
-/*
- * Clamp an integer inside an interval.
- *
- * return a if (min < a < max)
- * return max if (a > max)
- * return min if (a < min) 
- */
-int int_clamp(int a, int min, int max);
-
-/*
- * Get absolute value of integer.
- */
-int int_abs(int a);
-
-/*
- * Divide an integer and round upwards.
- *
- * a divided by b
- */
-int int_ceildiv(int a, int b);
-
-/*
- * Divide an integer by a power of 2 and round upwards.
- *
- * a divided by 2^b
- */
-int int_ceildivpow2(int a, int b);
-
-/*
- * Divide an integer by a power of 2 and round downwards.
- *
- * a divided by 2^b
- */
-int int_floordivpow2(int a, int b);
-
-/*
- * Get logarithm of an integer and round downwards.
- *
- * log2(a)
- */
-int int_floorlog2(int a);
-
-#endif
diff --git a/libopenjpeg/j2k.c b/libopenjpeg/j2k.c
deleted file mode 100644
index 1432a74..0000000
--- a/libopenjpeg/j2k.c
+++ /dev/null
@@ -1,1326 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * Copyright (c) 2002-2004, Yannick Verschueren
- * Copyright (c) 2002-2004, Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 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 <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <setjmp.h>
-#include <math.h>
-
-#include "j2k.h"
-#include "cio.h"
-#include "tcd.h"
-#include "dwt.h"
-#include "int.h"
-#include "jpt.h"
-
-#define J2K_MS_SOC 0xff4f
-#define J2K_MS_SOT 0xff90
-#define J2K_MS_SOD 0xff93
-#define J2K_MS_EOC 0xffd9
-#define J2K_MS_SIZ 0xff51
-#define J2K_MS_COD 0xff52
-#define J2K_MS_COC 0xff53
-#define J2K_MS_RGN 0xff5e
-#define J2K_MS_QCD 0xff5c
-#define J2K_MS_QCC 0xff5d
-#define J2K_MS_POC 0xff5f
-#define J2K_MS_TLM 0xff55
-#define J2K_MS_PLM 0xff57
-#define J2K_MS_PLT 0xff58
-#define J2K_MS_PPM 0xff60
-#define J2K_MS_PPT 0xff61
-#define J2K_MS_SOP 0xff91
-#define J2K_MS_EPH 0xff92
-#define J2K_MS_CRG 0xff63
-#define J2K_MS_COM 0xff64
-
-#define J2K_STATE_MHSOC 0x0001
-#define J2K_STATE_MHSIZ 0x0002
-#define J2K_STATE_MH 0x0004
-#define J2K_STATE_TPHSOT 0x0008
-#define J2K_STATE_TPH 0x0010
-#define J2K_STATE_MT 0x0020
-#define J2K_STATE_NEOC 0x0040
-
-
-jmp_buf j2k_error;
-
-static int j2k_state;
-static int j2k_curtileno;
-static j2k_tcp_t j2k_default_tcp;
-static unsigned char *j2k_eot;
-static int j2k_sot_start;
-static int pos_correction;
-
-static j2k_image_t *j2k_img;
-static j2k_cp_t *j2k_cp;
-
-static unsigned char **j2k_tile_data;
-static int *j2k_tile_len;
-
-static info_image info_IM;
-
-/* Add Patrick */
-void j2k_clean()
-{
-	int tileno = 0;
-	tcd_free_encode(j2k_img, j2k_cp, j2k_curtileno);
-
-	if (info_IM.index_on) {
-		for (tileno = 0; tileno < j2k_cp->tw * j2k_cp->th; tileno++) {
-			free(info_IM.tile[tileno].packet);
-		}
-		free(info_IM.tile);
-	}
-}
-
-/* \Add Patrick */
-
-void j2k_dump_image(j2k_image_t * img)
-{
-	int compno;
-	fprintf(stderr, "image {\n");
-	fprintf(stderr, "  x0=%d, y0=%d, x1=%d, y1=%d\n", img->x0, img->y0,
-					img->x1, img->y1);
-	fprintf(stderr, "  numcomps=%d\n", img->numcomps);
-	for (compno = 0; compno < img->numcomps; compno++) {
-		j2k_comp_t *comp = &img->comps[compno];
-		fprintf(stderr, "  comp %d {\n", compno);
-		fprintf(stderr, "    dx=%d, dy=%d\n", comp->dx, comp->dy);
-		fprintf(stderr, "    prec=%d\n", comp->prec);
-		fprintf(stderr, "    sgnd=%d\n", comp->sgnd);
-		fprintf(stderr, "  }\n");
-	}
-	fprintf(stderr, "}\n");
-}
-
-void j2k_dump_cp(j2k_image_t * img, j2k_cp_t * cp)
-{
-	int tileno, compno, layno, bandno, resno, numbands;
-	fprintf(stderr, "coding parameters {\n");
-	fprintf(stderr, "  tx0=%d, ty0=%d\n", cp->tx0, cp->ty0);
-	fprintf(stderr, "  tdx=%d, tdy=%d\n", cp->tdx, cp->tdy);
-	fprintf(stderr, "  tw=%d, th=%d\n", cp->tw, cp->th);
-	for (tileno = 0; tileno < cp->tw * cp->th; tileno++) {
-		j2k_tcp_t *tcp = &cp->tcps[tileno];
-		fprintf(stderr, "  tile %d {\n", tileno);
-		fprintf(stderr, "    csty=%x\n", tcp->csty);
-		fprintf(stderr, "    prg=%d\n", tcp->prg);
-		fprintf(stderr, "    numlayers=%d\n", tcp->numlayers);
-		fprintf(stderr, "    mct=%d\n", tcp->mct);
-		fprintf(stderr, "    rates=");
-		for (layno = 0; layno < tcp->numlayers; layno++) {
-			fprintf(stderr, "%d ", tcp->rates[layno]);
-		}
-		fprintf(stderr, "\n");
-		for (compno = 0; compno < img->numcomps; compno++) {
-			j2k_tccp_t *tccp = &tcp->tccps[compno];
-			fprintf(stderr, "    comp %d {\n", compno);
-			fprintf(stderr, "      csty=%x\n", tccp->csty);
-			fprintf(stderr, "      numresolutions=%d\n", tccp->numresolutions);
-			fprintf(stderr, "      cblkw=%d\n", tccp->cblkw);
-			fprintf(stderr, "      cblkh=%d\n", tccp->cblkh);
-			fprintf(stderr, "      cblksty=%x\n", tccp->cblksty);
-			fprintf(stderr, "      qmfbid=%d\n", tccp->qmfbid);
-			fprintf(stderr, "      qntsty=%d\n", tccp->qntsty);
-			fprintf(stderr, "      numgbits=%d\n", tccp->numgbits);
-			fprintf(stderr, "      roishift=%d\n", tccp->roishift);
-			fprintf(stderr, "      stepsizes=");
-			numbands =
-				tccp->qntsty ==
-				J2K_CCP_QNTSTY_SIQNT ? 1 : tccp->numresolutions * 3 - 2;
-			for (bandno = 0; bandno < numbands; bandno++) {
-				fprintf(stderr, "(%d,%d) ", tccp->stepsizes[bandno].mant,
-								tccp->stepsizes[bandno].expn);
-			}
-			fprintf(stderr, "\n");
-
-			if (tccp->csty & J2K_CCP_CSTY_PRT) {
-				fprintf(stderr, "      prcw=");
-				for (resno = 0; resno < tccp->numresolutions; resno++) {
-					fprintf(stderr, "%d ", tccp->prcw[resno]);
-				}
-				fprintf(stderr, "\n");
-				fprintf(stderr, "      prch=");
-				for (resno = 0; resno < tccp->numresolutions; resno++) {
-					fprintf(stderr, "%d ", tccp->prch[resno]);
-				}
-				fprintf(stderr, "\n");
-			}
-			fprintf(stderr, "    }\n");
-		}
-		fprintf(stderr, "  }\n");
-	}
-	fprintf(stderr, "}\n");
-}
-
-void j2k_write_soc()
-{
-  /* fprintf(stderr, "%.8x: SOC\n", cio_tell()); */
-  cio_write(J2K_MS_SOC, 2);
-}
-
-void j2k_read_soc()
-{
-  fprintf(stderr, "%.8x: SOC\n", cio_tell()-2);
-	j2k_state = J2K_STATE_MHSIZ;
-}
-
-void j2k_write_siz()
-{
-	int i;
-	int lenp, len;
-	/* fprintf(stderr, "%.8x: SIZ\n", cio_tell()); */
-	cio_write(J2K_MS_SIZ, 2);		     /* SIZ                 */
-	lenp = cio_tell();
-	cio_skip(2);
-	cio_write(0, 2);			     /* Rsiz (capabilities) */
-	cio_write(j2k_img->x1, 4);		     /* Xsiz                */
-	cio_write(j2k_img->y1, 4);		     /* Ysiz                */
-	cio_write(j2k_img->x0, 4);		     /* X0siz               */
-	cio_write(j2k_img->y0, 4);		     /* Y0siz               */
-	cio_write(j2k_cp->tdx, 4);		     /* XTsiz               */
-	cio_write(j2k_cp->tdy, 4);		     /* YTsiz               */
-	cio_write(j2k_cp->tx0, 4);		     /* XT0siz              */
-	cio_write(j2k_cp->ty0, 4);		     /* YT0siz              */
-	cio_write(j2k_img->numcomps, 2);	     /* Csiz                */
-	for (i = 0; i < j2k_img->numcomps; i++) {
-		cio_write(j2k_img->comps[i].prec - 1 + (j2k_img->comps[i].sgnd << 7), 1);	/* Ssiz_i */
-		cio_write(j2k_img->comps[i].dx, 1);  /* XRsiz_i             */
-		cio_write(j2k_img->comps[i].dy, 1);  /* YRsiz_i             */
-	}
-	len = cio_tell() - lenp;
-	cio_seek(lenp);
-	cio_write(len, 2);			     /* Lsiz                */
-	cio_seek(lenp + len);
-
-}
-
-void j2k_read_siz()
-{
-	int len, i;
-	fprintf(stderr, "%.8x: SIZ\n", cio_tell());
-	len = cio_read(2);                       /* Lsiz                */
-	cio_read(2);                             /* Rsiz (capabilities) */
-	j2k_img->x1 = cio_read(4);               /* Xsiz                */
-	j2k_img->y1 = cio_read(4);               /* Ysiz                */ 
-	j2k_img->x0 = cio_read(4);               /* X0siz               */
-	j2k_img->y0 = cio_read(4);               /* Y0siz               */
-	j2k_cp->tdx = cio_read(4);               /* XTsiz               */
-	j2k_cp->tdy = cio_read(4);               /* YTsiz               */
-	j2k_cp->tx0 = cio_read(4);               /* XT0siz              */
-	j2k_cp->ty0 = cio_read(4);               /* YT0siz              */
-
-	j2k_img->numcomps = cio_read(2);         /* Csiz                */
-	j2k_img->comps = (j2k_comp_t *) malloc(j2k_img->numcomps * sizeof(j2k_comp_t));
-	for (i = 0; i < j2k_img->numcomps; i++) {
-		int tmp, w, h;
-		tmp = cio_read(1);                   /* Ssiz_i          */
-		j2k_img->comps[i].prec = (tmp & 0x7f) + 1;
-		j2k_img->comps[i].sgnd = tmp >> 7;
-		j2k_img->comps[i].dx = cio_read(1);  /* XRsiz_i         */
-		j2k_img->comps[i].dy = cio_read(1);  /* YRsiz_i         */
-		w = int_ceildiv(j2k_img->x1 - j2k_img->x0, j2k_img->comps[i].dx);
-		h = int_ceildiv(j2k_img->y1 - j2k_img->y0, j2k_img->comps[i].dy);
-		j2k_img->comps[i].data = (int *) malloc(sizeof(int) * w * h);
-	}
-
-	j2k_cp->tw = int_ceildiv(j2k_img->x1 - j2k_cp->tx0, j2k_cp->tdx);
-	j2k_cp->th = int_ceildiv(j2k_img->y1 - j2k_cp->ty0, j2k_cp->tdy);
-	j2k_cp->tcps = 	(j2k_tcp_t *) calloc(j2k_cp->tw * j2k_cp->th, sizeof(j2k_tcp_t));
-	for (i=0; i<j2k_cp->tw * j2k_cp->th; i++)
-	  {
-	    j2k_cp->tcps[i].POC=0;
-	    j2k_cp->tcps[i].numpocs=0;
-	    j2k_cp->tcps[i].first=1;
-	  }
-
-	/* Initialization for PPM marker */
-	j2k_cp->ppm = 0;
-	j2k_cp->ppm_data = NULL;
-	j2k_cp->ppm_previous = 0;
-	j2k_cp->ppm_store = 0;
-
-	j2k_default_tcp.tccps =	(j2k_tccp_t *) calloc(sizeof(j2k_tccp_t), j2k_img->numcomps);
-	for (i = 0; i < j2k_cp->tw * j2k_cp->th; i++) {
-		j2k_cp->tcps[i].tccps =	(j2k_tccp_t *) calloc(sizeof(j2k_tccp_t), j2k_img->numcomps);
-	}
-	j2k_tile_data =	(unsigned char **) calloc(j2k_cp->tw * j2k_cp->th, sizeof(char *));
-	j2k_tile_len = (int *) calloc(j2k_cp->tw * j2k_cp->th, sizeof(int));
-	j2k_state = J2K_STATE_MH;
-
-	
-}
-
-void j2k_write_com()
-{
-	unsigned int i;
-	int lenp, len;
-	char str[256];
-	sprintf(str, "%s", j2k_cp->comment);
-	/* fprintf(stderr, "%.8x: COM\n", cio_tell()); */
-	cio_write(J2K_MS_COM, 2);
-	lenp = cio_tell();
-	cio_skip(2);
-	cio_write(0, 2);
-	for (i = 0; i < strlen(str); i++) {
-		cio_write(str[i], 1);
-	}
-	len = cio_tell() - lenp;
-	cio_seek(lenp);
-	cio_write(len, 2);
-	cio_seek(lenp + len);
-
-}
-
-void j2k_read_com()
-{
-	int len;
-	fprintf(stderr, "%.8x: COM\n", cio_tell()-2);
-	len = cio_read(2);
-	cio_skip(len - 2);
-	
-}
-
-void j2k_write_cox(int compno)
-{
-	int i;
-	j2k_tcp_t *tcp;
-	j2k_tccp_t *tccp;
-	tcp = &j2k_cp->tcps[j2k_curtileno];
-	tccp = &tcp->tccps[compno];
-
-	cio_write(tccp->numresolutions - 1, 1);	/* SPcox (D) */
-	cio_write(tccp->cblkw - 2, 1);	        /* SPcox (E) */
-	cio_write(tccp->cblkh - 2, 1);	        /* SPcox (F) */
-	cio_write(tccp->cblksty, 1);	        /* SPcox (G) */
-	cio_write(tccp->qmfbid, 1);		/* SPcox (H) */
-
-	if (tccp->csty & J2K_CCP_CSTY_PRT) {
-		for (i = 0; i < tccp->numresolutions; i++) {
-			cio_write(tccp->prcw[i] + (tccp->prch[i] << 4), 1);	/* SPcox (I_i) */
-		}
-	}
-}
-
-void j2k_read_cox(int compno)
-{
-	int i;
-	j2k_tcp_t *tcp;
-	j2k_tccp_t *tccp;
-	tcp = j2k_state == J2K_STATE_TPH ? &j2k_cp->tcps[j2k_curtileno] : &j2k_default_tcp;
-	tccp = &tcp->tccps[compno];
-	tccp->numresolutions = cio_read(1) + 1;  /* SPcox (D) */
-	tccp->cblkw = cio_read(1) + 2;           /* SPcox (E) */
-	tccp->cblkh = cio_read(1) + 2;           /* SPcox (F) */
-	tccp->cblksty = cio_read(1);             /* SPcox (G) */
-	tccp->qmfbid = cio_read(1);              /* SPcox (H) */
-	if (tccp->csty & J2K_CP_CSTY_PRT) {
-		for (i = 0; i < tccp->numresolutions; i++) {
-			int tmp = cio_read(1);   /* SPcox (I_i) */
-			tccp->prcw[i] = tmp & 0xf;
-			tccp->prch[i] = tmp >> 4;
-		}
-	}
-}
-
-void j2k_write_cod()
-{
-	j2k_tcp_t *tcp;
-	int lenp, len;
-	/* fprintf(stderr, "%.8x: COD\n", cio_tell()+pos_correction); */
-	cio_write(J2K_MS_COD, 2);	/* COD */
-
-	lenp = cio_tell();
-	cio_skip(2);
-
-	tcp = &j2k_cp->tcps[j2k_curtileno];
-	cio_write(tcp->csty, 1);	/* Scod */
-	cio_write(tcp->prg, 1);		/* SGcod (A) */
-	cio_write(tcp->numlayers, 2);	/* SGcod (B) */
-	cio_write(tcp->mct, 1);		/* SGcod (C) */
-
-	j2k_write_cox(0);
-	len = cio_tell() - lenp;
-	cio_seek(lenp);
-	cio_write(len, 2);		/* Lcod */
-	cio_seek(lenp + len);
-}
-
-void j2k_read_cod()
-{
-	int len, i, pos;
-	j2k_tcp_t *tcp;
-	fprintf(stderr, "%.8x: COD\n", cio_tell()-2);
-	tcp = j2k_state == J2K_STATE_TPH ? &j2k_cp->tcps[j2k_curtileno] : &j2k_default_tcp;
-	len = cio_read(2);              /* Lcod */
-	tcp->csty = cio_read(1);        /* Scod */
-	tcp->prg = cio_read(1);         /* SGcod (A) */
-	tcp->numlayers = cio_read(2);   /* SGcod (B) */
-	tcp->mct = cio_read(1);         /* SGcod (C) */
-	/*tcp->numpocs=0;
-	  tcp->POC=0;*/
-	pos = cio_tell();
-	for (i = 0; i < j2k_img->numcomps; i++) {
-		tcp->tccps[i].csty = tcp->csty & J2K_CP_CSTY_PRT;
-		cio_seek(pos);
-		j2k_read_cox(i);
-	}
-}
-
-void j2k_write_coc(int compno)
-{
-	j2k_tcp_t *tcp;
-	int lenp, len;
-	/* fprintf(stderr, "%.8x: COC\n", cio_tell()+pos_correction); */
-	cio_write(J2K_MS_COC, 2);			        /* COC */
-	lenp = cio_tell();
-	cio_skip(2);
-	tcp = &j2k_cp->tcps[j2k_curtileno];
-	cio_write(compno, j2k_img->numcomps <= 256 ? 1 : 2);	/* Ccoc */
-	cio_write(tcp->tccps[compno].csty, 1);	                /* Scoc */
-	j2k_write_cox(compno);
-	len = cio_tell() - lenp;
-	cio_seek(lenp);
-	cio_write(len, 2);					/* Lcoc */
-	cio_seek(lenp + len);
-}
-
-void j2k_read_coc()
-{
-	int len, compno;
-	j2k_tcp_t *tcp;
-	fprintf(stderr, "%.8x: COC\n", cio_tell());
-	tcp = j2k_state == J2K_STATE_TPH ? &j2k_cp->tcps[j2k_curtileno] : &j2k_default_tcp;
-	len = cio_read(2);                                      /* Lcoc */
-	compno = cio_read(j2k_img->numcomps <= 256 ? 1 : 2);    /* Ccoc */
-	tcp->tccps[compno].csty = cio_read(1);                  /* Scoc */
-	j2k_read_cox(compno);
-}
-
-void j2k_write_qcx(int compno)
-{
-	j2k_tcp_t *tcp;
-	j2k_tccp_t *tccp;
-	int bandno, numbands;
-	int expn, mant;
-	tcp = &j2k_cp->tcps[j2k_curtileno];
-	tccp = &tcp->tccps[compno];
-
-	cio_write(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(expn << 3, 1);	        /* SPqcx_i */
-		} else {
-			cio_write((expn << 11) + mant, 2);	/* SPqcx_i */
-		}
-	}
-
-}
-
-void j2k_read_qcx(int compno, int len)
-{
-	int tmp;
-	j2k_tcp_t *tcp;
-	j2k_tccp_t *tccp;
-	int bandno, numbands;
-	tcp = j2k_state == J2K_STATE_TPH ? &j2k_cp->tcps[j2k_curtileno] : &j2k_default_tcp;
-	tccp = &tcp->tccps[compno];
-	tmp = cio_read(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);
-	for (bandno = 0; bandno < numbands; bandno++) {
-		int expn, mant;
-		if (tccp->qntsty == J2K_CCP_QNTSTY_NOQNT) {	/* WHY STEPSIZES WHEN NOQNT ? */
-			expn = cio_read(1) >> 3;                /* SPqcx_i */
-			mant = 0;
-		} else {
-			tmp = cio_read(2);                      /* SPqcx_i */
-			expn = tmp >> 11;
-			mant = tmp & 0x7ff;
-		}
-		tccp->stepsizes[bandno].expn = expn;
-		tccp->stepsizes[bandno].mant = mant;
-	}
-}
-
-void j2k_write_qcd()
-{
-	int lenp, len;
-	/* fprintf(stderr, "%.8x: QCD\n", cio_tell()+pos_correction); */
-	cio_write(J2K_MS_QCD, 2);		/* QCD */
-	lenp = cio_tell();
-	cio_skip(2);
-	j2k_write_qcx(0);
-	len = cio_tell() - lenp;
-	cio_seek(lenp);
-	cio_write(len, 2);			/* Lqcd */
-	cio_seek(lenp + len);
-}
-
-void j2k_read_qcd()
-{
-	int len, i, pos;
-	fprintf(stderr, "%.8x: QCD\n", cio_tell()-2);
-	len = cio_read(2);                      /* Lqcd */
-	pos = cio_tell();
-	for (i = 0; i < j2k_img->numcomps; i++) {
-		cio_seek(pos);
-		j2k_read_qcx(i, len - 2);
-	}
-}
-
-void j2k_write_qcc(int compno)
-{
-	int lenp, len;
-	/* fprintf(stderr, "%.8x: QCC\n", cio_tell()+pos_correction); */
-	cio_write(J2K_MS_QCC, 2);                             /* QCC */
-	lenp = cio_tell();
-	cio_skip(2);
-	cio_write(compno, j2k_img->numcomps <= 256 ? 1 : 2);  /* Cqcc */
-	j2k_write_qcx(compno);
-	len = cio_tell() - lenp;
-	cio_seek(lenp);
-	cio_write(len, 2);                                    /* Lqcc */
-	cio_seek(lenp + len);
-}
-
-void j2k_read_qcc()
-{
-	int len, compno;
-	fprintf(stderr, "%.8x: QCC\n", cio_tell()-2);
-	len = cio_read(2);                                    /* Lqcc */
-	compno = cio_read(j2k_img->numcomps <= 256 ? 1 : 2);  /* Cqcc */
-	j2k_read_qcx(compno, len - 2 - (j2k_img->numcomps <= 256 ? 1 : 2));
-}
-
-void j2k_write_poc() {
-  int len,  numpchgs, i;
-  j2k_tcp_t *tcp;
-  j2k_tccp_t *tccp;
-  fprintf(stderr, "%.8x: POC\n", cio_tell() + pos_correction);
-  tcp = &j2k_cp->tcps[j2k_curtileno];
-  tccp = &tcp->tccps[0];
-  numpchgs = tcp->numpocs;
-  cio_write(J2K_MS_POC, 2);                                         /* POC  */
-  len = 2 + (5 + 2*(j2k_img->numcomps <= 256 ? 1 : 2))*numpchgs;         
-  cio_write(len, 2);                                                /* Lpoc */
-  for (i = 0; i < numpchgs; i++)
-    {
-      // MODIF
-      j2k_poc_t *poc;
-      poc = &tcp->pocs[i];
-      cio_write(poc->resno0, 1);                                    /* RSpoc_i */
-      cio_write(poc->compno0, (j2k_img->numcomps <= 256 ? 1 : 2));  /* CSpoc_i */
-      cio_write(poc->layno1, 2);                                    /* LYEpoc_i */
-      poc->layno1 = int_min(poc->layno1, tcp->numlayers);
-      cio_write(poc->resno1, 1);                                    /* REpoc_i */
-      poc->resno1 = int_min(poc->resno1, tccp->numresolutions);
-      cio_write(poc->compno1, (j2k_img->numcomps <= 256 ? 1 : 2));  /* CEpoc_i */
-      poc->compno1 = int_min(poc->compno1, j2k_img->numcomps);
-      cio_write(poc->prg, 1);                                       /* Ppoc_i */
-    }
-}
-
-void j2k_read_poc() {
-    int len, numpchgs, i, old_poc;
-    j2k_tcp_t *tcp;
-    j2k_tccp_t *tccp;
-    fprintf(stderr, "%.8x: POC\n", cio_tell()-2);
-    tcp = j2k_state==J2K_STATE_TPH ? &j2k_cp->tcps[j2k_curtileno] : &j2k_default_tcp;
-
-    old_poc = tcp->POC ? tcp->numpocs+1 : 0;
-    printf("old_poc %d\n",old_poc);
-    tcp->POC = 1;
-    tccp = &tcp->tccps[0];
-    len = cio_read(2);                                              /* Lpoc */
-    numpchgs = (len-2)/(5+2*(j2k_img->numcomps <= 256 ? 1 : 2));
-
-    for (i = old_poc; i < numpchgs+old_poc; i++) 
-      {
-	j2k_poc_t *poc;
-	poc = &tcp->pocs[i];
-	poc->resno0 = cio_read(1);                                  /* RSpoc_i */
-	poc->compno0 = cio_read(j2k_img->numcomps <= 256 ? 1 : 2);  /* CSpoc_i */
-	poc->layno1 = int_min(cio_read(2), tcp->numlayers);         /* LYEpoc_i */
-	poc->resno1 = int_min(cio_read(1), tccp->numresolutions);   /* REpoc_i */
-	poc->compno1 = int_min(cio_read(j2k_img->numcomps <= 256 ? 1 : 2), j2k_img->numcomps);  /* CEpoc_i */
-	poc->prg = cio_read(1);                                     /* Ppoc_i */
-	printf("res0 %d comp0 %d lay1 %d res1 %d comp1 %d prg %d\n",poc->resno0,poc->compno0,poc->layno1,poc->resno1,poc->compno1,poc->prg);
-      }
-
-    tcp->numpocs = numpchgs+old_poc-1;
-}
-
-void j2k_read_crg()
-{
-	int len, i, Xcrg_i, Ycrg_i;
-	fprintf(stderr, "%.8x: CRG\n", cio_tell() - 2);
-	len = cio_read(2);                                          /* Lcrg */
-	for (i=0;i<j2k_img->numcomps;i++)
-	  {  
-	    Xcrg_i = cio_read(2);                                   /* Xcrg_i */
-	    Ycrg_i = cio_read(2);                                   /* Ycrg_i */
-	  }
-}
-
-void j2k_read_tlm()
-{
-	int len, Ztlm, Stlm, ST, SP, tile_tlm, i;
-	long int Ttlm_i, Ptlm_i;
-	fprintf(stderr, "%.8x: TLM\n", cio_tell() - 2);
-	len = cio_read(2);                                       /* Ltlm */
-	Ztlm = cio_read(1);                                      /* Ztlm */
-	Stlm = cio_read(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(ST);                               /* Ttlm_i */
-	    Ptlm_i = cio_read(SP?4:2);                           /* Ptlm_i */
-	  }
-}
-
-void j2k_read_plm()
-{
-	int len, i, Zplm, Nplm, add, packet_len=0;
-	fprintf(stderr, "%.8x: PLM\n", cio_tell() - 2);
-	len = cio_read(2);                                       /* Lplm */
-	Zplm = cio_read(1);                                      /* Zplm */
-	len-=3;
-	while (len>0)
-	  {
-	    Nplm = cio_read(4);                                  /* Nplm */
-	    len-=4;
-	    for (i=Nplm ; i>0 ; i--)
-	      {
-		add=cio_read(1);
-		len--;
-		packet_len=(packet_len<<7) + add;                /* Iplm_ij */
-		if ((add & 0x80)==0)
-		  {
-		    /* New packet */
-		    packet_len=0;
-		  }
-		if (len<=0) break;
-	      } 
-	  }
-}
-
-void j2k_read_plt()
-{
-	int len, i, Zplt, packet_len=0, add;
-	fprintf(stderr, "%.8x: PLT\n", cio_tell() - 2);
-	len = cio_read(2);                                      /* Lplt */
-	Zplt=cio_read(1);                                       /* Zplt */
-	for (i=len-3;i>0;i--)
-	  {
-	    add=cio_read(1);
-	    packet_len=(packet_len<<7) + add;                   /* Iplt_i */
-	    if ((add & 0x80)==0)
-	      {
-		/* New packet */
-		packet_len=0;
-	      }
-	  }
-}
-
-void j2k_read_ppm()
-{
-  int len, Z_ppm, i, j;
-  int N_ppm;
-  fprintf(stderr, "%.8x: PPM\n", cio_tell() - 2);
-  len = cio_read(2);
-  j2k_cp->ppm=1;
-  
-  Z_ppm = cio_read(1);                   /* Z_ppm */
-  len-=3;
-  while (len > 0)
-    {
-      if (j2k_cp->ppm_previous==0)
-	{
-	  N_ppm = cio_read(4);           /* N_ppm */
-	  len-=4;
-	} else
-	  {
-	    N_ppm = j2k_cp->ppm_previous;
-	  }
-      
-      j=j2k_cp->ppm_store;
-      if (Z_ppm==0) /* First PPM marker */
-	j2k_cp->ppm_data=(unsigned char*)calloc(N_ppm,sizeof(unsigned char));
-      else      /* NON-first PPM marker */
-	j2k_cp->ppm_data=(unsigned char*)realloc(j2k_cp->ppm_data, (N_ppm+j2k_cp->ppm_store)*sizeof(unsigned char));
-
-      for (i=N_ppm ; i>0 ; i--) /* Read packet header */
-	{
-	  j2k_cp->ppm_data[j]=cio_read(1);
-	  j++;
-	  len--;
-	  if (len==0) break; /* Case of non-finished packet header in present marker but finished in next one */
-	}
-      
-      j2k_cp->ppm_previous=i-1;
-      j2k_cp->ppm_store=j;
-    }
-}
-
-void j2k_read_ppt()
-{
-	int len, Z_ppt, i, j=0;
-	j2k_tcp_t *tcp;
-	fprintf(stderr, "%.8x: PPT\n", cio_tell() - 2);
-	len = cio_read(2);	
-	Z_ppt = cio_read(1);
-	tcp=&j2k_cp->tcps[j2k_curtileno];
-	tcp->ppt=1;
-	if (Z_ppt==0) /* First PPT marker */
-	  {
-	    tcp->ppt_data=(unsigned char*)calloc(len-3,sizeof(unsigned char));
-	    tcp->ppt_store=0;
-	  }
-	else      /* NON-first PPT marker */
-	  tcp->ppt_data=(unsigned char*)realloc(tcp->ppt_data, (len-3+tcp->ppt_store)*sizeof(unsigned char));
-	
-	j=tcp->ppt_store;
-	for (i=len-3 ; i>0 ; i--)
-	  {
-	    tcp->ppt_data[j]=cio_read(1);
-	    j++;
-	  }
-	tcp->ppt_store=j;
-}
-
-void j2k_write_sot()
-{
-	int lenp, len;
-	/* fprintf(stderr, "%.8x: SOT\n", cio_tell()+pos_correction); */
-	j2k_sot_start = cio_tell();
-	cio_write(J2K_MS_SOT, 2);	/* SOT */
-	lenp = cio_tell();	
-	cio_skip(2);			/* Lsot (further) */
-	cio_write(j2k_curtileno, 2);	/* Isot */
-	cio_skip(4);			/* Psot (further in j2k_write_sod) */
-	cio_write(0, 1);		/* TPsot */
-	cio_write(1, 1);		/* TNsot */
-	len = cio_tell() - lenp;
-	cio_seek(lenp);
-	cio_write(len, 2);		/* Lsot */
-	cio_seek(lenp + len);
-}
-
-void j2k_read_sot()
-{
-	int len, tileno, totlen, partno, numparts, i;
-	j2k_tcp_t *tcp;
-	j2k_tccp_t *tmp;
-
-	fprintf(stderr, "%.8x: SOT\n", cio_tell()-2);
-	len = cio_read(2);
-	tileno = cio_read(2);
-	totlen = cio_read(4);
-	if (!totlen) 
-	  totlen = cio_numbytesleft() + 8;
-
-	partno = cio_read(1);
-	numparts = cio_read(1);
-
-	j2k_curtileno = tileno;
-	j2k_eot = cio_getbp() - 12 + totlen;
-	j2k_state = J2K_STATE_TPH;
-        tcp = &j2k_cp->tcps[j2k_curtileno];
-
-	if (tcp->first == 1)
-	  {
-	    tmp = tcp->tccps;
-	    *tcp = j2k_default_tcp;
-	    
-	    /* Initialization PPT */
-	    tcp->ppt=0; 
-	    tcp->ppt_data=NULL;
-	    
-	    tcp->tccps = tmp;
-	    for (i = 0; i < j2k_img->numcomps; i++) {
-	      tcp->tccps[i] = j2k_default_tcp.tccps[i];
-	    }
-	    j2k_cp->tcps[j2k_curtileno].first=0; 
-	  }
-}
-
-void j2k_write_sod()
-{
-	int l, layno;
-	int totlen;
-	j2k_tcp_t *tcp;
-	static int j2k_sod_start;
-
-	/* fprintf(stderr, "%.8x: SOD\n", cio_tell()+pos_correction); */
-	cio_write(J2K_MS_SOD, 2);
-	if (j2k_curtileno == 0) {
-		j2k_sod_start = cio_tell() + pos_correction;
-	}
-
-	/* INDEX >> */
-	if (info_IM.index_on) {
-		info_IM.tile[j2k_curtileno].end_header = cio_tell() + pos_correction - 1;
-		info_IM.tile[j2k_curtileno].packet = (info_packet *) calloc(info_IM.Comp * info_IM.Layer * (info_IM.Decomposition + 1) * 
-									    10,sizeof(info_packet));
-	}
-	/* << INDEX */
-
-	tcp = &j2k_cp->tcps[j2k_curtileno];
-	for (layno = 0; layno < tcp->numlayers; layno++) {
-		tcp->rates[layno] -= (j2k_sod_start / (j2k_cp->th * j2k_cp->tw));
-		/* fprintf(stderr, "tcp->rates[%d]=%d\n", layno, tcp->rates[layno]); */
-	}
-
-	info_IM.num = 0;
-	if (j2k_cp->image_type)
-		l = tcd_encode_tile_pxm(j2k_curtileno, cio_getbp(), cio_numbytesleft() - 2, &info_IM);
-	else
-		l = tcd_encode_tile_pgx(j2k_curtileno, cio_getbp(), cio_numbytesleft() - 2, &info_IM);
-
-	/* Writing Psot in SOT marker */
-	totlen = cio_tell() + l - j2k_sot_start;
-	cio_seek(j2k_sot_start + 6);
-	cio_write(totlen, 4);
-	cio_seek(j2k_sot_start + totlen);
-}
-
-void j2k_read_sod()
-{
-	int len, truncate = 0;
-	unsigned char *data;
-
-	fprintf(stderr, "%.8x: SOD\n", cio_tell()-2);
-	len = int_min(j2k_eot - cio_getbp(), cio_numbytesleft() + 1);
-	if (len == cio_numbytesleft() + 1)
-		truncate = 1;		/* Case of a truncate codestream */
-
-	j2k_tile_len[j2k_curtileno] += len;
-	data =	(unsigned char *) realloc(j2k_tile_data[j2k_curtileno],	j2k_tile_len[j2k_curtileno]);
-	memcpy(data, cio_getbp(), len);
-	j2k_tile_data[j2k_curtileno] = data;
-
-	cio_skip(len);
-
-	if (!truncate)
-		j2k_state = J2K_STATE_TPHSOT;
-	else
-		j2k_state = J2K_STATE_NEOC;	/* RAJOUTE !! */
-}
-
-void j2k_write_rgn(int compno, int tileno)
-{
-	j2k_tcp_t *tcp = &j2k_cp->tcps[tileno];
-	/* fprintf(stderr, "%.8x: RGN\n",cio_tell()+pos_correction); */
-	cio_write(J2K_MS_RGN, 2);			        /* RGN  */
-	cio_write(j2k_img->numcomps <= 256 ? 5 : 6, 2);	        /* Lrgn */
-	cio_write(compno, j2k_img->numcomps <= 256 ? 1 : 2);	/* Crgn */
-	cio_write(0, 1);					/* Srgn */
-	cio_write(tcp->tccps[compno].roishift, 1);	        /* SPrgn */
-}
-
-void j2k_read_rgn()
-{
-	int len, compno, roisty;
-	j2k_tcp_t *tcp;
-	fprintf(stderr, "%.8x: RGN\n", cio_tell() - 2);
-	tcp = j2k_state == J2K_STATE_TPH ? &j2k_cp->tcps[j2k_curtileno] : &j2k_default_tcp;
-	len = cio_read(2);                                      /* Lrgn */
-	compno = cio_read(j2k_img->numcomps <= 256 ? 1 : 2);    /* Crgn */
-	roisty = cio_read(1);                                   /* Srgn */
-	tcp->tccps[compno].roishift = cio_read(1);              /* SPrgn */
-}
-
-void j2k_write_eoc()
-{
-  /* fprintf(stderr, "%.8x: EOC\n", cio_tell() + pos_correction); */
-	cio_write(J2K_MS_EOC, 2);
-}
-
-void j2k_read_eoc()
-{
-	int tileno;
-	fprintf(stderr, "%.8x: EOC\n", cio_tell()-2);
-	/* j2k_dump_image(j2k_img); */
-	/* j2k_dump_cp(j2k_img, j2k_cp); */
-
-	tcd_init(j2k_img, j2k_cp);
-	for (tileno = 0; tileno < j2k_cp->tw * j2k_cp->th; tileno++) {
-		tcd_decode_tile(j2k_tile_data[tileno], j2k_tile_len[tileno], tileno);
-	}
-	
-	j2k_state = J2K_STATE_MT;
-	longjmp(j2k_error, 1);
-}
-
-void j2k_read_unk()
-{
-	fprintf(stderr, "warning: unknown marker\n");
-}
-
-LIBJ2K_API int j2k_encode(j2k_image_t * img, j2k_cp_t * cp, char *outfile, int len, char *index)
-{
-	int tileno, compno, layno, resno, precno, pack_nb;
-	char *dest;
-	FILE *INDEX;
-	FILE *f;
-
-	if (setjmp(j2k_error)) {
-		return 0;
-	}
-
-	f = fopen(outfile, "wb");
-
-	if (!f) {
-		fprintf(stderr, "failed to open %s for writing\n", outfile);
-		return 1;
-	}
-
-	dest = (char *) malloc(len);
-	cio_init(dest, len);
-
-	j2k_img = img;
-	j2k_cp = cp;
-	/* j2k_dump_cp(j2k_img, j2k_cp); */
-
-	/* INDEX >> */
-	info_IM.index_on = j2k_img->index_on;
-	if (info_IM.index_on) {
-		info_IM.tile = (info_tile *) malloc(j2k_cp->tw * j2k_cp->th * sizeof(info_tile));
-		info_IM.Im_w = j2k_img->x1 - j2k_img->x0;
-		info_IM.Im_h = j2k_img->y1 - j2k_img->y0;
-		info_IM.Prog = (&j2k_cp->tcps[0])->prg;
-		/* info_IM.Tile_x=j2k_cp->tw; old version parser */
-		/* info_IM.Tile_y=j2k_cp->th; old version parser */
-		info_IM.Tile_x = j2k_cp->tdx;	/* new version parser */
-		info_IM.Tile_y = j2k_cp->tdy;	/* new version parser */
-		info_IM.Comp = j2k_img->numcomps;
-		info_IM.Layer = (&j2k_cp->tcps[0])->numlayers;
-		info_IM.Decomposition = (&j2k_cp->tcps[0])->tccps->numresolutions - 1;
-		info_IM.D_max = 0;					/* ADD Marcela */
-	}
-	/* << INDEX */
-
-	j2k_write_soc();
-	j2k_write_siz();
-	j2k_write_cod();
-	j2k_write_qcd();
-	for (compno = 0; compno < j2k_img->numcomps; compno++) {
-		j2k_tcp_t *tcp = &j2k_cp->tcps[0];
-		if (tcp->tccps[compno].roishift)
-			j2k_write_rgn(compno, 0);
-	}
-	if (j2k_cp->comment != NULL)
-		j2k_write_com();
-
-	/* Writing the main header */
-	pos_correction = cio_tell();
-	fwrite(dest, 1, cio_tell(), f);
-
-	/* INDEX >> */
-	if (info_IM.index_on) {
-		info_IM.Main_head_end = cio_tell() - 1;
-	}
-	/* << INDEX */
-
-	
-	for (tileno = 0; tileno < cp->tw * cp->th; tileno++) {
-		fprintf(stderr, "\nTile number %d / %d \n", tileno + 1,
-						cp->tw * cp->th);
-
-		/* new dest for each tile  */
-		free(dest);
-		dest = (char *) malloc(len);
-		cio_init(dest, len);
-		j2k_curtileno = tileno;
-		/* initialisation before tile encoding  */
-
-		if (tileno == 0) {
-			tcd_malloc_encode(j2k_img, j2k_cp, j2k_curtileno);
-		} else {
-			tcd_init_encode(j2k_img, j2k_cp, j2k_curtileno);
-		}
-
-		/* INDEX >> */
-		if (info_IM.index_on) {
-			info_IM.tile[j2k_curtileno].num_tile = j2k_curtileno;
-			info_IM.tile[j2k_curtileno].start_pos = cio_tell() + pos_correction;
-		}
-		/* << INDEX */
-		j2k_write_sot();
-
-		for (compno = 1; compno < img->numcomps; compno++) {
-			j2k_write_coc(compno);
-			j2k_write_qcc(compno);
-		}
-
-		if (cp->tcps[tileno].numpocs)
-			j2k_write_poc();
-		j2k_write_sod();
-
-		/* INDEX >> */
-		if (info_IM.index_on) {
-			info_IM.tile[j2k_curtileno].end_pos =
-				cio_tell() + 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");
-		   }
-		 */
-
-		fwrite(dest, 1, cio_tell(), f);
-		pos_correction = cio_tell() + pos_correction;
-	}
-
-	free(dest);
-	dest = (char *) malloc(len);
-	cio_init(dest, len);
-
-	j2k_write_eoc();
-
-	fwrite(dest, 1, 2, f);
-	free(dest);
-	/* closing file *.j2k */
-	fclose(f);
-
-	/* Creation of the index file     */
-	if (info_IM.index_on) {
-		info_IM.codestream_size = cio_tell() + pos_correction;	/* Correction 14/4/03 suite rmq de Patrick */
-		INDEX = fopen(index, "w");
-
-		if (!INDEX) {
-			fprintf(stderr, "failed to open %s for writing\n", index);
-			return 1;
-		}
-
-		fprintf(INDEX, "%d %d\n", info_IM.Im_w, info_IM.Im_h);
-		fprintf(INDEX, "%d\n", info_IM.Prog);
-		fprintf(INDEX, "%d %d\n", info_IM.Tile_x, info_IM.Tile_y);
-		fprintf(INDEX, "%d\n", info_IM.Comp);
-		fprintf(INDEX, "%d\n", info_IM.Layer);
-		fprintf(INDEX, "%d\n", info_IM.Decomposition);
-		fprintf(INDEX, "%d %d\n", info_IM.pdx, info_IM.pdy);
-		fprintf(INDEX, "%d\n", info_IM.Main_head_end);
-		fprintf(INDEX, "%d\n", info_IM.codestream_size);
-
-		for (tileno = 0; tileno < j2k_cp->tw * j2k_cp->th; tileno++) {
-			fprintf(INDEX, "%d %d %d %d", info_IM.tile[tileno].num_tile,
-							info_IM.tile[tileno].start_pos,
-							info_IM.tile[tileno].end_header,
-							info_IM.tile[tileno].end_pos);
-			/*for (layno=0;layno<info_IM.Layer;layno++)
-			  fprintf(INDEX, " %f",info_IM.tile[tileno].thresh[layno]);
-			*/	fprintf(INDEX,"\n");
-			}
-		for (tileno = 0; tileno < j2k_cp->tw * j2k_cp->th; tileno++) {
-			pack_nb = 0;
-			if (info_IM.Prog == 0) {	/* LRCP */
-				for (layno = 0; layno < info_IM.Layer; layno++) {
-					for (resno = 0; resno < info_IM.Decomposition + 1; resno++) {
-						for (compno = 0; compno < info_IM.Comp; compno++) {
-							for (precno = 0;
-									 precno <
-									 info_IM.tile[tileno].pw * info_IM.tile[tileno].ph;
-									 precno++) {
-								 fprintf(INDEX,"%d %d %d %d %d %d %d %d %.04f\n",pack_nb,tileno,layno,resno,compno,precno,info_IM.tile[tileno].packet[pack_nb].start_pos,info_IM.tile[tileno].packet[pack_nb].end_pos,info_IM.tile[tileno].packet[pack_nb].disto); 
-								 /*fprintf(INDEX, "%d %d %d %d %d %d %d %d\n", pack_nb, tileno, layno, resno, compno, precno, info_IM.tile[tileno].packet[pack_nb].start_pos, info_IM.tile[tileno].packet[pack_nb].end_pos);*/
-								pack_nb++;
-							}
-						}
-					}
-				}
-			} else if (info_IM.Prog == 1) {	/* RLCP */
-				for (resno = 0; resno < info_IM.Decomposition + 1; resno++) {
-					for (layno = 0; layno < info_IM.Layer; layno++) {
-						for (compno = 0; compno < info_IM.Comp; compno++) {
-							for (precno = 0; precno < info_IM.pw * info_IM.ph; precno++) {
-								/* fprintf(INDEX,"%d %d %d %d %d %d %d %d %.04f\n",pack_nb,tileno,layno,resno,compno,precno,info_IM.tile[tileno].packet[pack_nb].start_pos,info_IM.tile[tileno].packet[pack_nb].end_pos,info_IM.tile[tileno].packet[pack_nb].disto/info_IM.D_max); */
-								fprintf(INDEX, "%d %d %d %d %d %d %d %d\n", pack_nb,
-												tileno, layno, resno, compno, precno,
-												info_IM.tile[tileno].packet[pack_nb].start_pos,
-												info_IM.tile[tileno].packet[pack_nb].end_pos);
-								pack_nb++;
-							}
-						}
-					}
-				}
-			} else if (info_IM.Prog == 2) {	/* RPCL */
-				for (resno = 0; resno < info_IM.Decomposition + 1; resno++) {
-					for (precno = 0; precno < info_IM.pw * info_IM.ph; precno++) {
-						for (compno = 0; compno < info_IM.Comp; compno++) {
-							for (layno = 0; layno < info_IM.Layer; layno++) {
-								/* fprintf(INDEX,"%d %d %d %d %d %d %d %d %.04f\n",pack_nb,tileno,layno,resno,compno,precno,info_IM.tile[tileno].packet[pack_nb].start_pos,info_IM.tile[tileno].packet[pack_nb].end_pos,info_IM.tile[tileno].packet[pack_nb].disto/info_IM.D_max); */
-								fprintf(INDEX, "%d %d %d %d %d %d %d %d\n", pack_nb,
-												tileno, layno, resno, compno, precno,
-												info_IM.tile[tileno].packet[pack_nb].start_pos,
-												info_IM.tile[tileno].packet[pack_nb].end_pos);
-								pack_nb++;
-							}
-						}
-					}
-				}
-			} else if (info_IM.Prog == 3) {	/* PCRL */
-				for (precno = 0; precno < info_IM.pw * info_IM.ph; precno++) {
-					for (compno = 0; compno < info_IM.Comp; compno++) {
-						for (resno = 0; resno < info_IM.Decomposition + 1; resno++) {
-							for (layno = 0; layno < info_IM.Layer; layno++) {
-								/* fprintf(INDEX,"%d %d %d %d %d %d %d %d %.04f\n",pack_nb,tileno,layno,resno,compno,precno,info_IM.tile[tileno].packet[pack_nb].start_pos,info_IM.tile[tileno].packet[pack_nb].end_pos,info_IM.tile[tileno].packet[pack_nb].disto/info_IM.D_max); */
-								fprintf(INDEX, "%d %d %d %d %d %d %d %d\n", pack_nb,
-												tileno, layno, resno, compno, precno,
-												info_IM.tile[tileno].packet[pack_nb].start_pos,
-												info_IM.tile[tileno].packet[pack_nb].end_pos);
-								pack_nb++;
-							}
-						}
-					}
-				}
-			} else {									/* CPRL */
-
-				for (compno = 0; compno < info_IM.Comp; compno++) {
-					for (precno = 0; precno < info_IM.pw * info_IM.ph; precno++) {
-						for (resno = 0; resno < info_IM.Decomposition + 1; resno++) {
-							for (layno = 0; layno < info_IM.Layer; layno++) {
-							  /*fprintf(INDEX,"%d %d %d %d %d %d %d %d %.04f\n",pack_nb,tileno,layno,resno,compno,precno,info_IM.tile[tileno].packet[pack_nb].start_pos,info_IM.tile[tileno].packet[pack_nb].end_pos,info_IM.tile[tileno].packet[pack_nb].disto/info_IM.D_max);*/
-							  fprintf(INDEX, "%d %d %d %d %d %d %d %d\n", pack_nb, tileno, layno, resno, compno, precno, info_IM.tile[tileno].packet[pack_nb].start_pos, info_IM.tile[tileno].packet[pack_nb].end_pos);
-								pack_nb++;
-							}
-						}
-					}
-				}
-			}
-		}
-		fclose(INDEX);
-	}
-
-	j2k_clean();
-
-	return cio_tell();
-}
-
-typedef struct {
-	int id;
-	int states;
-	void (*handler) ();
-} j2k_dec_mstabent_t;
-
-j2k_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},
-	{0, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_unk}
-};
-
-j2k_dec_mstabent_t *j2k_dec_mstab_lookup(int id)
-{
-	j2k_dec_mstabent_t *e;
-	for (e = j2k_dec_mstab; e->id != 0; e++) {
-		if (e->id == id) {
-			break;
-		}
-	}
-	return e;
-}
-
-LIBJ2K_API int j2k_decode(unsigned char *src, int len, j2k_image_t ** img, j2k_cp_t ** cp)
-{
-
-	if (setjmp(j2k_error)) {
-		if (j2k_state != J2K_STATE_MT) {
-			fprintf(stderr, "WARNING: incomplete bitstream\n");
-			return 0;
-		}
-		return cio_numbytes();
-	}
-
-	j2k_img = (j2k_image_t *) malloc(sizeof(j2k_image_t));
-	j2k_cp = (j2k_cp_t *) malloc(sizeof(j2k_cp_t));
-	*img = j2k_img;
-	*cp = j2k_cp;
-	j2k_state = J2K_STATE_MHSOC;
-	cio_init(src, len);
-
-	for (;;) {
-		j2k_dec_mstabent_t *e;
-		int id = cio_read(2);
-		if (id >> 8 != 0xff) {
-			fprintf(stderr, "%.8x: expected a marker instead of %x\n", cio_tell() - 2, id);
-			return 0;
-		}
-		e = j2k_dec_mstab_lookup(id);
-		if (!(j2k_state & e->states)) {
-			fprintf(stderr, "%.8x: unexpected marker %x\n", cio_tell() - 2, id);
-			return 0;
-		}
-		if (e->handler) {
-		  (*e->handler) ();
-		}
-		if (j2k_state == J2K_STATE_NEOC)
-		  break;					/* RAJOUTE */
-	}
-	if (j2k_state == J2K_STATE_NEOC)
-	  j2k_read_eoc();					/* RAJOUTE */
-	
-	return 0;
-}
-
-/*
- * Read a JPT-stream and decode file
- *
- */
-int j2k_decode_jpt_stream(unsigned char *src, int len, j2k_image_t ** img, j2k_cp_t ** cp)
-{ 
-  jpt_msg_header_struct_t header;
-  int position;
-
-  if (setjmp(j2k_error)) {
-    if (j2k_state != J2K_STATE_MT) {
-      fprintf(stderr, "WARNING: incomplete bitstream\n");
-      return 0;
-    }
-    return cio_numbytes();
-  }
-  
-  j2k_img = (j2k_image_t *) malloc(sizeof(j2k_image_t));
-  j2k_cp = (j2k_cp_t *) malloc(sizeof(j2k_cp_t));
-  *img = j2k_img;
-  *cp = j2k_cp; 
-  j2k_state = J2K_STATE_MHSOC;
-  cio_init(src, len);
-
-  /* Initialize the header */
-  jpt_init_Msg_Header(&header);
-  /* Read the first header of the message */
-  jpt_read_Msg_Header(&header);
-  
-  position = cio_tell();
-  if (header.Class_Id != 6) /* 6 : Main header data-bin message */
-    {
-      fprintf(stderr,"[JPT-stream] : Expecting Main header first [class_Id %d] !\n",header.Class_Id);
-      return 0;
-    }
-
-  for (;;) {
-    j2k_dec_mstabent_t *e;
-    int id;
-
-    if(!cio_numbytesleft())
-      {
-	j2k_read_eoc();
-	return 0;
-      }
-    /* data-bin read -> need to read a new header */
-    if ((cio_tell() - position) == header.Msg_length)
-      {
-	jpt_read_Msg_Header(&header);
-	position = cio_tell();
-	if (header.Class_Id != 4) /* 4 : Tile data-bin message */
-	  {
-	    fprintf(stderr,"[JPT-stream] : Expecting Tile info !\n");
-	    return 0;
-	  }
-      }
-
-    id = cio_read(2);
-    if (id >> 8 != 0xff) {
-      fprintf(stderr, "%.8x: expected a marker instead of %x\n", cio_tell() - 2, id);
-      return 0;
-    }
-    e = j2k_dec_mstab_lookup(id);
-    if (!(j2k_state & e->states)) {
-      fprintf(stderr, "%.8x: unexpected marker %x\n", cio_tell() - 2, id);
-      return 0;
-    }
-    if (e->handler) {
-      (*e->handler) ();
-    }
-    if (j2k_state == J2K_STATE_NEOC)
-      break;						/* RAJOUTE */
-  }
-  if (j2k_state == J2K_STATE_NEOC)
-    j2k_read_eoc();					/* RAJOUTE */
-  
-  return 0;
-}
-
-#ifdef WIN32
-#include <windows.h>
-
-BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call,	LPVOID lpReserved)
-{
-	switch (ul_reason_for_call) {
-	case DLL_PROCESS_ATTACH:
-	case DLL_THREAD_ATTACH:
-	case DLL_THREAD_DETACH:
-	case DLL_PROCESS_DETACH:
-		break;
-	}
-	return TRUE;
-}
-#endif
diff --git a/libopenjpeg/j2k.h b/libopenjpeg/j2k.h
deleted file mode 100644
index 98d104c..0000000
--- a/libopenjpeg/j2k.h
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * Copyright (c) 2002-2003, Yannick Verschueren
- * Copyright (c) 2002-2003,  Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 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.
- */
-
-#define VERSION "0.0.8"
-
-#ifdef DAVID_WIN32
-#ifdef LIBJ2K_EXPORTS
-#define LIBJ2K_API __declspec(dllexport)
-#else
-#define LIBJ2K_API __declspec(dllimport)
-#endif
-#else
-#define LIBJ2K_API
-#endif
-
-#ifndef __J2K_H
-#define __J2K_H
-
-#define J2K_MAXRLVLS 33                        /* Number of maximum resolution level authorized                   */
-#define J2K_MAXBANDS (3*J2K_MAXRLVLS+1)        /* Number of maximum sub-band linked to number of resolution level */
-
-#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
-
-typedef struct {
-	int dx, dy;				/* XRsiz, YRsiz              */
-	int prec;				/* precision                 */
-	int bpp;				/* deapth of image in bits   */
-	int sgnd;				/* signed                    */
-	int *data;				/* image-component data      */
-} j2k_comp_t;
-
-typedef struct {
-	int x0, y0;				/* XOsiz, YOsiz              */
-	int x1, y1;				/* Xsiz, Ysiz                */
-	int numcomps;				/* number of components      */
-	int index_on;				/* 0 = no index || 1 = index */
-	j2k_comp_t *comps;			/* image-components          */
-} j2k_image_t;
-
-typedef struct {
-	int expn;				/* exponent                  */
-	int mant;				/* mantissa                  */
-} j2k_stepsize_t;
-
-typedef struct {
-	int csty;				/* coding style                          */
-	int numresolutions;			/* number of resolutions                 */
-	int cblkw;				/* width of code-blocks                  */
-	int cblkh;				/* height of code-blocks                 */
-	int cblksty;				/* code-block coding style               */
-	int qmfbid;				/* discrete wavelet transform identifier */
-	int qntsty;				/* quantisation style                    */
-	j2k_stepsize_t stepsizes[J2K_MAXBANDS];	/* stepsizes used for quantisation       */
-	int numgbits;				/* number of guard bits                  */
-	int roishift;				/* Region Of Interest shift              */
-	int prcw[J2K_MAXRLVLS];			/* Precinct width                        */
-	int prch[J2K_MAXRLVLS];			/* Precinct height                       */
-} j2k_tccp_t;
-
-typedef struct {
-	int resno0, compno0;
-	int layno1, resno1, compno1;
-	int prg;
-	int tile;
-	char progorder[4];
-} j2k_poc_t;
-
-typedef struct {
-        int first;                      /* 1 : first part-tile of a tile                                     */
-        int csty;			/* coding style                                                      */
-	int prg;			/* progression order                                                 */
-	int numlayers;			/* number of layers                                                  */
-	int mct;			/* multi-component transform identifier                              */
-	int rates[100];			/* rates of layers                                                   */
-	int numpocs;			/* number of progression order changes                               */
-        int POC;                        /* Precise if a POC marker has been used O:NO, 1:YES                 */
-	j2k_poc_t pocs[32];		/* progression order changes                                         */
-        unsigned char *ppt_data;        /* packet header store there for futur use in t2_decode_packet       */
-        int ppt;                        /* If ppt == 1 --> there was a PPT marker for the present tile       */
-        int ppt_store;                  /* Use in case of multiple marker PPT (number of info already store) */
-        j2k_tccp_t *tccps;		/* tile-component coding parameters                                  */
-} j2k_tcp_t;
-
-typedef struct {
-	int image_type;			/* 0: PNM, PGM, PPM 1: PGX           */
-	int disto_alloc;		/* Allocation by rate/distortion     */
-	int fixed_alloc;		/* Allocation by fixed layer         */
-	int tx0, ty0;			/* XTOsiz, YTOsiz                    */
-	int tdx, tdy;			/* XTsiz, YTsiz                      */
-	char *comment;			/* comment for coding                */
-	int tw, th;
-        unsigned char *ppm_data;        /* packet header store there for futur use in t2_decode_packet             */
-        int ppm;                        /* If ppm == 1 --> there was a PPM marker for the present tile             */
-        int ppm_store;                  /* Use in case of multiple marker PPM (number of info already store)       */
-        int ppm_previous;               /* Use in case of multiple marker PPM (case on non-finished previous info) */
-	j2k_tcp_t *tcps;		/* tile coding parameters                                                  */
-        int *matrice;                   /* Fixed layer                                                             */
-} j2k_cp_t;
-
-typedef struct {
-	int start_pos, end_pos;		/* start and end position            */
-	double disto;                   /* ADD for Marcela                   */
-} info_packet;				/* Index struct                      */
-
-typedef struct {
-        double *thresh;                 /* value of thresh for each layer by tile cfr. Marcela   */
-	int num_tile;			/* Number of Tile                                        */
-	int start_pos;			/* Start position                                        */
-	int end_header;			/* End position of the header                            */
-	int end_pos;			/* End position                                          */
-	int pw, ph;			/* number of precinct by tile                            */
-	info_packet *packet;		/* information concerning packets inside tile            */
-} info_tile;				/* index struct                                          */
-
-typedef struct {
-	int index_on;
-	double D_max;			/* ADD for Marcela                                       */
-	int num;			/* numero of packet                                      */
-	int index_write;		/* writing the packet inthe index with t2_encode_packets */
-	int Im_w, Im_h;			/* Image width and Height                                */
-	int Prog;			/* progression order                                     */
-	int Tile_x, Tile_y;		/* Number of Tile in X and Y                             */
-	int tw, th;
-        int Comp;			/* Component numbers                                     */
-	int Layer;			/* number of layer                                       */
-	int Decomposition;		/* number of decomposition                               */
-	int pw, ph;			/* nombre precinct in X and Y                            */
-	int pdx, pdy;			/* size of precinct in X and Y                           */
-	int Main_head_end;		/* Main header position                                  */
-	int codestream_size;		/* codestream's size                                     */
-	info_tile *tile;		/* information concerning tiles inside image             */
-} info_image;				/* index struct                                          */
-
-/* 
- * Encode an image into a JPEG-2000 codestream
- * i: image to encode
- * cp: coding parameters
- * dest: destination buffer
- * len: length of destination buffer
- * index : index file name
- */
-LIBJ2K_API int j2k_encode(j2k_image_t * i, j2k_cp_t * cp, char *outfile, int len, char *index);
-
-/* LIBJ2K_API int j2k_encode(j2k_image_t *i, j2k_cp_t *cp,unsigned char *dest, int len); */
-/*
- * Decode an image from a JPEG-2000 codestream
- * src: source buffer
- * len: length of source buffer
- * i: decode image
- * cp: coding parameters that were used to encode the image
- */
-LIBJ2K_API int j2k_decode(unsigned char *src, int len, j2k_image_t ** img, j2k_cp_t ** cp);
-
-
-/*
- * Decode an image form a JPT-stream (JPEG 2000, JPIP)
- * src: source buffer
- * len: length of source buffer
- * i: decode image
- * cp: coding parameters that were used to encode the image
- *
- */
-int j2k_decode_jpt_stream(unsigned char *src, int len, j2k_image_t ** img, j2k_cp_t ** cp);
-
-#endif
diff --git a/libopenjpeg/jpt.c b/libopenjpeg/jpt.c
deleted file mode 100644
index 04cc826..0000000
--- a/libopenjpeg/jpt.c
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * Copyright (c) 2004, Yannick Verschueren
- * Copyright (c) 2004, Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 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 <stdio.h>
-#include <stdlib.h>
-
-#include "jpt.h"
-#include "j2k.h"
-#include "cio.h"
-
-
-/*
- * Read the information contains in VBAS [JPP/JPT stream message header]
- * Store information (7 bits) in value
- *
- */ 
-unsigned int jpt_read_VBAS_info(unsigned int value)
-{
-  unsigned char elmt;
-
-  elmt = cio_read(1);
-  while ((elmt >> 7) == 1)
-    {
-      value = (value << 7);
-      value |= (elmt & 0x7f);
-      elmt = cio_read(1);
-    }
-  value = (value << 7);
-  value |= (elmt & 0x7f);
-  
-  return value;
-}
-
-/*
- * Initialize the value of the message header structure 
- *
- */ 
-void jpt_init_Msg_Header(jpt_msg_header_struct_t *header)
-{
-  header->Id = 0;            /* In-class Identifier    */
-  header->last_byte = 0;     /* Last byte information  */
-  header->Class_Id = 0;      /* Class Identifier       */ 
-  header->CSn_Id = 0;        /* CSn : index identifier */
-  header->Msg_offset = 0;    /* Message offset         */
-  header->Msg_length = 0;    /* Message length         */
-  header->Layer_nb = 0;      /* Auxiliary for JPP case */
-}
-
-/*
- * Re-initialize the value of the message header structure
- *
- * Only parameters always present in message header
- *
- */
-void jpt_reinit_Msg_Header(jpt_msg_header_struct_t *header)
-{
-  header->Id = 0;            /* In-class Identifier    */
-  header->last_byte = 0;     /* Last byte information  */
-  header->Msg_offset = 0;    /* Message offset         */
-  header->Msg_length = 0;    /* Message length         */
-}
-
-/*
- * Read the message header for a JPP/JPT - stream
- *
- */
-void jpt_read_Msg_Header(jpt_msg_header_struct_t *header)
-{
-  unsigned char elmt, Class = 0, CSn = 0;
-  jpt_reinit_Msg_Header(header);
-
-  /* ------------- */
-  /* VBAS : Bin-ID */
-  /* ------------- */
-  elmt = cio_read(1);
-  
-  /* See for Class and CSn */
-  switch((elmt>>5) & 0x03) 
-    {
-    case 0:
-      fprintf(stderr,"Forbidden value encounter in message header !!\n");
-      break;
-    case 1:
-      Class = 0;
-      CSn = 0;
-      break;
-    case 2:
-      Class = 1;
-      CSn = 0;
-      break;
-    case 3:
-      Class = 1;
-      CSn = 1;
-      break;
-    default :
-      break;
-    }
-  
-  /* see information on bits 'c' [p 10 : A.2.1 general, ISO/IEC FCD 15444-9] */ 
-  if (((elmt>>3) & 0x01) == 1)
-    header->last_byte = 1;
-
-  /* In-class identifier */
-  header->Id |= (elmt & 0x0f);
-  if ((elmt>>7)==1)
-    header->Id = jpt_read_VBAS_info(header->Id);
-  
-  /* ------------ */
-  /* VBAS : Class */
-  /* ------------ */
-  if (Class==1)
-    {
-      header->Class_Id = 0;
-      header->Class_Id = jpt_read_VBAS_info(header->Class_Id);
-    }
-
-  /* ---------- */
-  /* VBAS : CSn */
-  /* ---------- */
-  if (CSn==1)
-    {
-      header->CSn_Id = 0;
-      header->CSn_Id = jpt_read_VBAS_info(header->CSn_Id);
-    }
-
-  /* ----------------- */
-  /* VBAS : Msg_offset */
-  /* ----------------- */
-  header->Msg_offset = jpt_read_VBAS_info(header->Msg_offset);
-
-  /* ----------------- */
-  /* VBAS : Msg_length */
-  /* ----------------- */
-  header->Msg_length = jpt_read_VBAS_info(header->Msg_length);
-
-  /* ---------- */
-  /* VBAS : Aux */
-  /* ---------- */  
-  if (header->CSn_Id == 1)
-    {
-      header->Layer_nb = 0;
-      header->Layer_nb = jpt_read_VBAS_info(header->Layer_nb);
-    }
-}
diff --git a/libopenjpeg/jpt.h b/libopenjpeg/jpt.h
deleted file mode 100644
index e2932dc..0000000
--- a/libopenjpeg/jpt.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (c) 2004, Yannick Verschueren
- * Copyright (c) 2004,  Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 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.
- */
-
-/*
- * Message Header JPT_stream Structure 
- *
- */
-typedef struct {
-  unsigned int Id;            /* In-class Identifier    */
-  unsigned int last_byte;     /* Last byte information  */
-  unsigned int Class_Id;      /* Class Identifier       */ 
-  unsigned int CSn_Id;        /* CSn : index identifier */
-  unsigned int Msg_offset;    /* Message offset         */
-  unsigned int Msg_length;    /* Message length         */
-  unsigned int Layer_nb;      /* Auxiliary for JPP case */
-} jpt_msg_header_struct_t;
-
-/*
- * Initialize the value of the message header structure 
- *
- * header : Message header structure
- *
- */ 
-void jpt_init_Msg_Header(jpt_msg_header_struct_t *header);
-
-/*
- * Read the message header for a JPP/JPT - stream
- *
- * header : Message header structure
- *
- */
-void jpt_read_Msg_Header(jpt_msg_header_struct_t *header);
diff --git a/libopenjpeg/mct.c b/libopenjpeg/mct.c
deleted file mode 100644
index ef371e9..0000000
--- a/libopenjpeg/mct.c
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * 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 "mct.h"
-#include "fix.h"
-
-/* <summary> */
-/* This table contains the norms of the basis function of the reversible MCT. */
-/* </summary> */
-double mct_norms[3] = { 1.732, .8292, .8292 };
-
-/* <summary> */
-/* This table contains the norms of the basis function of the irreversible MCT. */
-/* </summary> */
-double mct_norms_real[3] = { 1.732, 1.805, 1.573 };
-
-/* <summary> */
-/* Foward reversible MCT. */
-/* </summary> */
-void mct_encode(int *c0, int *c1, int *c2, int n)
-{
-	int i;
-	for (i = 0; i < n; i++) {
-		int r, g, b, y, u, v;
-		r = c0[i];
-		g = c1[i];
-		b = c2[i];
-		y = (r + (g << 1) + b) >> 2;
-		u = b - g;
-		v = r - g;
-		c0[i] = y;
-		c1[i] = u;
-		c2[i] = v;
-	}
-}
-
-/* <summary> */
-/* Inverse reversible MCT. */
-/* </summary> */
-void mct_decode(int *c0, int *c1, int *c2, int n)
-{
-	int i;
-	for (i = 0; i < n; i++) {
-		int y, u, v, r, g, b;
-		y = c0[i];
-		u = c1[i];
-		v = c2[i];
-		g = y - ((u + v) >> 2);
-		r = v + g;
-		b = u + g;
-		c0[i] = r;
-		c1[i] = g;
-		c2[i] = b;
-	}
-}
-
-/* <summary> */
-/* Get norm of basis function of reversible MCT. */
-/* </summary> */
-double mct_getnorm(int compno)
-{
-	return mct_norms[compno];
-}
-
-/* <summary> */
-/* Foward irreversible MCT. */
-/* </summary> */
-void mct_encode_real(int *c0, int *c1, int *c2, int n)
-{
-	int i;
-	for (i = 0; i < n; i++) {
-		int r, g, b, y, u, v;
-		r = c0[i];
-		g = c1[i];
-		b = c2[i];
-		y = fix_mul(r, 2449) + fix_mul(g, 4809) + fix_mul(b, 934);
-		u = -fix_mul(r, 1382) - fix_mul(g, 2714) + fix_mul(b, 4096);
-		v = fix_mul(r, 4096) - fix_mul(g, 3430) - fix_mul(b, 666);
-		c0[i] = y;
-		c1[i] = u;
-		c2[i] = v;
-	}
-}
-
-/* <summary> */
-/* Inverse irreversible MCT. */
-/* </summary> */
-void mct_decode_real(int *c0, int *c1, int *c2, int n)
-{
-	int i;
-	for (i = 0; i < n; i++) {
-		int y, u, v, r, g, b;
-		y = c0[i];
-		u = c1[i];
-		v = c2[i];
-		r = y + fix_mul(v, 11485);
-		g = y - fix_mul(u, 2819) - fix_mul(v, 5850);
-		b = y + fix_mul(u, 14516);
-		c0[i] = r;
-		c1[i] = g;
-		c2[i] = b;
-	}
-}
-
-/* <summary> */
-/* Get norm of basis function of irreversible MCT. */
-/* </summary> */
-double mct_getnorm_real(int compno)
-{
-	return mct_norms_real[compno];
-}
diff --git a/libopenjpeg/mct.h b/libopenjpeg/mct.h
deleted file mode 100644
index 196dc6d..0000000
--- a/libopenjpeg/mct.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * 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 __MCT_H
-#define __MCT_H
-
-/*
- * Apply a reversible multi-component transform to an image
- * R: samples for red component
- * G: samples for green component
- * B: samples blue component
- * n: number of samples for each component
- */
-void mct_encode(int *R, int *G, int *B, int n);
-/*
- * Apply a reversible multi-component inverse transform to an image
- * Y: samples for luminance component
- * U: samples for red chrominance component
- * V: samples for blue chrominance component
- * n: number of samples for each component
- */
-void mct_decode(int *V, int *U, int *Y, int n);
-/*
- * Get norm of the basis function used for the reversible multi-component transform
- * compno: number of the component (0->Y, 1->U, 2->V)
- */
-double mct_getnorm(int compno);
-
-/*
- * Apply an irreversible multi-component transform to an image
- * R: samples for red component
- * G: samples for green component
- * B: samples blue component
- * n: number of samples for each component
- */
-void mct_encode_real(int *c0, int *c1, int *c2, int n);
-/*
- * Apply an irreversible multi-component inverse transform to an image
- * Y: samples for luminance component
- * U: samples for red chrominance component
- * V: samples for blue chrominance component
- * n: number of samples for each component
- */
-void mct_decode_real(int *c0, int *c1, int *c2, int n);
-/*
- * Get norm of the basis function used for the irreversible multi-component transform
- * compno: number of the component (0->Y, 1->U, 2->V)
- */
-double mct_getnorm_real(int compno);
-
-#endif
diff --git a/libopenjpeg/mqc.c b/libopenjpeg/mqc.c
deleted file mode 100644
index 4e6c319..0000000
--- a/libopenjpeg/mqc.c
+++ /dev/null
@@ -1,589 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * Copyright (c) 2002-2003, Yannick Verschueren
- * Copyright (c) 2002-2003,  Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 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 "mqc.h"
-#include <stdio.h>
-
-/* <summary> */
-/* This struct defines the state of a context. */
-/* </summary> */
-typedef struct mqc_state_s {
-	unsigned int qeval;	        /* the probability of the Least Probable Symbol (0.75->0x8000, 1.5->0xffff) */
-	int mps;		        /* the Most Probable Symbol (0 or 1) */
-	struct mqc_state_s *nmps;	/* next state if the next encoded symbol is the MPS */
-	struct mqc_state_s *nlps;	/* next state if the next encoded symbol is the LPS */
-} mqc_state_t;
-
-/* <summary> */
-/* This array defines all the possible states for a context. */
-/* </summary> */
-mqc_state_t mqc_states[47 * 2] = {
-	{0x5601, 0, &mqc_states[2], &mqc_states[3]},
-	{0x5601, 1, &mqc_states[3], &mqc_states[2]},
-	{0x3401, 0, &mqc_states[4], &mqc_states[12]},
-	{0x3401, 1, &mqc_states[5], &mqc_states[13]},
-	{0x1801, 0, &mqc_states[6], &mqc_states[18]},
-	{0x1801, 1, &mqc_states[7], &mqc_states[19]},
-	{0x0ac1, 0, &mqc_states[8], &mqc_states[24]},
-	{0x0ac1, 1, &mqc_states[9], &mqc_states[25]},
-	{0x0521, 0, &mqc_states[10], &mqc_states[58]},
-	{0x0521, 1, &mqc_states[11], &mqc_states[59]},
-	{0x0221, 0, &mqc_states[76], &mqc_states[66]},
-	{0x0221, 1, &mqc_states[77], &mqc_states[67]},
-	{0x5601, 0, &mqc_states[14], &mqc_states[13]},
-	{0x5601, 1, &mqc_states[15], &mqc_states[12]},
-	{0x5401, 0, &mqc_states[16], &mqc_states[28]},
-	{0x5401, 1, &mqc_states[17], &mqc_states[29]},
-	{0x4801, 0, &mqc_states[18], &mqc_states[28]},
-	{0x4801, 1, &mqc_states[19], &mqc_states[29]},
-	{0x3801, 0, &mqc_states[20], &mqc_states[28]},
-	{0x3801, 1, &mqc_states[21], &mqc_states[29]},
-	{0x3001, 0, &mqc_states[22], &mqc_states[34]},
-	{0x3001, 1, &mqc_states[23], &mqc_states[35]},
-	{0x2401, 0, &mqc_states[24], &mqc_states[36]},
-	{0x2401, 1, &mqc_states[25], &mqc_states[37]},
-	{0x1c01, 0, &mqc_states[26], &mqc_states[40]},
-	{0x1c01, 1, &mqc_states[27], &mqc_states[41]},
-	{0x1601, 0, &mqc_states[58], &mqc_states[42]},
-	{0x1601, 1, &mqc_states[59], &mqc_states[43]},
-	{0x5601, 0, &mqc_states[30], &mqc_states[29]},
-	{0x5601, 1, &mqc_states[31], &mqc_states[28]},
-	{0x5401, 0, &mqc_states[32], &mqc_states[28]},
-	{0x5401, 1, &mqc_states[33], &mqc_states[29]},
-	{0x5101, 0, &mqc_states[34], &mqc_states[30]},
-	{0x5101, 1, &mqc_states[35], &mqc_states[31]},
-	{0x4801, 0, &mqc_states[36], &mqc_states[32]},
-	{0x4801, 1, &mqc_states[37], &mqc_states[33]},
-	{0x3801, 0, &mqc_states[38], &mqc_states[34]},
-	{0x3801, 1, &mqc_states[39], &mqc_states[35]},
-	{0x3401, 0, &mqc_states[40], &mqc_states[36]},
-	{0x3401, 1, &mqc_states[41], &mqc_states[37]},
-	{0x3001, 0, &mqc_states[42], &mqc_states[38]},
-	{0x3001, 1, &mqc_states[43], &mqc_states[39]},
-	{0x2801, 0, &mqc_states[44], &mqc_states[38]},
-	{0x2801, 1, &mqc_states[45], &mqc_states[39]},
-	{0x2401, 0, &mqc_states[46], &mqc_states[40]},
-	{0x2401, 1, &mqc_states[47], &mqc_states[41]},
-	{0x2201, 0, &mqc_states[48], &mqc_states[42]},
-	{0x2201, 1, &mqc_states[49], &mqc_states[43]},
-	{0x1c01, 0, &mqc_states[50], &mqc_states[44]},
-	{0x1c01, 1, &mqc_states[51], &mqc_states[45]},
-	{0x1801, 0, &mqc_states[52], &mqc_states[46]},
-	{0x1801, 1, &mqc_states[53], &mqc_states[47]},
-	{0x1601, 0, &mqc_states[54], &mqc_states[48]},
-	{0x1601, 1, &mqc_states[55], &mqc_states[49]},
-	{0x1401, 0, &mqc_states[56], &mqc_states[50]},
-	{0x1401, 1, &mqc_states[57], &mqc_states[51]},
-	{0x1201, 0, &mqc_states[58], &mqc_states[52]},
-	{0x1201, 1, &mqc_states[59], &mqc_states[53]},
-	{0x1101, 0, &mqc_states[60], &mqc_states[54]},
-	{0x1101, 1, &mqc_states[61], &mqc_states[55]},
-	{0x0ac1, 0, &mqc_states[62], &mqc_states[56]},
-	{0x0ac1, 1, &mqc_states[63], &mqc_states[57]},
-	{0x09c1, 0, &mqc_states[64], &mqc_states[58]},
-	{0x09c1, 1, &mqc_states[65], &mqc_states[59]},
-	{0x08a1, 0, &mqc_states[66], &mqc_states[60]},
-	{0x08a1, 1, &mqc_states[67], &mqc_states[61]},
-	{0x0521, 0, &mqc_states[68], &mqc_states[62]},
-	{0x0521, 1, &mqc_states[69], &mqc_states[63]},
-	{0x0441, 0, &mqc_states[70], &mqc_states[64]},
-	{0x0441, 1, &mqc_states[71], &mqc_states[65]},
-	{0x02a1, 0, &mqc_states[72], &mqc_states[66]},
-	{0x02a1, 1, &mqc_states[73], &mqc_states[67]},
-	{0x0221, 0, &mqc_states[74], &mqc_states[68]},
-	{0x0221, 1, &mqc_states[75], &mqc_states[69]},
-	{0x0141, 0, &mqc_states[76], &mqc_states[70]},
-	{0x0141, 1, &mqc_states[77], &mqc_states[71]},
-	{0x0111, 0, &mqc_states[78], &mqc_states[72]},
-	{0x0111, 1, &mqc_states[79], &mqc_states[73]},
-	{0x0085, 0, &mqc_states[80], &mqc_states[74]},
-	{0x0085, 1, &mqc_states[81], &mqc_states[75]},
-	{0x0049, 0, &mqc_states[82], &mqc_states[76]},
-	{0x0049, 1, &mqc_states[83], &mqc_states[77]},
-	{0x0025, 0, &mqc_states[84], &mqc_states[78]},
-	{0x0025, 1, &mqc_states[85], &mqc_states[79]},
-	{0x0015, 0, &mqc_states[86], &mqc_states[80]},
-	{0x0015, 1, &mqc_states[87], &mqc_states[81]},
-	{0x0009, 0, &mqc_states[88], &mqc_states[82]},
-	{0x0009, 1, &mqc_states[89], &mqc_states[83]},
-	{0x0005, 0, &mqc_states[90], &mqc_states[84]},
-	{0x0005, 1, &mqc_states[91], &mqc_states[85]},
-	{0x0001, 0, &mqc_states[90], &mqc_states[86]},
-	{0x0001, 1, &mqc_states[91], &mqc_states[87]},
-	{0x5601, 0, &mqc_states[92], &mqc_states[92]},
-	{0x5601, 1, &mqc_states[93], &mqc_states[93]},
-};
-
-#define MQC_NUMCTXS 32
-
-unsigned int mqc_c;
-unsigned int mqc_a;
-unsigned int mqc_ct;
-unsigned char *mqc_bp;
-unsigned char *mqc_start;
-unsigned char *mqc_end;
-mqc_state_t *mqc_ctxs[MQC_NUMCTXS];
-mqc_state_t **mqc_curctx;
-
-/* <summary> */
-/* Return the number of bytes already encoded. */
-/* </summary> */
-int mqc_numbytes()
-{
-	return mqc_bp - mqc_start;
-}
-
-/* <summary> */
-/* Output a byte, doing bit-stuffing if necessary. */
-/* After a 0xff byte, the next byte must be smaller than 0x90 */
-/* </summary> */
-void mqc_byteout()
-{
-	if (*mqc_bp == 0xff) {
-		mqc_bp++;
-		*mqc_bp = mqc_c >> 20;
-		mqc_c &= 0xfffff;
-		mqc_ct = 7;
-	} else {
-		if ((mqc_c & 0x8000000) == 0) {	/* ((mqc_c&0x8000000)==0) CHANGE */
-			mqc_bp++;
-			*mqc_bp = mqc_c >> 19;
-			mqc_c &= 0x7ffff;
-			mqc_ct = 8;
-		} else {
-			(*mqc_bp)++;
-			if (*mqc_bp == 0xff) {
-				mqc_c &= 0x7ffffff;
-				mqc_bp++;
-				*mqc_bp = mqc_c >> 20;
-				mqc_c &= 0xfffff;
-				mqc_ct = 7;
-			} else {
-				mqc_bp++;
-				*mqc_bp = mqc_c >> 19;
-				mqc_c &= 0x7ffff;
-				mqc_ct = 8;
-			}
-		}
-	}
-}
-
-/* <summary> */
-/* Renormalize mqc_a and mqc_c while encoding, so that mqc_a stays between 0x8000 and 0x10000 */
-/* </summary> */
-void mqc_renorme()
-{
-	do {
-		mqc_a <<= 1;
-		mqc_c <<= 1;
-		mqc_ct--;
-		if (mqc_ct == 0) {
-			mqc_byteout();
-		}
-	} while ((mqc_a & 0x8000) == 0);
-}
-
-/* <summary> */
-/* Encode the most probable symbol. */
-/* </summary> */
-void mqc_codemps()
-{
-	mqc_a -= (*mqc_curctx)->qeval;
-	if ((mqc_a & 0x8000) == 0) {
-		if (mqc_a < (*mqc_curctx)->qeval) {
-			mqc_a = (*mqc_curctx)->qeval;
-		} else {
-			mqc_c += (*mqc_curctx)->qeval;
-		}
-		*mqc_curctx = (*mqc_curctx)->nmps;
-		mqc_renorme();
-	} else {
-		mqc_c += (*mqc_curctx)->qeval;
-	}
-}
-
-/* <summary> */
-/* Encode the most least symbol. */
-/* </summary> */
-void mqc_codelps()
-{
-	mqc_a -= (*mqc_curctx)->qeval;
-	if (mqc_a < (*mqc_curctx)->qeval) {
-		mqc_c += (*mqc_curctx)->qeval;
-	} else {
-		mqc_a = (*mqc_curctx)->qeval;
-	}
-	*mqc_curctx = (*mqc_curctx)->nlps;
-	mqc_renorme();
-}
-
-/* <summary> */
-/* Initialize encoder. */
-/* </summary> */
-/* <param name="bp">Output buffer.</param> */
-void mqc_init_enc(unsigned char *bp)
-{
-	mqc_setcurctx(0);
-	mqc_a = 0x8000;
-	mqc_c = 0;
-	mqc_bp = bp - 1;
-	mqc_ct = 12;
-	if (*mqc_bp == 0xff) {
-		mqc_ct = 13;
-	}
-	mqc_start = bp;
-}
-
-/* <summary> */
-/* Set current context. */
-/* </summary> */
-/* <param name="ctxno">Context number.</param> */
-void mqc_setcurctx(int ctxno)
-{
-	mqc_curctx = &mqc_ctxs[ctxno];
-}
-
-/* <summary> */
-/* Encode a symbol using the MQ-coder. */
-/* </summary> */
-/* <param name="d"> The symbol to be encoded (0 or 1).</param> */
-void mqc_encode(int d)
-{
-	if ((*mqc_curctx)->mps == d) {
-		mqc_codemps();
-	} else {
-		mqc_codelps();
-	}
-}
-
-/* <summary> */
-/* Fill mqc_c with 1's for flushing */
-/* </summary> */
-void mqc_setbits()
-{
-	unsigned int tempc = mqc_c + mqc_a;
-	mqc_c |= 0xffff;
-	if (mqc_c >= tempc) {
-		mqc_c -= 0x8000;
-	}
-}
-
-/* <summary> */
-/* Flush encoded data. */
-/* </summary> */
-void mqc_flush()
-{
-	mqc_setbits();
-	mqc_c <<= mqc_ct;
-	mqc_byteout();
-	mqc_c <<= mqc_ct;
-	mqc_byteout();
-
-	if (*mqc_bp != 0xff) {
-		mqc_bp++;
-	}
-}
-
-/* <summary> */
-/* not fully implemented and tested !! */
-/* BYPASS mode switch, initialization operation */
-/* JPEG 2000 p 505 */
-/* </summary> */
-void mqc_bypass_init_enc()
-{
-	mqc_c = 0;
-	mqc_ct = 8;
-	/*if (*mqc_bp == 0xff) {
-	  mqc_ct = 7;
-	  }*/
-}
-
-/* <summary> */
-/* not fully implemented and tested !! */
-/* BYPASS mode switch, coding operation */
-/* JPEG 2000 p 505 */
-/* </summary> */
-void mqc_bypass_enc(int d)
-{
-	mqc_ct--;
-	mqc_c = mqc_c + (d << mqc_ct);
-	if (mqc_ct == 0)
-	  {
-	    mqc_bp++;
-	    *mqc_bp = mqc_c;
-	    mqc_ct = 8;
-	    if (*mqc_bp == 0xff) {
-	      mqc_ct = 7;
-	    }
-	    mqc_c = 0;
-	  }
-}
-
-/* <summary> */
-/* not fully implemented and tested !! */
-/* BYPASS mode switch, flush operation */
-/* </summary> */
-int mqc_bypass_flush_enc()
-{
-	unsigned char bit_padding;
-
-	bit_padding = 0;
-
-	if (mqc_ct != 0) {
-		while (mqc_ct > 0) {
-			mqc_ct--;
-			mqc_c += bit_padding << mqc_ct;
-			bit_padding = (bit_padding + 1) & 0x01;
-		}
-		mqc_bp++;
-		*mqc_bp = mqc_c;
-		mqc_ct = 8;
-		mqc_c = 0;
-	}
-
-	return 1;
-}
-
-/* <summary> */
-/* RESET mode switch */
-/* </summary> */
-void mqc_reset_enc()
-{
-	mqc_resetstates();
-	mqc_setstate(18, 0, 46);
-	mqc_setstate(0, 0, 3);
-	mqc_setstate(1, 0, 4);
-}
-
-/* <summary> */
-/* mode switch RESTART (TERMALL) */
-/* </summary> */
-int mqc_restart_enc()
-{
-	int correction = 1;
-
-	/* <flush part> */
-	int n = 27 - 15 - mqc_ct;
-	mqc_c <<= mqc_ct;
-	while (n > 0) {
-		mqc_byteout();
-		n -= mqc_ct;
-		mqc_c <<= mqc_ct;
-	}
-	mqc_byteout();
-
-	return correction;
-}
-
-/* <summary> */
-/* mode switch RESTART (TERMALL) reinitialisation */
-/* </summary> */
-void mqc_restart_init_enc()
-{
-	/* <Re-init part> */
-        mqc_setcurctx(0);
-	mqc_a = 0x8000;
-	mqc_c = 0;
-	mqc_ct = 12;
-	mqc_bp--;
-	if (*mqc_bp == 0xff) {
-		mqc_ct = 13;
-	}
-}
-
-
-/* <summary> */
-/* ERTERM mode switch  */
-/* </summary> */
-void mqc_erterm_enc()
-{
-	int k = 11 - mqc_ct + 1;
-
-	while (k > 0) {
-		mqc_c <<= mqc_ct;
-		mqc_ct = 0;
-		mqc_byteout();
-		k -= mqc_ct;
-	}
-
-	if (*mqc_bp != 0xff) {
-		mqc_byteout();
-	}
-}
-
-/* <summary> */
-/* SEGMARK mode switch (SEGSYM) */
-/* </summary> */
-void mqc_segmark_enc()
-{
-	int i;
-	mqc_setcurctx(18);
-
-	for (i = 1; i < 5; i++) {
-		mqc_encode(i % 2);
-	}
-}
-
-/* <summary> */
-/* </summary> */
-int mqc_mpsexchange()
-{
-	int d;
-	if (mqc_a < (*mqc_curctx)->qeval) {
-		d = 1 - (*mqc_curctx)->mps;
-		*mqc_curctx = (*mqc_curctx)->nlps;
-	} else {
-		d = (*mqc_curctx)->mps;
-		*mqc_curctx = (*mqc_curctx)->nmps;
-	}
-	return d;
-}
-
-/* <summary> */
-/* </summary> */
-int mqc_lpsexchange()
-{
-	int d;
-	if (mqc_a < (*mqc_curctx)->qeval) {
-		mqc_a = (*mqc_curctx)->qeval;
-		d = (*mqc_curctx)->mps;
-		*mqc_curctx = (*mqc_curctx)->nmps;
-	} else {
-		mqc_a = (*mqc_curctx)->qeval;
-		d = 1 - (*mqc_curctx)->mps;
-		*mqc_curctx = (*mqc_curctx)->nlps;
-	}
-	return d;
-}
-
-/* <summary> */
-/* Input a byte. */
-/* </summary> */
-void mqc_bytein()
-{
-	if (mqc_bp != mqc_end) {
-		unsigned int c;
-		if (mqc_bp + 1 != mqc_end) {
-			c = *(mqc_bp + 1);
-		} else {
-			c = 0xff;
-		}
-		if (*mqc_bp == 0xff) {
-			if (c > 0x8f) {
-				mqc_c += 0xff00;
-				mqc_ct = 8;
-			} else {
-				mqc_bp++;
-				mqc_c += c << 9;
-				mqc_ct = 7;
-			}
-		} else {
-			mqc_bp++;
-			mqc_c += c << 8;
-			mqc_ct = 8;
-		}
-	} else {
-		mqc_c += 0xff00;
-		mqc_ct = 8;
-	}
-}
-
-/* <summary> */
-/* Renormalize mqc_a and mqc_c while decoding. */
-/* </summary> */
-void mqc_renormd()
-{
-	do {
-		if (mqc_ct == 0) {
-			mqc_bytein();
-		}
-		mqc_a <<= 1;
-		mqc_c <<= 1;
-		mqc_ct--;
-	} while (mqc_a < 0x8000);
-}
-
-/* <summary> */
-/* Initialize decoder. */
-/* </summary> */
-void mqc_init_dec(unsigned char *bp, int len)
-{
-	mqc_setcurctx(0);
-	mqc_start = bp;
-	mqc_end = bp + len;
-	mqc_bp = bp;
-	mqc_c = *mqc_bp << 16;
-	mqc_bytein();
-	mqc_c <<= 7;
-	mqc_ct -= 7;
-	mqc_a = 0x8000;
-}
-
-/* <summary> */
-/* Decode a symbol. */
-/* </summary> */
-int mqc_decode()
-{
-	int d;
-	mqc_a -= (*mqc_curctx)->qeval;
-	if ((mqc_c >> 16) < (*mqc_curctx)->qeval) {
-		d = mqc_lpsexchange();
-		mqc_renormd();
-	} else {
-		mqc_c -= (*mqc_curctx)->qeval << 16;
-		if ((mqc_a & 0x8000) == 0) {
-			d = mqc_mpsexchange();
-			mqc_renormd();
-		} else {
-			d = (*mqc_curctx)->mps;
-		}
-	}
-	return d;
-}
-
-/* <summary> */
-/* Reset states of all contexts. */
-/* </summary> */
-void mqc_resetstates()
-{
-	int i;
-	for (i = 0; i < MQC_NUMCTXS; i++) {
-		mqc_ctxs[i] = mqc_states;
-	}
-}
-
-/* <summary> */
-/* Set the state for a context. */
-/* </summary> */
-/* <param name="ctxno">Context number</param> */
-/* <param name="msb">Most significant bit</param> */
-/* <param name="prob">Index to the probability of symbols</param> */
-void mqc_setstate(int ctxno, int msb, int prob)
-{
-	mqc_ctxs[ctxno] = &mqc_states[msb + (prob << 1)];
-}
diff --git a/libopenjpeg/mqc.h b/libopenjpeg/mqc.h
deleted file mode 100644
index ea01d80..0000000
--- a/libopenjpeg/mqc.h
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * Copyright (c) 2002-2003, Yannick Verschueren
- * Copyright (c) 2002-2003,  Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 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 __MQC_H
-#define __MQC_H
-
-/*
- * Return the number of bytes written/read since initialisation
- */
-int mqc_numbytes();
-
-/*
- * Reset the states of all the context of the coder/decoder
- * (each context is set to a state where 0 and 1 are more or less equiprobable)
- */
-void mqc_resetstates();
-
-/*
- * Set the state of a particular context
- * ctxno: number that identifies the context
- * msb: the MSB of the new state of the context
- * prob: number that identifies the probability of the symbols for the new state of the context
- */
-void mqc_setstate(int ctxno, int msb, int prob);
-
-/*
- * Initialize the encoder
- * bp: pointer to the start of the buffer where the bytes will be written
- */
-void mqc_init_enc(unsigned char *bp);
-
-/*
- * Set the current context used for coding/decoding
- * ctxno: number that identifies the context
- */
-void mqc_setcurctx(int ctxno);
-
-/*
- * Encode a bit
- * d: bit to encode (0 or 1)
- */
-void mqc_encode(int d);
-
-/*
- * Flush the encoder, so that all remaining data is written
- */
-void mqc_flush();
-
-/*
- * BYPASS mode switch
- */
-void mqc_bypass_init_enc();
-
-/*
- * BYPASS mode switch
- */
-void mqc_bypass_enc(int d);
-
-/*
- * BYPASS mode switch
- */
-int mqc_bypass_flush_enc();
-
-/*
- * RESET mode switch
- */
-void mqc_reset_enc();
-
-/*
- * RESTART mode switch (TERMALL)
- */
-int mqc_restart_enc();
-
-/*
- * RESTART mode switch (TERMALL)
- */
-void mqc_restart_init_enc();
-
-/*
- * ERTERM mode switch (PTERM)
- */
-void mqc_erterm_enc();
-
-/*
- * SEGMARK mode switch (SEGSYM)
- */
-void mqc_segmark_enc();
-
-
-/*
- * Initialize the decoder
- * bp: pointer to the start of the buffer from which the bytes will be read
- * len: length of the input buffer
- */
-void mqc_init_dec(unsigned char *bp, int len);
-
-/*
- * Decode a bit (returns 0 or 1)
- */
-int mqc_decode();
-
-#endif
diff --git a/libopenjpeg/openjpeg.h b/libopenjpeg/openjpeg.h
deleted file mode 100644
index ad49eba..0000000
--- a/libopenjpeg/openjpeg.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * Copyright (c) 2003, Yannick Verschueren
- * Copyright (c) 2003,  Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 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
-
-#include <j2k.h>
-#include <tcd.h>
-
-#include <bio.h>
-#include <cio.h>
-#include <dwt.h>
-#include <fix.h>
-#include <int.h>
-#include <mct.h>
-#include <mqc.h>
-#include <pi.h>
-#include <raw.h>
-#include <t1.h>
-#include <t2.h>
-#include <tgt.h>
-
-#endif
diff --git a/libopenjpeg/pi.c b/libopenjpeg/pi.c
deleted file mode 100644
index 42bfab2..0000000
--- a/libopenjpeg/pi.c
+++ /dev/null
@@ -1,442 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * Copyright (c) 2003-2004, Yannick Verschueren
- * Copyright (c) 2003-2004, Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 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 "pi.h"
-#include "int.h"
-#include <stdlib.h>
-#include <stdio.h>
-
-/* <summary>
- * Create a packet iterator.
- * </summary> */
-pi_iterator_t *pi_create(j2k_image_t * img, j2k_cp_t * cp, int tileno)
-{
-	int p, q, i;
-	int compno, resno, pino;
-	int maxres = 0;
-	pi_iterator_t *pi;
-	j2k_tcp_t *tcp;
-	j2k_tccp_t *tccp;
-
-	tcp = &cp->tcps[tileno];
-	pi = (pi_iterator_t *) malloc((tcp->numpocs + 1) * sizeof(pi_iterator_t));
-
-	for (pino = 0; pino < tcp->numpocs + 1; pino++) {	/* change */
-		p = tileno % cp->tw;
-		q = tileno / cp->tw;
-
-		pi[pino].tx0 = int_max(cp->tx0 + p * cp->tdx, img->x0);
-		pi[pino].ty0 = int_max(cp->ty0 + q * cp->tdy, img->y0);
-		pi[pino].tx1 = int_min(cp->tx0 + (p + 1) * cp->tdx, img->x1);
-		pi[pino].ty1 = int_min(cp->ty0 + (q + 1) * cp->tdy, img->y1);
-		pi[pino].numcomps = img->numcomps;
-		pi[pino].comps = (pi_comp_t *) malloc(img->numcomps * sizeof(pi_comp_t));
-
-		for (compno = 0; compno < pi->numcomps; compno++) {
-			int tcx0, tcy0, tcx1, tcy1;
-			pi_comp_t *comp = &pi[pino].comps[compno];
-			tccp = &tcp->tccps[compno];
-			comp->dx = img->comps[compno].dx;
-			comp->dy = img->comps[compno].dy;
-			comp->numresolutions = tccp->numresolutions;
-			comp->resolutions = (pi_resolution_t *) malloc(comp->numresolutions * sizeof(pi_resolution_t));
-			tcx0 = int_ceildiv(pi->tx0, comp->dx);
-			tcy0 = int_ceildiv(pi->ty0, comp->dy);
-			tcx1 = int_ceildiv(pi->tx1, comp->dx);
-			tcy1 = int_ceildiv(pi->ty1, comp->dy);
-			if (comp->numresolutions > maxres) {
-				maxres = comp->numresolutions;
-			}
-			for (resno = 0; resno < comp->numresolutions; resno++) {
-				int levelno;
-				int rx0, ry0, rx1, ry1;
-				int px0, py0, px1, py1;
-				pi_resolution_t *res = &comp->resolutions[resno];
-				if (tccp->csty & J2K_CCP_CSTY_PRT) {
-					res->pdx = tccp->prcw[resno];
-					res->pdy = tccp->prch[resno];
-				} else {
-					res->pdx = 15;
-					res->pdy = 15;
-				}
-				levelno = comp->numresolutions - 1 - resno;
-				rx0 = int_ceildivpow2(tcx0, levelno);
-				ry0 = int_ceildivpow2(tcy0, levelno);
-				rx1 = int_ceildivpow2(tcx1, levelno);
-				ry1 = int_ceildivpow2(tcy1, levelno);
-				px0 = int_floordivpow2(rx0, res->pdx) << res->pdx;
-				py0 = int_floordivpow2(ry0, res->pdy) << res->pdy;
-				px1 = int_ceildivpow2(rx1, res->pdx) << res->pdx;
-				py1 = int_ceildivpow2(ry1, res->pdy) << res->pdy;
-				res->pw = (px1 - px0) >> res->pdx;
-				res->ph = (py1 - py0) >> res->pdy;
-			}
-		}
-		
-		tccp = &tcp->tccps[0];
-		pi[pino].step_p=1;
-		pi[pino].step_c=100*pi[pino].step_p;
-		pi[pino].step_r=img->numcomps*pi[pino].step_c;
-		pi[pino].step_l=maxres*pi[pino].step_r;
-
-		if (pino==0)
-		  {  
-		    pi[pino].include = (short int*)malloc(img->numcomps*maxres*tcp->numlayers*100*sizeof(short int));
-		    for (i=0 ; i<img->numcomps*maxres*tcp->numlayers*100; i++)
-		      pi[pino].include[i]=0;
-		  }
-		/* pi[pino].include=(short int*)calloc(img->numcomps*maxres*tcp->numlayers*1000,sizeof(short int));*/
-		else
-		  pi[pino].include=pi[pino-1].include;
-
-		if (tcp->POC == 0) {
-			pi[pino].first = 1;
-			pi[pino].poc.resno0 = 0;
-			pi[pino].poc.compno0 = 0;
-			pi[pino].poc.layno1 = tcp->numlayers;
-			pi[pino].poc.resno1 = maxres;
-			pi[pino].poc.compno1 = img->numcomps;
-			pi[pino].poc.prg = tcp->prg;
-		} else {
-			pi[pino].first = 1;
-			pi[pino].poc.resno0 = tcp->pocs[pino].resno0;
-			pi[pino].poc.compno0 = tcp->pocs[pino].compno0;
-			pi[pino].poc.layno1 = tcp->pocs[pino].layno1;
-			pi[pino].poc.resno1 = tcp->pocs[pino].resno1;
-			pi[pino].poc.compno1 = tcp->pocs[pino].compno1;
-			pi[pino].poc.prg = tcp->pocs[pino].prg;
-		}
-	}
-	return pi;
-}
-
-/* <summary>
- * Get next packet in layer-resolution-component-precinct order.
- * 
- * pi: packet iterator to modify
- * </summary> */
-int pi_next_lrcp(pi_iterator_t * pi)
-{
-	pi_comp_t *comp;
-	pi_resolution_t *res;
-
-	if (!pi->first) {
-		comp = &pi->comps[pi->compno];
-		res = &comp->resolutions[pi->resno];
-		goto skip;
-	} else {
-		pi->first = 0;
-	}
-	for (pi->layno = 0; pi->layno < pi->poc.layno1; pi->layno++) {
-	  for (pi->resno = pi->poc.resno0; pi->resno < pi->poc.resno1; pi->resno++) {
-	    for (pi->compno = pi->poc.compno0; pi->compno < pi->poc.compno1; pi->compno++) {
-	      comp = &pi->comps[pi->compno];
-	      if (pi->resno >= comp->numresolutions) {
-		continue;
-	      }
-	      res = &comp->resolutions[pi->resno];
-	      for (pi->precno = 0; pi->precno < res->pw * res->ph; pi->precno++) 
-		{
-		  if (!pi->include[pi->layno*pi->step_l+pi->resno*pi->step_r+pi->compno*pi->step_c+pi->precno*pi->step_p]){
-		    pi->include[pi->layno*pi->step_l+pi->resno*pi->step_r+pi->compno*pi->step_c+pi->precno*pi->step_p] = 1;
-		    return 1;
-		  }
-		skip:;
-		}
-	    }
-	  }
-	}
-	return 0;
-}
-
-/* <summary>
- * Get next packet in resolution-layer-component-precinct order.
- *
- * pi: packet iterator to modify
- * </summary> */
-int pi_next_rlcp(pi_iterator_t * pi)
-{
-	pi_comp_t *comp;
-	pi_resolution_t *res;
-	if (!pi->first) {
-		comp = &pi->comps[pi->compno];
-		res = &comp->resolutions[pi->resno];
-		goto skip;
-	} else {
-		pi->first = 0;
-	}
-	for (pi->resno = pi->poc.resno0; pi->resno < pi->poc.resno1; pi->resno++) {
-		for (pi->layno = 0; pi->layno < pi->poc.layno1; pi->layno++) {
-			for (pi->compno = pi->poc.compno0; pi->compno < pi->poc.compno1;
-			     pi->compno++) {
-			  comp = &pi->comps[pi->compno];
-			  if (pi->resno >= comp->numresolutions) {
-			    continue;
-			  }
-			  res = &comp->resolutions[pi->resno];
-			  for (pi->precno = 0; pi->precno < res->pw * res->ph; pi->precno++) {
-			    if (!pi->include[pi->layno*pi->step_l+pi->resno*pi->step_r+pi->compno*pi->step_c+pi->precno*pi->step_p]){
-			      pi->include[pi->layno*pi->step_l+pi->resno*pi->step_r+pi->compno*pi->step_c+pi->precno*pi->step_p] = 1;
-			      return 1;
-			    }
-			  skip:;
-			  }
-			}
-		}
-	}
-	return 0;
-}
-
-/* <summary>
- * Get next packet in resolution-precinct-component-layer order.
- *
- * pi: packet iterator to modify
- * </summary> */
-int pi_next_rpcl(pi_iterator_t * pi)
-{
-	pi_comp_t *comp;
-	pi_resolution_t *res;
-	if (!pi->first) {
-		goto skip;
-	} else {
-		int compno, resno;
-		pi->first = 0;
-		pi->dx = 0;
-		pi->dy = 0;
-		for (compno = 0; compno < pi->numcomps; compno++) {
-			comp = &pi->comps[compno];
-			for (resno = 0; resno < comp->numresolutions; resno++) {
-				int dx, dy;
-				res = &comp->resolutions[resno];
-				dx = comp->dx * (1 << (res->pdx + comp->numresolutions - 1 - resno));
-				dy = comp->dy * (1 << (res->pdy + comp->numresolutions - 1 - resno));
-				pi->dx = !pi->dx ? dx : int_min(pi->dx, dx);
-				pi->dy = !pi->dy ? dy : int_min(pi->dy, dy);
-			}
-		}
-	}
-	for (pi->resno = pi->poc.resno0; pi->resno < pi->poc.resno1; pi->resno++) {
-		for (pi->y = pi->ty0; pi->y < pi->ty1; pi->y += pi->dy - (pi->y % pi->dy)) {
-			for (pi->x = pi->tx0; pi->x < pi->tx1; pi->x += pi->dx - (pi->x % pi->dx)) {
-				for (pi->compno = pi->poc.compno0; pi->compno < pi->poc.compno1; pi->compno++) {
-					int levelno;
-					int trx0, try0;
-					int rpx, rpy;
-					int prci, prcj;
-					comp = &pi->comps[pi->compno];
-					if (pi->resno >= comp->numresolutions) {
-						continue;
-					}
-					res = &comp->resolutions[pi->resno];
-					levelno = comp->numresolutions - 1 - pi->resno;
-					trx0 = int_ceildiv(pi->tx0, comp->dx << levelno);
-					try0 = int_ceildiv(pi->ty0, comp->dy << levelno);
-					rpx = res->pdx + levelno;
-					rpy = res->pdy + levelno;
-					if (!(pi->x % (comp->dx << rpx) == 0 || (pi->x == pi->tx0 && (trx0 << levelno) % (1 << rpx)))) {
-						continue;
-					}
-					if (!(pi->y % (comp->dy << rpy) == 0 || (pi->y == pi->ty0 && (try0 << levelno) % (1 << rpx)))) {
-						continue;
-					}
-					prci = int_floordivpow2(int_ceildiv(pi->x, comp->dx << levelno),
-								res->pdx) - int_floordivpow2(trx0, res->pdx);
-					prcj = int_floordivpow2(int_ceildiv(pi->y, comp->dy << levelno),
-								res->pdy) - int_floordivpow2(try0, res->pdy);
-					pi->precno = prci + prcj * res->pw;
-					for (pi->layno = 0; pi->layno < pi->poc.layno1; pi->layno++) {
-					  if (!pi->include[pi->layno*pi->step_l+pi->resno*pi->step_r+pi->compno*pi->step_c+pi->precno*pi->step_p]){
-					    pi->include[pi->layno*pi->step_l+pi->resno*pi->step_r+pi->compno*pi->step_c+pi->precno*pi->step_p] = 1;			
-					    return 1;
-						}
-					skip:;
-					}
-				}
-			}
-		}
-	}
-	return 0;
-}
-
-/* <summary>
- * Get next packet in precinct-component-resolution-layer order.
- *
- * pi: packet iterator to modify
- * </summary> */
-int pi_next_pcrl(pi_iterator_t * pi)
-{
-	pi_comp_t *comp;
-	pi_resolution_t *res;
-	if (!pi->first) {
-		comp = &pi->comps[pi->compno];
-		goto skip;
-	} else {
-		int compno, resno;
-		pi->first = 0;
-		pi->dx = 0;
-		pi->dy = 0;
-		for (compno = 0; compno < pi->numcomps; compno++) {
-			comp = &pi->comps[compno];
-			for (resno = 0; resno < comp->numresolutions; resno++) {
-				int dx, dy;
-				res = &comp->resolutions[resno];
-				dx = comp->dx * (1 << (res->pdx + comp->numresolutions - 1 - resno));
-				dy = comp->dy * (1 << (res->pdy + comp->numresolutions - 1 - resno));
-				pi->dx = !pi->dx ? dx : int_min(pi->dx, dx);
-				pi->dy = !pi->dy ? dy : int_min(pi->dy, dy);
-			}
-		}
-	}
-	for (pi->y = pi->ty0; pi->y < pi->ty1; pi->y += pi->dy - (pi->y % pi->dy)) {
-		for (pi->x = pi->tx0; pi->x < pi->tx1; pi->x += pi->dx - (pi->x % pi->dx)) {
-			for (pi->compno = pi->poc.compno0; pi->compno < pi->poc.compno1; pi->compno++) {
-				comp = &pi->comps[pi->compno];
-				for (pi->resno = pi->poc.resno0; pi->resno < int_min(pi->poc.resno1, comp->numresolutions); pi->resno++) {
-					int levelno;
-					int trx0, try0;
-					int rpx, rpy;
-					int prci, prcj;
-					res = &comp->resolutions[pi->resno];
-					levelno = comp->numresolutions - 1 - pi->resno;
-					trx0 = int_ceildiv(pi->tx0, comp->dx << levelno);
-					try0 = int_ceildiv(pi->ty0, comp->dy << levelno);
-					rpx = res->pdx + levelno;
-					rpy = res->pdy + levelno;
-					if (!(pi->x % (comp->dx << rpx) == 0 || (pi->x == pi->tx0 && (trx0 << levelno) % (1 << rpx)))) {
-						continue;
-					}
-					if (!(pi->y % (comp->dy << rpy) == 0 || (pi->y == pi->ty0 && (try0 << levelno) % (1 << rpx)))) {
-						continue;
-					}
-					prci = int_floordivpow2(int_ceildiv(pi->x, comp->dx << levelno), res->pdx) - int_floordivpow2(trx0, res->pdx);
-					prcj = int_floordivpow2(int_ceildiv(pi->y, comp->dy << levelno), res->pdy) - int_floordivpow2(try0, res->pdy);
-					pi->precno = prci + prcj * res->pw;
-					for (pi->layno = 0; pi->layno < pi->poc.layno1; pi->layno++) {
-					  if (! pi->include[pi->layno*pi->step_l+pi->resno*pi->step_r+pi->compno*pi->step_c+pi->precno*pi->step_p]){
-					    pi->include[pi->layno*pi->step_l+pi->resno*pi->step_r+pi->compno*pi->step_c+pi->precno*pi->step_p] = 1;
-							return 1;
-						}
-					skip:;
-					}
-				}
-			}
-		}
-	}
-	return 0;
-}
-
-/* <summary>
- * Get next packet in component-precinct-resolution-layer order.
- *
- * pi: packet iterator to modify
- * </summary> */
-int pi_next_cprl(pi_iterator_t * pi)
-{
-	pi_comp_t *comp;
-	pi_resolution_t *res;
-	if (!pi->first) {
-		comp = &pi->comps[pi->compno];
-		goto skip;
-	} else {
-		pi->first = 0;
-	}
-	for (pi->compno = pi->poc.compno0; pi->compno < pi->poc.compno1;
-			 pi->compno++) {
-		int resno;
-		comp = &pi->comps[pi->compno];
-		pi->dx = 0;
-		pi->dy = 0;
-		for (resno = 0; resno < comp->numresolutions; resno++) {
-			int dx, dy;
-			res = &comp->resolutions[resno];
-			dx = comp->dx * (1 << (res->pdx + comp->numresolutions - 1 - resno));
-			dy = comp->dy * (1 << (res->pdy + comp->numresolutions - 1 - resno));
-			pi->dx = !pi->dx ? dx : int_min(pi->dx, dx);
-			pi->dy = !pi->dy ? dy : int_min(pi->dy, dy);
-		}
-		for (pi->y = pi->ty0; pi->y < pi->ty1;
-				 pi->y += pi->dy - (pi->y % pi->dy)) {
-			for (pi->x = pi->tx0; pi->x < pi->tx1;
-					 pi->x += pi->dx - (pi->x % pi->dx)) {
-				for (pi->resno = pi->poc.resno0;
-						 pi->resno < int_min(pi->poc.resno1, comp->numresolutions);
-						 pi->resno++) {
-					int levelno;
-					int trx0, try0;
-					int rpx, rpy;
-					int prci, prcj;
-					res = &comp->resolutions[pi->resno];
-					levelno = comp->numresolutions - 1 - pi->resno;
-					trx0 = int_ceildiv(pi->tx0, comp->dx << levelno);
-					try0 = int_ceildiv(pi->ty0, comp->dy << levelno);
-					rpx = res->pdx + levelno;
-					rpy = res->pdy + levelno;
-					if (!(pi->x % (comp->dx << rpx) == 0 || (pi->x == pi->tx0 && (trx0 << levelno) % (1 << rpx)))) {
-						continue;
-					}
-					if (!(pi->y % (comp->dy << rpy) == 0 || (pi->y == pi->ty0 && (try0 << levelno) % (1 << rpx)))) {
-						continue;
-					}
-					prci = int_floordivpow2(int_ceildiv(pi->x, comp->dx << levelno), res->pdx) - int_floordivpow2(trx0, res->pdx);
-					prcj = int_floordivpow2(int_ceildiv(pi->y, comp->dy << levelno), res->pdy) - int_floordivpow2(try0, res->pdy);
-					pi->precno = prci + prcj * res->pw;
-					for (pi->layno = 0; pi->layno < pi->poc.layno1; pi->layno++) {
-					  if (! pi->include[pi->layno*pi->step_l+pi->resno*pi->step_r+pi->compno*pi->step_c+pi->precno*pi->step_p]){
-					    pi->include[pi->layno*pi->step_l+pi->resno*pi->step_r+pi->compno*pi->step_c+pi->precno*pi->step_p] = 1;
-					    return 1;
-						}
-					skip:;
-					}
-				}
-			}
-		}
-	}
-	return 0;
-}
-
-/* <summary>
- * Get next packet.
-  *
-  * pi: packet iterator to modify
-  * </summary> */
-int pi_next(pi_iterator_t * pi)
-{
-	switch (pi->poc.prg) {
-	case 0:
-		return pi_next_lrcp(pi);
-	case 1:
-		return pi_next_rlcp(pi);
-	case 2:
-		return pi_next_rpcl(pi);
-	case 3:
-		return pi_next_pcrl(pi);
-	case 4:
-		return pi_next_cprl(pi);
-	}
-	return 0;
-}
diff --git a/libopenjpeg/pi.h b/libopenjpeg/pi.h
deleted file mode 100644
index f450304..0000000
--- a/libopenjpeg/pi.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * 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 __PI_H
-#define __PI_H
-
-#include "j2k.h"
-#include "tcd.h"
-
-typedef struct {
-	int pdx, pdy;
-	int pw, ph;
-} pi_resolution_t;
-
-typedef struct {
-	int dx, dy;
-	int numresolutions;
-	pi_resolution_t *resolutions;
-} pi_comp_t;
-
-typedef struct {
-        short int *include;                     /* precise if the packet has been already used (usefull for progression order change) */
-        int step_l, step_r, step_c, step_p;     /* different steps (layer, resolution, component, precinct) to localize the packet in the include vector */ 
-	int compno, resno, precno, layno;	/* component, resolution, precinct and layer that indentify the packet */
-        int first;                              /* 0 if the first packet */
-	j2k_poc_t poc;
-	int numcomps;
-	pi_comp_t *comps;
-	int tx0, ty0, tx1, ty1;
-	int x, y, dx, dy;
-} pi_iterator_t;				/* packet iterator */
-
-/*
- * Create a packet iterator
- * img: raw image for which the packets will be listed
- * cp: coding paremeters
- * tileno: number that identifies the tile for which to list the packets
- * return value: returns a packet iterator that points to the first packet of the tile
- */
-pi_iterator_t *pi_create(j2k_image_t * img, j2k_cp_t * cp, int tileno);
-
-/* 
- * Modify the packet iterator to point to the next packet
- * pi: packet iterator to modify
- * return value: returns 0 if pi pointed to the last packet or else returns 1 
- */
-int pi_next(pi_iterator_t * pi);
-
-#endif
diff --git a/libopenjpeg/raw.c b/libopenjpeg/raw.c
deleted file mode 100644
index 180a1de..0000000
--- a/libopenjpeg/raw.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright (c) 2002-2003, Antonin Descampe
- * 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 "raw.h"
-
-
-unsigned char raw_c;       /* temporary buffer where bits are coded or decoded */
-unsigned int raw_ct;       /* number of bits already read or free to write */
-unsigned int raw_lenmax;   /* maximum length to decode */
-unsigned int raw_len;      /* length decoded */
-unsigned char *raw_bp;     /* pointer to the current position in the buffer */
-unsigned char *raw_start;  /* pointer to the start of the buffer */
-unsigned char *raw_end;    /* pointer to the end of the buffer */
-
-/*
- * Return the number of bytes already encoded.
- */
-int raw_numbytes()
-{
-	return raw_bp - raw_start;
-}
-
-/*
- * Initialize raw-decoder.
- *
- * bp  : pointer to the start of the buffer from which the bytes will be read
- * len : length of the input buffer
- */
-void raw_init_dec(unsigned char *bp, int len)
-{
-	raw_start = bp;
-	raw_lenmax = len;
-	raw_len = 0;
-	raw_c = 0;
-	raw_ct = 0;
-}
-
-/*
- * Decode a symbol using raw-decoder. Cfr p.506 TAUBMAN
- */
-int raw_decode()
-{
-	int d;
-	if (raw_ct == 0) {
-		raw_ct = 8;
-		if (raw_len == raw_lenmax)
-			raw_c = 0xff;
-		else {
-			if (raw_c == 0xff)
-				raw_ct = 7;
-			raw_c = *(raw_start + raw_len);
-			raw_len++;
-		}
-	}
-	raw_ct--;
-	d = (raw_c >> raw_ct) & 0x01;
-	return d;
-}
diff --git a/libopenjpeg/raw.h b/libopenjpeg/raw.h
deleted file mode 100644
index 08b20bc..0000000
--- a/libopenjpeg/raw.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (c) 2002-2003, Antonin Descampe
- * Copyright (c) 2002-2003,  Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 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 __RAW_H
-#define __RAW_H
-
-/*
- * Return the number of bytes written/read since initialisation
- */
-int raw_numbytes();
-
-/*
- * Initialize the decoder
- * bp: pointer to the start of the buffer from which the bytes will be read
- * len: length of the input buffer
- */
-void raw_init_dec(unsigned char *bp, int len);
-
-/*
- * Decode a bit (returns 0 or 1)
- */
-int raw_decode();
-
-#endif
diff --git a/libopenjpeg/t1.c b/libopenjpeg/t1.c
deleted file mode 100644
index 9aa024e..0000000
--- a/libopenjpeg/t1.c
+++ /dev/null
@@ -1,984 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * Copyright (c) 2002-2003, Yannick Verschueren
- * Copyright (c) 2002-2003,  Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 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 "t1.h"
-#include "j2k.h"
-#include "mqc.h"
-#include "raw.h"								/* Antonin */
-#include "int.h"
-#include "mct.h"
-#include "dwt.h"
-#include "fix.h"
-#include <stdio.h>
-#include <math.h>
-#include <stdlib.h>
-
-#define T1_MAXCBLKW 1024
-#define T1_MAXCBLKH 1024
-
-#define T1_SIG_NE 0x0001
-#define T1_SIG_SE 0x0002
-#define T1_SIG_SW 0x0004
-#define T1_SIG_NW 0x0008
-#define T1_SIG_N 0x0010
-#define T1_SIG_E 0x0020
-#define T1_SIG_S 0x0040
-#define T1_SIG_W 0x0080
-#define T1_SIG_OTH (T1_SIG_N|T1_SIG_NE|T1_SIG_E|T1_SIG_SE|T1_SIG_S|T1_SIG_SW|T1_SIG_W|T1_SIG_NW)
-#define T1_SIG_PRIM (T1_SIG_N|T1_SIG_E|T1_SIG_S|T1_SIG_W)
-
-#define T1_SGN_N 0x0100
-#define T1_SGN_E 0x0200
-#define T1_SGN_S 0x0400
-#define T1_SGN_W 0x0800
-#define T1_SGN (T1_SGN_N|T1_SGN_E|T1_SGN_S|T1_SGN_W)
-
-#define T1_SIG 0x1000
-#define T1_REFINE 0x2000
-#define T1_VISIT 0x4000
-
-#define T1_NUMCTXS_AGG 1
-#define T1_NUMCTXS_ZC 9
-#define T1_NUMCTXS_MAG 3
-#define T1_NUMCTXS_SC 5
-#define T1_NUMCTXS_UNI 1
-
-#define T1_CTXNO_AGG 0
-#define T1_CTXNO_ZC (T1_CTXNO_AGG+T1_NUMCTXS_AGG)
-#define T1_CTXNO_MAG (T1_CTXNO_ZC+T1_NUMCTXS_ZC)
-#define T1_CTXNO_SC (T1_CTXNO_MAG+T1_NUMCTXS_MAG)
-#define T1_CTXNO_UNI (T1_CTXNO_SC+T1_NUMCTXS_SC)
-#define T1_NUMCTXS (T1_CTXNO_UNI+T1_NUMCTXS_UNI)
-
-#define T1_NMSEDEC_BITS 7
-#define T1_NMSEDEC_FRACBITS (T1_NMSEDEC_BITS-1)
-
-/* add TONY */
-#define T1_TYPE_MQ 0
-#define T1_TYPE_RAW 1
-/* dda */
-
-static int t1_lut_ctxno_zc[1024];
-static int t1_lut_ctxno_sc[256];
-static int t1_lut_ctxno_mag[4096];
-static int t1_lut_spb[256];
-static int t1_lut_nmsedec_sig[1 << T1_NMSEDEC_BITS];
-static int t1_lut_nmsedec_sig0[1 << T1_NMSEDEC_BITS];
-static int t1_lut_nmsedec_ref[1 << T1_NMSEDEC_BITS];
-static int t1_lut_nmsedec_ref0[1 << T1_NMSEDEC_BITS];
-
-static int t1_data[T1_MAXCBLKH][T1_MAXCBLKH];
-static int t1_flags[T1_MAXCBLKH + 2][T1_MAXCBLKH + 2];
-
-int t1_getctxno_zc(int f, int orient)
-{
-	return t1_lut_ctxno_zc[(orient << 8) | (f & T1_SIG_OTH)];
-}
-
-int t1_getctxno_sc(int f)
-{
-	return t1_lut_ctxno_sc[(f & (T1_SIG_PRIM | T1_SGN)) >> 4];
-}
-
-int t1_getctxno_mag(int f)
-{
-	return t1_lut_ctxno_mag[(f & T1_SIG_OTH) | (((f & T1_REFINE) != 0) << 11)];
-}
-
-int t1_getspb(int f)
-{
-	return t1_lut_spb[(f & (T1_SIG_PRIM | T1_SGN)) >> 4];
-}
-
-int t1_getnmsedec_sig(int x, int bitpos)
-{
-	if (bitpos > T1_NMSEDEC_FRACBITS)
-		return t1_lut_nmsedec_sig[(x >> (bitpos - T1_NMSEDEC_FRACBITS)) & ((1 << T1_NMSEDEC_BITS) - 1)];
-	else
-		return t1_lut_nmsedec_sig0[x & ((1 << T1_NMSEDEC_BITS) - 1)];
-}
-
-int t1_getnmsedec_ref(int x, int bitpos)
-{
-	if (bitpos > T1_NMSEDEC_FRACBITS)
-		return t1_lut_nmsedec_ref[(x >> (bitpos - T1_NMSEDEC_FRACBITS)) & ((1 << T1_NMSEDEC_BITS) - 1)];
-	else
-		return t1_lut_nmsedec_ref0[x & ((1 << T1_NMSEDEC_BITS) - 1)];
-}
-
-void t1_updateflags(int *fp, int s)
-{
-	int *np = fp - (T1_MAXCBLKW + 2);
-	int *sp = fp + (T1_MAXCBLKW + 2);
-	np[-1] |= T1_SIG_SE;
-	np[1] |= T1_SIG_SW;
-	sp[-1] |= T1_SIG_NE;
-	sp[1] |= T1_SIG_NW;
-	*np |= T1_SIG_S;
-	*sp |= T1_SIG_N;
-	fp[-1] |= T1_SIG_E;
-	fp[1] |= T1_SIG_W;
-	if (s) {
-		*np |= T1_SGN_S;
-		*sp |= T1_SGN_N;
-		fp[-1] |= T1_SGN_E;
-		fp[1] |= T1_SGN_W;
-	}
-}
-
-void t1_enc_sigpass_step(int *fp, int *dp, int orient, int bpno, int one, int *nmsedec, char type, int vsc)
-{
-	int v, flag;
-	flag = vsc ? ((*fp) & (~(T1_SIG_S | T1_SIG_SE | T1_SIG_SW | T1_SGN_S))) : (*fp);
-	if ((flag & T1_SIG_OTH) && !(flag & (T1_SIG | T1_VISIT))) {
-		v = int_abs(*dp) & one ? 1 : 0;
-		if (type == T1_TYPE_RAW) {	/* BYPASS/LAZY MODE */
-		        mqc_setcurctx(t1_getctxno_zc(flag, orient));	/* ESSAI */
-			mqc_bypass_enc(v);
-		} else {
-			mqc_setcurctx(t1_getctxno_zc(flag, orient));
-			mqc_encode(v);
-		}
-		if (v) {
-			v = *dp < 0 ? 1 : 0;
-			*nmsedec += t1_getnmsedec_sig(int_abs(*dp), bpno + T1_NMSEDEC_FRACBITS);
-			if (type == T1_TYPE_RAW) {	/* BYPASS/LAZY MODE */
-				mqc_setcurctx(t1_getctxno_sc(flag));	/* ESSAI */
-				mqc_bypass_enc(v);
-			} else {
-				mqc_setcurctx(t1_getctxno_sc(flag));
-				mqc_encode(v ^ t1_getspb(flag));
-			}
-			t1_updateflags(fp, v);
-			*fp |= T1_SIG;
-		}
-		*fp |= T1_VISIT;
-	}
-}
-
-void t1_dec_sigpass_step(int *fp, int *dp, int orient, int oneplushalf, char type, int vsc)
-{
-	int v, flag;
-	flag =
-		vsc ? ((*fp) & (~(T1_SIG_S | T1_SIG_SE | T1_SIG_SW | T1_SGN_S)))
-		: (*fp);
-	if ((flag & T1_SIG_OTH) && !(flag & (T1_SIG | T1_VISIT))) {
-		if (type == T1_TYPE_RAW) {
-			if (raw_decode()) {
-				v = raw_decode();				/* ESSAI */
-				*dp = v ? -oneplushalf : oneplushalf;
-				t1_updateflags(fp, v);
-				*fp |= T1_SIG;
-			}
-		} else {
-			mqc_setcurctx(t1_getctxno_zc(flag, orient));
-			if (mqc_decode()) {
-				mqc_setcurctx(t1_getctxno_sc(flag));
-				v = mqc_decode() ^ t1_getspb(flag);
-				*dp = v ? -oneplushalf : oneplushalf;
-				t1_updateflags(fp, v);
-				*fp |= T1_SIG;
-			}
-		}
-		*fp |= T1_VISIT;
-	}
-}		/* VSC and  BYPASS by Antonin */
-
-void t1_enc_sigpass(int w, int h, int bpno, int orient, int *nmsedec, char type, int cblksty)
-{
-	int i, j, k, one, vsc;
-	*nmsedec = 0;
-	one = 1 << (bpno + T1_NMSEDEC_FRACBITS);
-	for (k = 0; k < h; k += 4) {
-		for (i = 0; i < w; i++) {
-			for (j = k; j < k + 4 && j < h; j++) {
-				vsc = ((cblksty & J2K_CCP_CBLKSTY_VSC) && (j == k + 3 || j == h - 1)) ? 1 : 0;
-				t1_enc_sigpass_step(&t1_flags[1 + j][1 + i], &t1_data[j][i], orient, bpno, one, nmsedec, type, vsc);
-			}
-		}
-	}
-}
-
-void t1_dec_sigpass(int w, int h, int bpno, int orient, char type, int cblksty)
-{
-	int i, j, k, one, half, oneplushalf, vsc;
-	one = 1 << bpno;
-	half = one >> 1;
-	oneplushalf = one | half;
-	for (k = 0; k < h; k += 4) {
-	  for (i = 0; i < w; i++) {
-	    for (j = k; j < k + 4 && j < h; j++) {
-	      vsc = ((cblksty & J2K_CCP_CBLKSTY_VSC)
-		     && (j == k + 3 || j == h - 1)) ? 1 : 0;
-	      t1_dec_sigpass_step(&t1_flags[1 + j][1 + i], &t1_data[j][i], orient, oneplushalf, type, vsc);
-	    }
-	  }
-	}
-}		/* VSC and  BYPASS by Antonin */
-
-void t1_enc_refpass_step(int *fp, int *dp, int bpno, int one, int *nmsedec, char type, int vsc)
-{
-	int v, flag;
-	flag = vsc ? ((*fp) & (~(T1_SIG_S | T1_SIG_SE | T1_SIG_SW | T1_SGN_S)))	: (*fp);
-	if ((flag & (T1_SIG | T1_VISIT)) == T1_SIG) {
-		*nmsedec += t1_getnmsedec_ref(int_abs(*dp), bpno + T1_NMSEDEC_FRACBITS);
-		v = int_abs(*dp) & one ? 1 : 0;
-		if (type == T1_TYPE_RAW) {	/* BYPASS/LAZY MODE */
-		        mqc_setcurctx(t1_getctxno_mag(flag));  	/* ESSAI */
-			mqc_bypass_enc(v);
-		} else {
-			mqc_setcurctx(t1_getctxno_mag(flag));
-			mqc_encode(v);
-		}
-		*fp |= T1_REFINE;
-	}
-}
-
-void t1_dec_refpass_step(int *fp, int *dp, int poshalf, int neghalf, char type, int vsc)
-{
-	int v, t, flag;
-	flag = vsc ? ((*fp) & (~(T1_SIG_S | T1_SIG_SE | T1_SIG_SW | T1_SGN_S))) : (*fp);
-	if ((flag & (T1_SIG | T1_VISIT)) == T1_SIG) {
-		if (type == T1_TYPE_RAW) {
-			mqc_setcurctx(t1_getctxno_mag(flag));	/* ESSAI */
-			v = raw_decode();
-		} else {
-			mqc_setcurctx(t1_getctxno_mag(flag));
-			v = mqc_decode();
-		}
-		t = v ? poshalf : neghalf;
-		*dp += *dp < 0 ? -t : t;
-		*fp |= T1_REFINE;
-	}
-}	/* VSC and  BYPASS by Antonin  */
-
-void t1_enc_refpass(int w, int h, int bpno, int *nmsedec, char type, int cblksty)
-{
-	int i, j, k, one, vsc;
-	*nmsedec = 0;
-	one = 1 << (bpno + T1_NMSEDEC_FRACBITS);
-	for (k = 0; k < h; k += 4) {
-		for (i = 0; i < w; i++) {
-			for (j = k; j < k + 4 && j < h; j++) {
-				vsc = ((cblksty & J2K_CCP_CBLKSTY_VSC) && (j == k + 3 || j == h - 1)) ? 1 : 0;
-				t1_enc_refpass_step(&t1_flags[1 + j][1 + i], &t1_data[j][i], bpno, one, nmsedec, type, vsc);
-			}
-		}
-	}
-}
-
-void t1_dec_refpass(int w, int h, int bpno, char type, int cblksty)
-{
-	int i, j, k, one, poshalf, neghalf;
-	int vsc;
-	one = 1 << bpno;
-	poshalf = one >> 1;
-	neghalf = bpno > 0 ? -poshalf : -1;
-	for (k = 0; k < h; k += 4) {
-		for (i = 0; i < w; i++) {
-			for (j = k; j < k + 4 && j < h; j++) {
-				vsc = ((cblksty & J2K_CCP_CBLKSTY_VSC)  && (j == k + 3 || j == h - 1)) ? 1 : 0;
-				t1_dec_refpass_step(&t1_flags[1 + j][1 + i], &t1_data[j][i], poshalf, neghalf, type, vsc);
-			}
-		}
-	}
-}	/* VSC and  BYPASS by Antonin */
-
-void t1_enc_clnpass_step(int *fp, int *dp, int orient, int bpno, int one, int *nmsedec, int partial, int vsc)
-{
-	int v, flag;
-	flag = vsc ? ((*fp) & (~(T1_SIG_S | T1_SIG_SE | T1_SIG_SW | T1_SGN_S))) : (*fp);
-	if (partial)
-		goto label_partial;
-	if (!(*fp & (T1_SIG | T1_VISIT))) {
-		mqc_setcurctx(t1_getctxno_zc(flag, orient));
-		v = int_abs(*dp) & one ? 1 : 0;
-		mqc_encode(v);
-		if (v) {
-		label_partial:
-			*nmsedec += t1_getnmsedec_sig(int_abs(*dp), bpno + T1_NMSEDEC_FRACBITS);
-			mqc_setcurctx(t1_getctxno_sc(flag));
-			v = *dp < 0 ? 1 : 0;
-			mqc_encode(v ^ t1_getspb(flag));
-			t1_updateflags(fp, v);
-			*fp |= T1_SIG;
-		}
-	}
-	*fp &= ~T1_VISIT;
-}
-
-void t1_dec_clnpass_step(int *fp, int *dp, int orient, int oneplushalf, int partial, int vsc)
-{
-	int v, flag;
-	flag = vsc ? ((*fp) & (~(T1_SIG_S | T1_SIG_SE | T1_SIG_SW | T1_SGN_S))) : (*fp);
-	if (partial)
-		goto label_partial;
-	if (!(flag & (T1_SIG | T1_VISIT))) {
-		mqc_setcurctx(t1_getctxno_zc(flag, orient));
-		if (mqc_decode()) {
-		label_partial:
-			mqc_setcurctx(t1_getctxno_sc(flag));
-			v = mqc_decode() ^ t1_getspb(flag);
-			*dp = v ? -oneplushalf : oneplushalf;
-			t1_updateflags(fp, v);
-			*fp |= T1_SIG;
-		}
-	}
-	*fp &= ~T1_VISIT;
-}	/* VSC and  BYPASS by Antonin */
-
-void t1_enc_clnpass(int w, int h, int bpno, int orient, int *nmsedec, int cblksty)
-{
-	int i, j, k, one, agg, runlen, vsc;
-	*nmsedec = 0;
-	one = 1 << (bpno + T1_NMSEDEC_FRACBITS);
-	for (k = 0; k < h; k += 4) {
-		for (i = 0; i < w; i++) {
-			if (k + 3 < h) {
-				if (cblksty & J2K_CCP_CBLKSTY_VSC) {
-					agg = !(t1_flags[1 + k][1 + i] & (T1_SIG | T1_VISIT | T1_SIG_OTH)
-						|| t1_flags[1 + k + 1][1 + i] & (T1_SIG | T1_VISIT |
-						T1_SIG_OTH) || t1_flags[1 + k + 2][1 + i] & (T1_SIG | T1_VISIT |
-						T1_SIG_OTH) || (t1_flags[1 + k + 3][1 + i] & (~(T1_SIG_S | T1_SIG_SE 
-						| T1_SIG_SW | T1_SGN_S))) & (T1_SIG | T1_VISIT | T1_SIG_OTH));
-				} else {
-					agg = !(t1_flags[1 + k][1 + i] & (T1_SIG | T1_VISIT | T1_SIG_OTH)
-						|| t1_flags[1 + k + 1][1 + i] & (T1_SIG | T1_VISIT | T1_SIG_OTH)
-						|| t1_flags[1 + k + 2][1 + i] & (T1_SIG | T1_VISIT | T1_SIG_OTH)
-						|| t1_flags[1 + k + 3][1 + i] & (T1_SIG | T1_VISIT | T1_SIG_OTH));
-				}
-			} else {
-				agg = 0;
-			}
-			if (agg) {
-				for (runlen = 0; runlen < 4; runlen++) {
-					if (int_abs(t1_data[k + runlen][i]) & one)
-						break;
-				}
-				mqc_setcurctx(T1_CTXNO_AGG);
-				mqc_encode(runlen != 4);
-				if (runlen == 4) {
-					continue;
-				}
-				mqc_setcurctx(T1_CTXNO_UNI);
-				mqc_encode(runlen >> 1);
-				mqc_encode(runlen & 1);
-			} else {
-				runlen = 0;
-			}
-			for (j = k + runlen; j < k + 4 && j < h; j++) {
-				vsc = ((cblksty & J2K_CCP_CBLKSTY_VSC) && (j == k + 3 || j == h - 1)) ? 1 : 0;
-				t1_enc_clnpass_step(&t1_flags[1 + j][1 + i], &t1_data[j][i], orient, bpno, one, nmsedec, agg
-						    && (j == k + runlen), vsc);
-			}
-		}
-	}
-}
-
-void t1_dec_clnpass(int w, int h, int bpno, int orient, int cblksty)
-{
-	int i, j, k, one, half, oneplushalf, agg, runlen, vsc;
-	int segsym = cblksty & J2K_CCP_CBLKSTY_SEGSYM;
-	one = 1 << bpno;
-	half = one >> 1;
-	oneplushalf = one | half;
-	for (k = 0; k < h; k += 4) {
-		for (i = 0; i < w; i++) {
-			if (k + 3 < h) {
-				if (cblksty & J2K_CCP_CBLKSTY_VSC) {
-					agg = !(t1_flags[1 + k][1 + i] & (T1_SIG | T1_VISIT | T1_SIG_OTH)
-						|| t1_flags[1 + k + 1][1 + i] & (T1_SIG | T1_VISIT |
-						T1_SIG_OTH) || t1_flags[1 + k + 2][1 + i] & (T1_SIG | T1_VISIT |
-						T1_SIG_OTH) || (t1_flags[1 + k + 3][1 + i] & (~(T1_SIG_S | T1_SIG_SE | 
-						T1_SIG_SW | T1_SGN_S)))	& (T1_SIG | T1_VISIT | T1_SIG_OTH));
-				} else {
-					agg = !(t1_flags[1 + k][1 + i] & (T1_SIG | T1_VISIT | T1_SIG_OTH)
-						|| t1_flags[1 + k + 1][1 + i] & (T1_SIG | T1_VISIT |
-						T1_SIG_OTH) || t1_flags[1 + k + 2][1 + i] & (T1_SIG | T1_VISIT |
-						T1_SIG_OTH) || t1_flags[1 + k + 3][1 + i] & (T1_SIG | T1_VISIT |
-						T1_SIG_OTH));
-				}
-			} else {
-				agg = 0;
-			}
-			if (agg) {
-				mqc_setcurctx(T1_CTXNO_AGG);
-				if (!mqc_decode()) {
-					continue;
-				}
-				mqc_setcurctx(T1_CTXNO_UNI);
-				runlen = mqc_decode();
-				runlen = (runlen << 1) | mqc_decode();
-			} else {
-				runlen = 0;
-			}
-			for (j = k + runlen; j < k + 4 && j < h; j++) {
-				vsc = ((cblksty & J2K_CCP_CBLKSTY_VSC) && (j == k + 3 || j == h - 1)) ? 1 : 0;
-				t1_dec_clnpass_step(&t1_flags[1 + j][1 + i], &t1_data[j][i], orient, oneplushalf, 
-						    agg && (j == k + runlen), vsc);
-			}
-		}
-	}
-	if (segsym) {
-		int v = 0;
-		mqc_setcurctx(T1_CTXNO_UNI);
-		v = mqc_decode();
-		v = (v << 1) | mqc_decode();
-		v = (v << 1) | mqc_decode();
-		v = (v << 1) | mqc_decode();
-		/*  if (v!=0xa) 
-		   {
-		   fprintf(stderr, "warning: bad segmentation symbol %x\n",v);
-		   } */
-	}
-}	/* VSC and  BYPASS by Antonin */
-
-double t1_getwmsedec(int nmsedec, int compno, int level, int orient, int bpno, int qmfbid, double stepsize)
-{
-	double w1, w2, wmsedec;
-	if (qmfbid == 1) {
-		w1 = mct_getnorm(compno);
-		w2 = dwt_getnorm(level, orient);
-	} else {  /* if (qmfbid == 0) */
-		w1 = mct_getnorm_real(compno);
-		w2 = dwt_getnorm_real(level, orient);
-	}
-	wmsedec = w1 * w2 * stepsize * (1 << bpno);
-	wmsedec *= wmsedec * nmsedec / 8192.0;
-	return wmsedec;
-}
-
-void t1_encode_cblk(tcd_cblk_t * cblk, int orient, int compno, int level, int qmfbid, double stepsize, int cblksty)
-{
-	int i, j;
-	int w, h;
-	int passno;
-	int bpno, passtype;
-	int max;
-	int nmsedec;
-	double cumwmsedec = 0;
-	char type = T1_TYPE_MQ;
-
-	w = cblk->x1 - cblk->x0;
-	h = cblk->y1 - cblk->y0;
-
-	max = 0;
-	for (j = 0; j < h; j++) {
-	  for (i = 0; i < w; i++) {
-	    max = int_max(max, int_abs(t1_data[j][i]));
-	  }
-	}
-
-	cblk->numbps = max ? (int_floorlog2(max) + 1) - T1_NMSEDEC_FRACBITS : 0;
-
-	for (i = 0; i < sizeof(t1_flags) / sizeof(int); i++)
-		((int *) t1_flags)[i] = 0;
-	bpno = cblk->numbps - 1;
-	passtype = 2;
-
-	mqc_resetstates();
-	mqc_setstate(T1_CTXNO_UNI, 0, 46);
-	mqc_setstate(T1_CTXNO_AGG, 0, 3);
-	mqc_setstate(T1_CTXNO_ZC, 0, 4);
-	mqc_init_enc(cblk->data);
-
-	for (passno = 0; bpno >= 0; passno++) {
-		tcd_pass_t *pass = &cblk->passes[passno];
-		int correction = 3;
-		type = ((bpno < (cblk->numbps - 4)) && (passtype < 2)
-			&& (cblksty & J2K_CCP_CBLKSTY_LAZY)) ? T1_TYPE_RAW : T1_TYPE_MQ;
-
-		switch (passtype) {
-		case 0:
-			t1_enc_sigpass(w, h, bpno, orient, &nmsedec, type, cblksty);
-			break;
-		case 1:
-			t1_enc_refpass(w, h, bpno, &nmsedec, type, cblksty);
-			break;
-		case 2:
-			t1_enc_clnpass(w, h, bpno, orient, &nmsedec, cblksty);
-			/* code switch SEGMARK (i.e. SEGSYM) */
-			if (cblksty & J2K_CCP_CBLKSTY_SEGSYM)
-				mqc_segmark_enc();
-			break;
-		}
-
-		cumwmsedec += t1_getwmsedec(nmsedec, compno, level, orient, bpno, qmfbid, stepsize);
-
-		/* Code switch "RESTART" (i.e. TERMALL) */
-		if ((cblksty & J2K_CCP_CBLKSTY_TERMALL)	&& !((passtype == 2) && (bpno - 1 < 0))) 
-		  {
-		    if (type == T1_TYPE_RAW)
-		      {
-			mqc_flush();
-			correction=1;
-			/* correction = mqc_bypass_flush_enc();*/
-		      }
-		    else
-		      {		/* correction = mqc_restart_enc(); */
-			mqc_flush();
-			correction = 1;
-		      }
-		    pass->term = 1;
-		  } else 
-		    {
-		      if (((bpno < (cblk->numbps - 4) && (passtype > 0)) || ((bpno == (cblk->numbps - 4)) && (passtype == 2)))
-			  && (cblksty & J2K_CCP_CBLKSTY_LAZY)) 
-			{
-			  if (type == T1_TYPE_RAW)
-			    {
-			      mqc_flush();
-			      correction=1;
-			      /* correction = mqc_bypass_flush_enc();*/
-			    }
-			  else
-			    {  /* correction = mqc_restart_enc();*/
-			      mqc_flush();
-			      correction=1;
-			    }
-			  pass->term = 1;
-			} else 
-			  {
-			    pass->term = 0;
-			  }
-		    }
-		
-		if (++passtype == 3) 
-		  {
-		    passtype = 0;
-		    bpno--;
-		  }
-
-		if (pass->term && bpno > 0) {
-			type = ((bpno < (cblk->numbps - 4)) && (passtype < 2)
-				&& (cblksty & J2K_CCP_CBLKSTY_LAZY)) ? T1_TYPE_RAW : T1_TYPE_MQ;
-			if (type == T1_TYPE_RAW)
-				mqc_bypass_init_enc();
-			else
-				mqc_restart_init_enc();
-		}
-
-		pass->distortiondec = cumwmsedec;
-		pass->rate = mqc_numbytes() + correction;	/* FIXME */
-		pass->len = pass->rate - (passno == 0 ? 0 : cblk->passes[passno - 1].rate);
-
-		/* Code-switch "RESET" */
-		if (cblksty & J2K_CCP_CBLKSTY_RESET)
-			mqc_reset_enc();
-	}
-
-	/* Code switch "ERTERM" (i.e. PTERM) */
-	if (cblksty & J2K_CCP_CBLKSTY_PTERM)
-		mqc_erterm_enc();
-	else /* Default coding */ if (!(cblksty & J2K_CCP_CBLKSTY_LAZY))
-		mqc_flush();
-
-	cblk->totalpasses = passno;
-}
-
-void t1_decode_cblk(tcd_cblk_t * cblk, int orient, int roishift, int cblksty)
-{
-	int i;
-	int w, h;
-	int bpno, passtype;
-	int segno, passno;
-	/* add TONY */
-	char type = T1_TYPE_MQ;
-	/* dda */
-
-	for (i = 0; i < sizeof(t1_data) / sizeof(int); i++)
-		((int *) t1_data)[i] = 0;
-	for (i = 0; i < sizeof(t1_flags) / sizeof(int); i++)
-		((int *) t1_flags)[i] = 0;
-
-	w = cblk->x1 - cblk->x0;
-	h = cblk->y1 - cblk->y0;
-	bpno = roishift + cblk->numbps - 1;
-	passtype = 2;
-
-	mqc_resetstates();
-	mqc_setstate(T1_CTXNO_UNI, 0, 46);
-	mqc_setstate(T1_CTXNO_AGG, 0, 3);
-	mqc_setstate(T1_CTXNO_ZC, 0, 4);
-
-	for (segno = 0; segno < cblk->numsegs; segno++) {
-		tcd_seg_t *seg = &cblk->segs[segno];
-
-		/* add TONY */
-		type = ((bpno <= (cblk->numbps - 1) - 4) && (passtype < 2)
-			&& (cblksty & J2K_CCP_CBLKSTY_LAZY)) ? T1_TYPE_RAW : T1_TYPE_MQ;
-		if (type == T1_TYPE_RAW)
-			raw_init_dec(seg->data, seg->len);
-		else
-			mqc_init_dec(seg->data, seg->len);
-		/* dda */
-
-		for (passno = 0; passno < seg->numpasses; passno++) {
-			switch (passtype) {
-			case 0:
-				t1_dec_sigpass(w, h, bpno, orient, type, cblksty);
-				break;
-			case 1:
-				t1_dec_refpass(w, h, bpno, type, cblksty);
-				break;
-			case 2:
-				t1_dec_clnpass(w, h, bpno, orient, cblksty);
-				break;
-			}
-
-			if ((cblksty & J2K_CCP_CBLKSTY_RESET) && type == T1_TYPE_MQ)
-				mqc_reset_enc();
-
-			if (++passtype == 3) {
-				passtype = 0;
-				bpno--;
-			}
-		}
-	}
-}
-
-void t1_encode_cblks(tcd_tile_t * tile, j2k_tcp_t * tcp)
-{
-  int compno, resno, bandno, precno, cblkno;
-  int x, y, i, j, orient;
-  tcd_tilecomp_t *tilec;
-  tcd_resolution_t *res;
-  tcd_band_t *band;
-  tcd_precinct_t *prc;
-  tcd_cblk_t *cblk;
-  
-  for (compno = 0; compno < tile->numcomps; compno++) {
-    tilec = &tile->comps[compno];
-    for (resno = 0; resno < tilec->numresolutions; resno++) {
-      res = &tilec->resolutions[resno];
-      for (bandno = 0; bandno < res->numbands; bandno++) {
-	band = &res->bands[bandno];
-	for (precno = 0; precno < res->pw * res->ph; precno++) {
-	  prc = &band->precincts[precno];
-	  for (cblkno = 0; cblkno < prc->cw * prc->ch; cblkno++) {
-	    cblk = &prc->cblks[cblkno];
-	    
-	    if (band->bandno == 0) {
-	      x = cblk->x0 - band->x0;
-	      y = cblk->y0 - band->y0;
-	    } else if (band->bandno == 1) {
-	      tcd_resolution_t *pres = &tilec->resolutions[resno - 1];
-	      x = pres->x1 - pres->x0 + cblk->x0 - band->x0;
-	      y = cblk->y0 - band->y0;
-	    } else if (band->bandno == 2) {
-	      tcd_resolution_t *pres = &tilec->resolutions[resno - 1];
-	      x = cblk->x0 - band->x0;
-	      y = pres->y1 - pres->y0 + cblk->y0 - band->y0;
-	    } else {  /* if (band->bandno == 3) */
-	      tcd_resolution_t *pres = &tilec->resolutions[resno - 1];
-	      x = pres->x1 - pres->x0 + cblk->x0 - band->x0;
-	      y = pres->y1 - pres->y0 + cblk->y0 - band->y0;
-	    }
-	    
-	    if (tcp->tccps[compno].qmfbid == 1) {
-	      
-	      for (j = 0; j < cblk->y1 - cblk->y0; j++) {
-		for (i = 0; i < cblk->x1 - cblk->x0; i++) {
-		  t1_data[j][i] = tilec->data[(x + i) + (y + j) * (tilec->x1 - tilec->x0)] << T1_NMSEDEC_FRACBITS;
-		}
-	      }
-	    } else if (tcp->tccps[compno].qmfbid == 0) {
-	      for (j = 0; j < cblk->y1 - cblk->y0; j++) {
-		for (i = 0; i < cblk->x1 - cblk->x0; i++) {
-		  t1_data[j][i] = fix_mul(tilec->data[x + i + (y + j) * (tilec->x1 - tilec->x0)],
-					  8192 * 8192 / band->stepsize) >> (13 - T1_NMSEDEC_FRACBITS);
-		}
-	      }
-	    }
-	    orient = band->bandno;	/* FIXME */
-	    if (orient == 2) {
-	      orient = 1;
-	    } else if (orient == 1) {
-	      orient = 2;
-	    }
-	    t1_encode_cblk(cblk, orient, compno,
-			   tilec->numresolutions - 1 - resno,
-			   tcp->tccps[compno].qmfbid, band->stepsize,
-			   tcp->tccps[compno].cblksty);
-	  }	/* cblkno */	  
-	}	/* precno */
-      }		/* bandno */
-    }		/* resno  */ 
-  }		/* compo  */
-}
-
-
-void t1_decode_cblks(tcd_tile_t * tile, j2k_tcp_t * tcp)
-{
-  int compno, resno, bandno, precno, cblkno;
-  
-  for (compno = 0; compno < tile->numcomps; compno++) 
-    {
-      tcd_tilecomp_t *tilec = &tile->comps[compno];
-      for (resno = 0; resno < tilec->numresolutions; resno++) 
-	{
-	  tcd_resolution_t *res = &tilec->resolutions[resno];
-	  for (bandno = 0; bandno < res->numbands; bandno++) 
-	    {
-	      tcd_band_t *band = &res->bands[bandno];
-	      for (precno = 0; precno < res->pw * res->ph; precno++) 
-		{
-		  tcd_precinct_t *prc = &band->precincts[precno];
-		  for (cblkno = 0; cblkno < prc->cw * prc->ch; cblkno++) 
-		    {
-		      int x, y, i, j, orient;
-		      tcd_cblk_t *cblk = &prc->cblks[cblkno];
-		      orient = band->bandno;	/* FIXME */
-		      if (orient == 2)
-			orient = 1;
-		      else if (orient == 1)
-			orient = 2;
-		      t1_decode_cblk(cblk, orient, tcp->tccps[compno].roishift, tcp->tccps[compno].cblksty);
-		      if (band->bandno == 0) {
-			x = cblk->x0 - band->x0;
-			y = cblk->y0 - band->y0;
-		      } else if (band->bandno == 1) {
-			tcd_resolution_t *pres = &tilec->resolutions[resno - 1];
-			x = pres->x1 - pres->x0 + cblk->x0 - band->x0;
-			y = cblk->y0 - band->y0;
-		      } else if (band->bandno == 2) {
-			tcd_resolution_t *pres = &tilec->resolutions[resno - 1];
-			x = cblk->x0 - band->x0;
-			y = pres->y1 - pres->y0 + cblk->y0 - band->y0;
-		      } else {  /* if (band->bandno == 3) */
-			tcd_resolution_t *pres = &tilec->resolutions[resno - 1];
-			x = pres->x1 - pres->x0 + cblk->x0 - band->x0;
-			y = pres->y1 - pres->y0 + cblk->y0 - band->y0;
-		      }
-		      
-		      if (tcp->tccps[compno].roishift) 
-			{
-			  int thresh, val, mag;
-			  thresh = 1 << tcp->tccps[compno].roishift;
-			  for (j = 0; j < cblk->y1 - cblk->y0; j++) {
-			    for (i = 0; i < cblk->x1 - cblk->x0; i++) {
-			      val = t1_data[j][i];
-			      mag = int_abs(val);
-			      if (mag >= thresh) {
-				mag >>= tcp->tccps[compno].roishift;
-				t1_data[j][i] = val < 0 ? -mag : mag;
-			      }
-			    }
-			  }
-			}
-		      
-		      if (tcp->tccps[compno].qmfbid == 1) {
-			for (j = 0; j < cblk->y1 - cblk->y0; j++) {
-			  for (i = 0; i < cblk->x1 - cblk->x0; i++) {
-			    tilec->data[x + i + (y + j) * (tilec->x1 - tilec->x0)] = t1_data[j][i];
-			  }
-			}
-		      } else /* if (tcp->tccps[compno].qmfbid == 0)*/ {
-			for (j = 0; j < cblk->y1 - cblk->y0; j++) {
-			  for (i = 0; i < cblk->x1 - cblk->x0; i++) {
-			    if (t1_data[j][i] == 0) {
-			      tilec->data[x + i + (y + j) * (tilec->x1 - tilec->x0)] = 0;
-			    } else {
-			      tilec->data[x + i + (y + j) * (tilec->x1 - tilec->x0)] = fix_mul(t1_data[j][i] << 13, band->stepsize);
-			    }
-			  }
-			}
-		      }
-		    }
-		}
-	    }
-	}
-    }
-}
-
-int t1_init_ctxno_zc(int f, int orient)
-{
-	int h, v, d, n, t, hv;
-	n = 0;
-	h = ((f & T1_SIG_W) != 0) + ((f & T1_SIG_E) != 0);
-	v = ((f & T1_SIG_N) != 0) + ((f & T1_SIG_S) != 0);
-	d = ((f & T1_SIG_NW) != 0) + ((f & T1_SIG_NE) != 0) + ((f & T1_SIG_SE) != 0) + ((f & T1_SIG_SW) != 0);
-	switch (orient) {
-	case 2:
-		t = h;
-		h = v;
-		v = t;
-	case 0:
-	case 1:
-		if (!h) {
-			if (!v) {
-				if (!d)
-					n = 0;
-				else if (d == 1)
-					n = 1;
-				else
-					n = 2;
-			} else if (v == 1)
-				n = 3;
-			else
-				n = 4;
-		} else if (h == 1) {
-			if (!v) {
-				if (!d)
-					n = 5;
-				else
-					n = 6;
-			} else
-				n = 7;
-		} else
-			n = 8;
-		break;
-	case 3:
-		hv = h + v;
-		if (!d) {
-			if (!hv)
-				n = 0;
-			else if (hv == 1)
-				n = 1;
-			else
-				n = 2;
-		} else if (d == 1) {
-			if (!hv)
-				n = 3;
-			else if (hv == 1)
-				n = 4;
-			else
-				n = 5;
-		} else if (d == 2) {
-			if (!hv)
-				n = 6;
-			else
-				n = 7;
-		} else
-			n = 8;
-		break;
-	}
-	return T1_CTXNO_ZC + n;
-}
-
-int t1_init_ctxno_sc(int f)
-{
-	int hc, vc, n;
-	n = 0;
-	hc = int_min(((f & (T1_SIG_E | T1_SGN_E)) == T1_SIG_E) + ((f & (T1_SIG_W | T1_SGN_W)) == T1_SIG_W),
-			1) - int_min(((f & (T1_SIG_E | T1_SGN_E)) == (T1_SIG_E | T1_SGN_E)) + ((f & (T1_SIG_W | T1_SGN_W)) ==
-			(T1_SIG_W | T1_SGN_W)), 1);
-	vc = int_min(((f & (T1_SIG_N | T1_SGN_N)) == T1_SIG_N) + ((f & (T1_SIG_S | T1_SGN_S)) == T1_SIG_S),
-			1) - int_min(((f & (T1_SIG_N | T1_SGN_N)) == (T1_SIG_N | T1_SGN_N)) + ((f & (T1_SIG_S | T1_SGN_S)) ==
-			(T1_SIG_S | T1_SGN_S)), 1);
-	if (hc < 0) {
-		hc = -hc;
-		vc = -vc;
-	}
-	if (!hc) {
-		if (vc == -1)
-			n = 1;
-		else if (!vc)
-			n = 0;
-		else
-			n = 1;
-	} else if (hc == 1) {
-		if (vc == -1)
-			n = 2;
-		else if (!vc)
-			n = 3;
-		else
-			n = 4;
-	}
-	return T1_CTXNO_SC + n;
-}
-
-int t1_init_ctxno_mag(int f)
-{
-	int n;
-	if (!(f & T1_REFINE))
-		n = (f & (T1_SIG_OTH)) ? 1 : 0;
-	else
-		n = 2;
-	return T1_CTXNO_MAG + n;
-}
-
-int t1_init_spb(int f)
-{
-	int hc, vc, n;
-	hc = int_min(((f & (T1_SIG_E | T1_SGN_E)) == T1_SIG_E) + ((f & (T1_SIG_W | T1_SGN_W)) == T1_SIG_W),
-			1) - int_min(((f & (T1_SIG_E | T1_SGN_E)) == (T1_SIG_E | T1_SGN_E)) + ((f & (T1_SIG_W | T1_SGN_W)) ==
-			(T1_SIG_W | T1_SGN_W)), 1);
-	vc = int_min(((f & (T1_SIG_N | T1_SGN_N)) == T1_SIG_N) + ((f & (T1_SIG_S | T1_SGN_S)) == T1_SIG_S),
-			1) - int_min(((f & (T1_SIG_N | T1_SGN_N)) == (T1_SIG_N | T1_SGN_N)) + ((f & (T1_SIG_S | T1_SGN_S)) ==
-			(T1_SIG_S | T1_SGN_S)), 1);
-	if (!hc && !vc)
-		n = 0;
-	else
-		n = (!(hc > 0 || (!hc && vc > 0)));
-	return n;
-}
-
-void t1_init_luts()
-{
-	int i, j;
-	double u, v, t;
-	for (j = 0; j < 4; j++) {
-		for (i = 0; i < 256; ++i) {
-			t1_lut_ctxno_zc[(j << 8) | i] = t1_init_ctxno_zc(i, j);
-		}
-	}
-	for (i = 0; i < 256; i++) {
-		t1_lut_ctxno_sc[i] = t1_init_ctxno_sc(i << 4);
-	}
-	for (j = 0; j < 2; j++) {
-		for (i = 0; i < 2048; ++i) {
-			t1_lut_ctxno_mag[(j << 11) + i] =
-				t1_init_ctxno_mag((j ? T1_REFINE : 0) | i);
-		}
-	}
-	for (i = 0; i < 256; ++i) {
-		t1_lut_spb[i] = t1_init_spb(i << 4);
-	}
-	/* FIXME FIXME FIXME */
-	/* printf("nmsedec luts:\n"); */
-	for (i = 0; i < (1 << T1_NMSEDEC_BITS); i++) {
-		t = i / pow(2, T1_NMSEDEC_FRACBITS);
-		u = t;
-		v = t - 1.5;
-		t1_lut_nmsedec_sig[i] = int_max(0, (int) (floor((u * u - v * v) * pow(2,T1_NMSEDEC_FRACBITS) +
-						0.5) / pow(2, T1_NMSEDEC_FRACBITS) * 8192.0));
-		t1_lut_nmsedec_sig0[i] = int_max(0, (int) (floor((u * u) * pow(2, T1_NMSEDEC_FRACBITS) + 0.5) /
-						pow(2, T1_NMSEDEC_FRACBITS) * 8192.0));
-		u = t - 1.0;
-		if (i & (1 << (T1_NMSEDEC_BITS - 1))) {
-			v = t - 1.5;
-		} else {
-			v = t - 0.5;
-		}
-		t1_lut_nmsedec_ref[i] =	int_max(0, (int) (floor((u * u - v * v) * pow(2,T1_NMSEDEC_FRACBITS) +
-						0.5) / pow(2, T1_NMSEDEC_FRACBITS) * 8192.0));
-		t1_lut_nmsedec_ref0[i] = int_max(0, (int) (floor((u * u) * pow(2, T1_NMSEDEC_FRACBITS) + 0.5) /
-						 pow(2, T1_NMSEDEC_FRACBITS) * 8192.0));
-	}
-}
diff --git a/libopenjpeg/t1.h b/libopenjpeg/t1.h
deleted file mode 100644
index 5e98bc0..0000000
--- a/libopenjpeg/t1.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * 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 __T1_H
-#define __T1_H
-
-#include "tcd.h"
-#include "j2k.h"
-
-/*
- * Initialize the look-up tables of the Tier-1 coder/decoder
- */
-void t1_init_luts();
-
-/*
- * Encode the code-blocks of a tile
- * tile: the tile to encode
- * tcp: tile coding parameters
- */
-void t1_encode_cblks(tcd_tile_t * tile, j2k_tcp_t * tcp);
-
-/*
- * Decode the code-blocks of a tile
- * tile: the tile to encode
- * tcp: tile coding parameters
- */
-void t1_decode_cblks(tcd_tile_t * tile, j2k_tcp_t * tcp);
-
-#endif
diff --git a/libopenjpeg/t2.c b/libopenjpeg/t2.c
deleted file mode 100644
index cb44c81..0000000
--- a/libopenjpeg/t2.c
+++ /dev/null
@@ -1,625 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * Copyright (c) 2002-2004, Yannick Verschueren
- * Copyright (c) 2002-2004, Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 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 "t2.h"
-#include "tcd.h"
-#include "bio.h"
-#include "j2k.h"
-#include "pi.h"
-#include "tgt.h"
-#include "int.h"
-#include "cio.h"
-#include <stdio.h>
-#include <setjmp.h>
-#include <string.h>
-#include <stdlib.h>
-
-#define RESTART 0x04
-
-extern jmp_buf j2k_error;
-
-void t2_putcommacode(int n)
-{
-	while (--n >= 0) {
-		bio_write(1, 1);
-	}
-	bio_write(0, 1);
-}
-
-int t2_getcommacode()
-{
-	int n;
-	for (n = 0; bio_read(1); n++) {
-	}
-	return n;
-}
-
-/* <summary> */
-/* Variable length code for signalling delta Zil (truncation point) */
-/* <val> n : delta Zil */
-/* <\summary> */
-void t2_putnumpasses(int n)
-{
-	if (n == 1) {
-		bio_write(0, 1);
-	} else if (n == 2) {
-		bio_write(2, 2);
-	} else if (n <= 5) {
-		bio_write(0xc | (n - 3), 4);
-	} else if (n <= 36) {
-		bio_write(0x1e0 | (n - 6), 9);
-	} else if (n <= 164) {
-		bio_write(0xff80 | (n - 37), 16);
-	}
-}
-
-int t2_getnumpasses()
-{
-	int n;
-	if (!bio_read(1))
-		return 1;
-	if (!bio_read(1))
-		return 2;
-	if ((n = bio_read(2)) != 3)
-		return 3 + n;
-	if ((n = bio_read(5)) != 31)
-		return 6 + n;
-	return 37 + bio_read(7);
-}
-
-/*
- * Encode a packet of a tile to a destination buffer
- *
- * Tile    : the tile for which to write the packets
- * tcp     : the tile coding parameters
- * compno  : Identity of the packet --> component value
- * resno   : Identity of the packet --> resolution level value
- * precno  : Identity of the packet --> precinct value
- * layno   : Identity of the packet --> quality layer value
- * dest    : the destination buffer
- * len     : the length of the destination buffer
- * info_IM : structure to create an index file
- * tileno  : number of the tile encoded
-*/
-int t2_encode_packet(tcd_tile_t * tile, j2k_tcp_t * tcp, int compno, int resno, int precno, int layno, unsigned char *dest,
-		     int len, info_image * info_IM, int tileno)
-{
-	int bandno, cblkno;
-	unsigned char *sop = 0, *eph = 0;
-	tcd_tilecomp_t *tilec = &tile->comps[compno];
-	tcd_resolution_t *res = &tilec->resolutions[resno];
-	unsigned char *c = dest;
-
-	/* <SOP 0xff91> */
-	if (tcp->csty & J2K_CP_CSTY_SOP) {
-		sop = (unsigned char *) malloc(6 * sizeof(unsigned char));
-		sop[0] = 255;
-		sop[1] = 145;
-		sop[2] = 0;
-		sop[3] = 4;
-		sop[4] = (info_IM->num % 65536) / 256;
-		sop[5] = (info_IM->num % 65536) % 256;
-		memcpy(c, sop, 6);
-		free(sop);
-		c += 6;
-	}
-	/* </SOP> */
-
-	if (!layno) {
-		for (bandno = 0; bandno < res->numbands; bandno++) {
-			tcd_band_t *band = &res->bands[bandno];
-			tcd_precinct_t *prc = &band->precincts[precno];
-			tgt_reset(prc->incltree);
-			tgt_reset(prc->imsbtree);
-			for (cblkno = 0; cblkno < prc->cw * prc->ch; cblkno++) {
-				tcd_cblk_t *cblk = &prc->cblks[cblkno];
-				cblk->numpasses = 0;
-				tgt_setvalue(prc->imsbtree, cblkno, band->numbps - cblk->numbps);
-			}
-		}
-	}
-
-	bio_init_enc(c, len);
-	bio_write(1, 1);  /* Empty header bit */
-
-	/* Writing Packet header */
-	for (bandno = 0; bandno < res->numbands; bandno++) {
-		tcd_band_t *band = &res->bands[bandno];
-		tcd_precinct_t *prc = &band->precincts[precno];
-		for (cblkno = 0; cblkno < prc->cw * prc->ch; cblkno++) {
-			tcd_cblk_t *cblk = &prc->cblks[cblkno];
-			tcd_layer_t *layer = &cblk->layers[layno];
-			if (!cblk->numpasses && layer->numpasses) {
-				tgt_setvalue(prc->incltree, cblkno, layno);
-			}
-		}
-		for (cblkno = 0; cblkno < prc->cw * prc->ch; cblkno++) {
-			tcd_cblk_t *cblk = &prc->cblks[cblkno];
-			tcd_layer_t *layer = &cblk->layers[layno];
-			int increment = 0;
-			int nump = 0;
-			int len = 0, passno;
-			/* cblk inclusion bits */
-			if (!cblk->numpasses) {
-				tgt_encode(prc->incltree, cblkno, layno + 1);
-			} else {
-				bio_write(layer->numpasses != 0, 1);
-			}
-			/* if cblk not included, go to the next cblk  */
-			if (!layer->numpasses) {
-				continue;
-			}
-			/* if first instance of cblk --> zero bit-planes information */
-			if (!cblk->numpasses) {
-				cblk->numlenbits = 3;
-				tgt_encode(prc->imsbtree, cblkno, 999);
-			}
-			/* number of coding passes included */
-			t2_putnumpasses(layer->numpasses);
-
-			/* computation of the increase of the length indicator and insertion in the header     */
-			for (passno = cblk->numpasses;
-					 passno < cblk->numpasses + layer->numpasses; passno++) {
-				tcd_pass_t *pass = &cblk->passes[passno];
-				nump++;
-				len += pass->len;
-				if (pass->term || passno == (cblk->numpasses + layer->numpasses) - 1) {
-				  increment = int_max(increment, int_floorlog2(len) + 1 - (cblk->numlenbits + int_floorlog2(nump)));
-				  len = 0;
-				  nump = 0;
-				}
-			}
-			t2_putcommacode(increment);
-			/* computation of the new Length indicator */
-			cblk->numlenbits += increment;
-			/* insertion of the codeword segment length */
-
-			for (passno = cblk->numpasses;
-					 passno < cblk->numpasses + layer->numpasses; passno++) {
-				tcd_pass_t *pass = &cblk->passes[passno];
-				nump++;
-				len += pass->len;
-				if (pass->term || passno == (cblk->numpasses + layer->numpasses) - 1) {
-				  bio_write(len, cblk->numlenbits + int_floorlog2(nump));
-				  len = 0;
-				  nump = 0;
-				}
-			}
-		}
-	}
-
-	if (bio_flush())
-		return -999;		/* modified to eliminate longjmp !! */
-
-	c += bio_numbytes();
-
-	/* <EPH 0xff92> */
-	if (tcp->csty & J2K_CP_CSTY_EPH) {
-		eph = (unsigned char *) malloc(2 * sizeof(unsigned char));
-		eph[0] = 255;
-		eph[1] = 146;
-		memcpy(c, eph, 2);
-		free(eph);
-		c += 2;
-	}
-	/* </EPH> */
-
-	/* Writing the packet body */
-
-	for (bandno = 0; bandno < res->numbands; bandno++) {
-		tcd_band_t *band = &res->bands[bandno];
-		tcd_precinct_t *prc = &band->precincts[precno];
-		for (cblkno = 0; cblkno < prc->cw * prc->ch; cblkno++) {
-			tcd_cblk_t *cblk = &prc->cblks[cblkno];
-			tcd_layer_t *layer = &cblk->layers[layno];
-			if (!layer->numpasses) {	/* ADD for index Cfr. Marcela --> delta disto by packet */
-				if (info_IM->index_write && info_IM->index_on) {
-					info_tile *info_TL = &info_IM->tile[tileno];
-					info_packet *info_PK = &info_TL->packet[info_IM->num];
-					info_PK->disto = layer->disto;
-					if (info_IM->D_max < info_PK->disto)
-						info_IM->D_max = info_PK->disto;
-				}			/* </ADD> */
-				continue;
-			}
-			if (c + layer->len > dest + len) {
-				return -999;
-			}
-
-			memcpy(c, layer->data, layer->len);
-			cblk->numpasses += layer->numpasses;
-			c += layer->len;
-			/* ADD for index Cfr. Marcela --> delta disto by packet */
-			if (info_IM->index_write && info_IM->index_on) {
-				info_tile *info_TL = &info_IM->tile[tileno];
-				info_packet *info_PK = &info_TL->packet[info_IM->num];
-				info_PK->disto = layer->disto;
-				if (info_IM->D_max < info_PK->disto)
-					info_IM->D_max = info_PK->disto;
-			}		/* </ADD> */
-		}
-	}
-	return c - dest;
-}
-
-void t2_init_seg(tcd_seg_t * seg, int cblksty, int first)
-{
-	seg->numpasses = 0;
-	seg->len = 0;
-	if (cblksty & J2K_CCP_CBLKSTY_TERMALL)
-		seg->maxpasses = 1;
-	else if (cblksty & J2K_CCP_CBLKSTY_LAZY) {
-		if (first)
-			seg->maxpasses = 10;
-		else
-			seg->maxpasses = (((seg - 1)->maxpasses == 1) || ((seg - 1)->maxpasses == 10)) ? 2 : 1;
-	} else
-		seg->maxpasses = 109;
-}
-
-/*  
- * Decode a packet of a tile from a source buffer
- *
- * src          : the source buffer
- * len          : the length of the source buffer
- * tile         : the tile for which to write the packets
- * cp           : the image coding parameters
- * tcp          : the tile coding parameters
- * compno  : Identity of the packet --> component value
- * resno      : Identity of the packet --> resolution level value
- * precno    : Identity of the packet --> precinct value
- * layno      : Identity of the packet --> quality layer value
- */
-int t2_decode_packet(unsigned char *src, int len, tcd_tile_t * tile, j2k_cp_t * cp, j2k_tcp_t * tcp, int compno, int resno, int precno, int layno)
-{
-	int bandno, cblkno;
-	tcd_tilecomp_t *tilec = &tile->comps[compno];
-	tcd_resolution_t *res = &tilec->resolutions[resno];
-	unsigned char *c = src;
-	int present;
-
-	if (layno == 0) {
-		for (bandno = 0; bandno < res->numbands; bandno++) {
-			tcd_band_t *band = &res->bands[bandno];
-			tcd_precinct_t *prc = &band->precincts[precno];
-			tgt_reset(prc->incltree);
-			tgt_reset(prc->imsbtree);
-			for (cblkno = 0; cblkno < prc->cw * prc->ch; cblkno++) {
-				tcd_cblk_t *cblk = &prc->cblks[cblkno];
-				cblk->numsegs = 0;
-			}
-		}
-	}
-
-	/* When the marker PPT/PPM is used the packet header are store in PPT/PPM marker
-	   This part deal with this caracteristic
-	   step 1: Read packet header in the saved structure
-	   step 2: (futher) return to codestream for decoding */
-	if (cp->ppm == 1) /* PPM */
-	  {	    
-	    c=cp->ppm_data;
-	    bio_init_dec(c,1000);
-	  } else 
-	    {
-	      if (tcp->ppt==1) /* PPT */
-		{
-		  c=tcp->ppt_data;
-		  bio_init_dec(c,1000);
-		} else /* Normal Case */
-		  {
-		    if (tcp->csty & J2K_CP_CSTY_SOP) 
-		      {
-			if ((*c)!=255 || (*(c+1)!=145)) {printf("Error : expected SOP marker [1]!!!\n");}
-			/*printf(" %d %d %d %d %d %d %d\n",*c,*(c+1),*(c+6),*(c+7),*(c+8),*(c+9),*(c+10));*/
-			c += 6;
-		      }
-		    bio_init_dec(c, src + len - c);
-		  }
-	    }
-
-	present = bio_read(1);
-
-	if (!present) 
-	  {
-	    bio_inalign();
-	    /* Normal case */
-	    c += bio_numbytes();
-	    if (tcp->csty & J2K_CP_CSTY_EPH) 
-	      {
-		if ((*c)!=255 || (*(c+1)!=146)) {printf("Error : expected EPH marker [1]!!!\n");}
-		c += 2;
-	      }
-	    
-	    /* PPT and PPM dealing */
-	    if (cp->ppm == 1) /* PPM */
-	      {	
-		cp->ppm_data=c;
-		return 0;
-	      }
-	    if (tcp->ppt==1) /* PPT */
-	      {
-		tcp->ppt_data=c;
-		return 0;
-	      }
-	    return c - src;
-	  }
-	for (bandno = 0; bandno < res->numbands; bandno++) {
-	  tcd_band_t *band = &res->bands[bandno];
-	  tcd_precinct_t *prc = &band->precincts[precno];
-	  for (cblkno = 0; cblkno < prc->cw * prc->ch; cblkno++) {
-	    int included, increment, n;
-	    tcd_cblk_t *cblk = &prc->cblks[cblkno];
-	    tcd_seg_t *seg;
-	    /* if cblk not yet included before --> inclusion tagtree */
-	    if (!cblk->numsegs) {
-	      included = tgt_decode(prc->incltree, cblkno, layno + 1);
-				/* else one bit */
-	    } else {
-	      included = bio_read(1);
-	    }
-	    /* if cblk not included */
-	    if (!included) {
-	      cblk->numnewpasses = 0;
-	      continue;
-	    }
-	    /* if cblk not yet included --> zero-bitplane tagtree */
-	    if (!cblk->numsegs) {
-	      int i, numimsbs;
-	      for (i = 0; !tgt_decode(prc->imsbtree, cblkno, i); i++) {
-	      }
-	      numimsbs = i - 1;
-	      cblk->numbps = band->numbps - numimsbs;
-	      cblk->numlenbits = 3;
-	    }
-	    /* number of coding passes */
-	    cblk->numnewpasses = t2_getnumpasses();
-	    increment = t2_getcommacode();
-	    /* length indicator increment */
-	    cblk->numlenbits += increment;
-	    if (!cblk->numsegs) {
-	      seg = &cblk->segs[0];
-	      t2_init_seg(seg, tcp->tccps[compno].cblksty, 1);
-	    } else {
-	      seg = &cblk->segs[cblk->numsegs - 1];
-	      if (seg->numpasses == seg->maxpasses) {
-		t2_init_seg(++seg, tcp->tccps[compno].cblksty, 0);
-	      }
-	    }
-	    n = cblk->numnewpasses;
-
-	    do {
-	      seg->numnewpasses = int_min(seg->maxpasses - seg->numpasses, n);
-	      seg->newlen = bio_read(cblk->numlenbits + int_floorlog2(seg->numnewpasses));
-	      n -= seg->numnewpasses;
-	      if (n > 0) {
-		t2_init_seg(++seg, tcp->tccps[compno].cblksty, 0);
-	      }
-	    } while (n > 0);
-	  }
-	}
-	if (bio_inalign())
-	  return -999;
-
-	c += bio_numbytes();
-
-	if (tcp->csty & J2K_CP_CSTY_EPH) { /* EPH marker */
-	  if ((*c)!=255 || (*(c+1)!=146)) { printf("Error : expected EPH marker [2]!!!\n"); 
-	  printf(" %d %d %d %d %d %d %d\n",*c,*(c+1),*(c+2),*(c+3),*(c+4),*(c+5),*(c+6));}
-	  c += 2;
-	}
-	
-	/* PPT Step 2 : see above for details */
-	if (cp->ppm==1)
-	  {
-	    cp->ppm_data=c; /* Update pointer */
-	    
-	    c=src;
-	    if (tcp->csty & J2K_CP_CSTY_SOP) 
-	      {
-		if ((*c)!=255 || (*(c+1)!=145)) {printf("Error : expected SOP marker [2] !!!\n"); }
-		c += 6;
-	      }
-	    bio_init_dec(c,src + len - c);
-	  } else 
-	    {
-	      if (tcp->ppt==1)
-		{ 
-		  tcp->ppt_data=c; /* Update pointer */
-		  c=src;
-		  if (tcp->csty & J2K_CP_CSTY_SOP) /* SOP marker */
-		    { 
-		      if ((*c)!=255 || (*(c+1)!=145)) {printf("Error : expected SOP marker [2] !!!\n"); }
-		      c += 6;
-		    }
-		  bio_init_dec(c,src + len - c);
-
-		}
-	    }
-	
-	for (bandno = 0; bandno < res->numbands; bandno++) {
-		tcd_band_t *band = &res->bands[bandno];
-		tcd_precinct_t *prc = &band->precincts[precno];
-		for (cblkno = 0; cblkno < prc->cw * prc->ch; cblkno++) {
-			tcd_cblk_t *cblk = &prc->cblks[cblkno];
-			tcd_seg_t *seg;
-			if (!cblk->numnewpasses)
-				continue;
-			if (!cblk->numsegs) {
-				seg = &cblk->segs[cblk->numsegs++];
-				cblk->len = 0;
-			} else {
-				seg = &cblk->segs[cblk->numsegs - 1];
-				if (seg->numpasses == seg->maxpasses) {
-					seg++;
-					cblk->numsegs++;
-				}
-			}
-			do {
-			  if (c + seg->newlen > src + len){
-			    return -999;}
-			  
-			  memcpy(cblk->data + cblk->len, c, seg->newlen);
-			  if (seg->numpasses == 0) {
-			    seg->data = cblk->data + cblk->len;
-			  }
-			  c += seg->newlen;
-			  cblk->len += seg->newlen;
-			  seg->len += seg->newlen;
-			  seg->numpasses += seg->numnewpasses;
-			  cblk->numnewpasses -= seg->numnewpasses;
-			  if (cblk->numnewpasses > 0) {
-			    seg++;
-			    cblk->numsegs++;
-			  }
-			} while (cblk->numnewpasses > 0);
-		}
-	}
-
-	return c - src;
-}
-
-
-
-/*
- * Encode the packets of a tile to a destination buffer
- *
- * img        : the source image
- * cp         : the image coding parameters
- * tileno     : number of the tile encoded
- * tile       : the tile for which to write the packets
- * maxlayers  : maximum number of layers
- * dest       : the destination buffer
- * len        : the length of the destination buffer
- * info_IM    : structure to create an index file
- */
-int t2_encode_packets(j2k_image_t * img, j2k_cp_t * cp, int tileno, tcd_tile_t * tile, int maxlayers, unsigned char *dest, int len, info_image * info_IM)
-{
-	unsigned char *c = dest;
-	int e = 0;
-	pi_iterator_t *pi;
-	int pino, compno;
-
-	pi = pi_create(img, cp, tileno);
-	
-	for (pino = 0; pino <= cp->tcps[tileno].numpocs; pino++) {
-		while (pi_next(&pi[pino])) {
-			if (pi[pino].layno < maxlayers) {
-			  e = t2_encode_packet(tile, &cp->tcps[tileno], pi[pino].compno, 
-					       pi[pino].resno, pi[pino].precno, pi[pino].layno,
-					       c, dest + len - c, info_IM, tileno);
-			  if (e == -999) {
-			    break;
-			  } else
-			    c += e;
-				/* INDEX >> */
-			  if (info_IM->index_write && info_IM->index_on) {
-			    info_tile *info_TL = &info_IM->tile[tileno];
-			    info_packet *info_PK = &info_TL->packet[info_IM->num];
-			    if (!info_IM->num) {
-			      info_PK->start_pos = info_TL->end_header + 1;
-			    } else {
-			      info_PK->start_pos =
-				info_TL->packet[info_IM->num - 1].end_pos + 1;
-			    }
-			    info_PK->end_pos = info_PK->start_pos + e - 1;
-			    
-			  }
-				/* << INDEX */
-			  if ((info_IM->index_write
-			       && cp->tcps[tileno].csty & J2K_CP_CSTY_SOP)
-			      || (info_IM->index_write && info_IM->index_on)) {
-			    info_IM->num++;
-			  }
-			}
-
-		}
-
-		/* FREE space memory taken by pi */
-		for (compno = 0; compno < pi[pino].numcomps; compno++) {
-			free(pi[pino].comps[compno].resolutions);
-		}
-		free(pi[pino].comps);
-	}
-	free(pi[0].include);
-	free(pi);
-	if (e == -999)
-		return e;
-	else
-		return c - dest;
-}
-
-
-
-/*
- * Decode the packets of a tile from a source buffer
- *
- * src: the source buffer
- * len: length of the source buffer
- * img: destination image
- * cp: image coding parameters
- * tileno: number that identifies the tile for which to decode the packets
- * tile: tile for which to decode the packets
- */
-int t2_decode_packets(unsigned char *src, int len, j2k_image_t * img, j2k_cp_t * cp, int tileno, tcd_tile_t * tile)
-{
-	unsigned char *c = src;
-	pi_iterator_t *pi;
-	int pino, compno, e = 0;
-	int n=0;
-
-	pi = pi_create(img, cp, tileno);
-	
-	for (pino = 0; pino <= cp->tcps[tileno].numpocs; pino++) {
-	  while (pi_next(&pi[pino])) 
-	    { 
-	      //   fprintf(stderr,"codeblock %d [%d %d %d %d] pino %d/%d\n",n,pi[pino].layno,pi[pino].resno,pi[pino].compno,pi[pino].precno,pino,cp->tcps[tileno].numpocs);
-	      e = t2_decode_packet(c, src + len - c, tile, cp, &cp->tcps[tileno], pi[pino].compno, 
-				   pi[pino].resno, pi[pino].precno, pi[pino].layno); 
-	      n++;
-	 
-	      if (e == -999) {		/* ADD */
-		break;
-	      } else
-		c += e;
-	      /*  printf("next\n"); */
-	    }
-
-	  /* FREE space memory taken by pi */
-	  for (compno = 0; compno < pi[pino].numcomps; compno++) {
-	    free(pi[pino].comps[compno].resolutions);
-	  }
-	  free(pi[pino].comps);
-	}
-	free(pi[0].include);
-	free(pi);
-	
-	if (e == -999)
-	  return e;
-	else
-	  return c - src;
-}
diff --git a/libopenjpeg/t2.h b/libopenjpeg/t2.h
deleted file mode 100644
index 79ccf99..0000000
--- a/libopenjpeg/t2.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * Copyright (c) 2002-2003, Yannick Verschueren
- * Copyright (c) 2002-2003,  Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 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 __T2_H
-#define __T2_H
-
-#include "tcd.h"
-#include "j2k.h"
-
-/*
- * Encode the packets of a tile to a destination buffer
- *
- * img        : the source image
- * cp         : the image coding parameters
- * tileno     : number of the tile encoded
- * tile       : the tile for which to write the packets
- * maxlayers  : maximum number of layers
- * dest       : the destination buffer
- * len        : the length of the destination buffer
- * info_IM    : structure to create an index file
- */
-int t2_encode_packets(j2k_image_t * img, j2k_cp_t * cp, int tileno, tcd_tile_t * tile, int maxlayers, unsigned char *dest, int len, info_image * info_IM);
-
-/*
- * Decode the packets of a tile from a source buffer
- *
- * src: the source buffer
- * len: length of the source buffer
- * img: destination image
- * cp: image coding parameters
- * tileno: number that identifies the tile for which to decode the packets
- * tile: tile for which to decode the packets
- */
-int t2_decode_packets(unsigned char *src, int len, j2k_image_t * img, j2k_cp_t * cp, int tileno, tcd_tile_t * tile);
-
-#endif
diff --git a/libopenjpeg/tcd.c b/libopenjpeg/tcd.c
deleted file mode 100644
index 84b3a17..0000000
--- a/libopenjpeg/tcd.c
+++ /dev/null
@@ -1,1287 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * Copyright (c) 2002-2004, Yannick Verschueren
- * Copyright (c) 2002-2004, Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 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 "tcd.h"
-#include "int.h"
-#include "t1.h"
-#include "t2.h"
-#include "dwt.h"
-#include "mct.h"
-#include <setjmp.h>
-#include <float.h>
-#include <stdio.h>
-#include <time.h>
-#include <math.h>
-#include <stdlib.h>
-#include <string.h>
-
-static tcd_image_t tcd_image;
-
-static j2k_image_t *tcd_img;
-static j2k_cp_t *tcd_cp;
-
-static tcd_tile_t *tcd_tile;
-static j2k_tcp_t *tcd_tcp;
-static int tcd_tileno;
-
-static tcd_tile_t *tile;
-static tcd_tilecomp_t *tilec;
-static tcd_resolution_t *res;
-static tcd_band_t *band;
-static tcd_precinct_t *prc;
-static tcd_cblk_t *cblk;
-
-extern jmp_buf j2k_error;
-
-void tcd_dump(tcd_image_t * img, int curtileno)
-{
-	int tileno, compno, resno, bandno, precno, cblkno;
-	/* fprintf(stderr, "image {\n"); */
-	fprintf(stderr, "  tw=%d, th=%d x0 %d x1 %d\n", img->tw, img->th,
-					tcd_img->x0, tcd_img->x1);
-	for (tileno = 0; tileno < 1; tileno++) {
-		tcd_tile_t *tile = &tcd_image.tiles[curtileno];
-		/* fprintf(stderr, "  tile {\n"); */
-		/* fprintf(stderr, "    x0=%d, y0=%d, x1=%d, y1=%d, numcomps=%d\n", tile->x0, tile->y0, tile->x1, tile->y1, tile->numcomps); */
-		for (compno = 0; compno < tile->numcomps; compno++) {
-			tcd_tilecomp_t *tilec = &tile->comps[compno];
-			/* fprintf(stderr, "    tilec {\n"); */
-			/* fprintf(stderr, "      x0=%d, y0=%d, x1=%d, y1=%d, numresolutions=%d\n", tilec->x0, tilec->y0, tilec->x1, tilec->y1, tilec->numresolutions); */
-			for (resno = 0; resno < tilec->numresolutions; resno++) {
-				tcd_resolution_t *res = &tilec->resolutions[resno];
-				/* fprintf(stderr, "\n   res {\n"); */
-				/* fprintf(stderr, "          x0=%d, y0=%d, x1=%d, y1=%d, pw=%d, ph=%d, numbands=%d\n", res->x0, res->y0, res->x1, res->y1, res->pw, res->ph, res->numbands); */
-				for (bandno = 0; bandno < res->numbands; bandno++) {
-					tcd_band_t *band = &res->bands[bandno];
-					/* fprintf(stderr, "        band {\n"); */
-					/* fprintf(stderr, "          x0=%d, y0=%d, x1=%d, y1=%d, stepsize=%d, numbps=%d\n", band->x0, band->y0, band->x1, band->y1, band->stepsize, band->numbps); */
-					for (precno = 0; precno < res->pw * res->ph; precno++) {
-						tcd_precinct_t *prec = &band->precincts[precno];
-						/* fprintf(stderr, "          prec {\n"); */
-						/* fprintf(stderr, "            x0=%d, y0=%d, x1=%d, y1=%d, cw=%d, ch=%d\n", prec->x0, prec->y0, prec->x1, prec->y1, prec->cw, prec->ch); */
-						for (cblkno = 0; cblkno < prec->cw * prec->ch; cblkno++) {
-							/* tcd_cblk_t *cblk=&prec->cblks[cblkno]; */
-							/* fprintf(stderr, "            cblk {\n"); */
-							/* fprintf(stderr, "              x0=%d, y0=%d, x1=%d, y1=%d\n", cblk->x0, cblk->y0, cblk->x1, cblk->y1); */
-							/* fprintf(stderr, "            }\n"); */
-						}
-						/* fprintf(stderr, "          }\n"); */
-					}
-					/* fprintf(stderr, "        }\n"); */
-				}
-				/* fprintf(stderr, "      }\n"); */
-			}
-			/* fprintf(stderr, "    }\n"); */
-		}
-		/* fprintf(stderr, "  }\n"); */
-	}
-	/* fprintf(stderr, "}\n"); */
-}
-
-void tcd_malloc_encode(j2k_image_t * img, j2k_cp_t * cp, int curtileno)
-{
-	int tileno, compno, resno, bandno, precno, cblkno;
-	tcd_img = img;
-	tcd_cp = cp;
-	tcd_image.tw = cp->tw;
-	tcd_image.th = cp->th;
-	tcd_image.tiles = (tcd_tile_t *) malloc(sizeof(tcd_tile_t));
-
-	for (tileno = 0; tileno < 1; tileno++) {
-		j2k_tcp_t *tcp = &cp->tcps[curtileno];
-		int j;
-		/* cfr p59 ISO/IEC FDIS15444-1 : 2000 (18 august 2000) */
-		int p = curtileno % cp->tw;	/* si numerotation matricielle .. */
-		int q = curtileno / cp->tw;	/* .. coordonnees de la tile (q,p) q pour ligne et p pour colonne */
-		/* tcd_tile_t *tile=&tcd_image.tiles[tileno]; */
-		tile = tcd_image.tiles;
-		/* 4 borders of the tile rescale on the image if necessary */
-		tile->x0 = int_max(cp->tx0 + p * cp->tdx, img->x0);
-		tile->y0 = int_max(cp->ty0 + q * cp->tdy, img->y0);
-		tile->x1 = int_min(cp->tx0 + (p + 1) * cp->tdx, img->x1);
-		tile->y1 = int_min(cp->ty0 + (q + 1) * cp->tdy, img->y1);
-		tile->numcomps = img->numcomps;
-		/* tile->PPT=img->PPT;  */
-		/* Modification of the RATE >> */
-		for (j = 0; j < tcp->numlayers; j++) {
-			tcp->rates[j] =	ceil(tile->numcomps * (tile->x1 - tile->x0) * (tile->y1 - tile->y0) * img->comps[0].prec / (tcp->rates[j] * 8 * img->comps[0].dx * img->comps[0].dy));
-			if (j && tcp->rates[j] < tcp->rates[j - 1] + 10) {
-				tcp->rates[j] = tcp->rates[j - 1] + 20;
-			} else {
-				if (!j && tcp->rates[j] < 30)
-					tcp->rates[j] = 30;
-			}
-		}
-		/* << Modification of the RATE */
-
-		tile->comps = (tcd_tilecomp_t *) malloc(img->numcomps * sizeof(tcd_tilecomp_t));
-		for (compno = 0; compno < tile->numcomps; compno++) {
-			j2k_tccp_t *tccp = &tcp->tccps[compno];
-			/* tcd_tilecomp_t *tilec=&tile->comps[compno]; */
-			tilec = &tile->comps[compno];
-			/* border of each tile component (global) */
-			tilec->x0 = int_ceildiv(tile->x0, img->comps[compno].dx);
-
-			tilec->y0 = int_ceildiv(tile->y0, img->comps[compno].dy);
-			tilec->x1 = int_ceildiv(tile->x1, img->comps[compno].dx);
-			tilec->y1 = int_ceildiv(tile->y1, img->comps[compno].dy);
-
-			tilec->data = (int *) malloc(sizeof(int) * (tilec->x1 - tilec->x0) * (tilec->y1 - tilec->y0));
-			tilec->numresolutions = tccp->numresolutions;
-
-			tilec->resolutions = (tcd_resolution_t *) malloc(tilec->numresolutions * sizeof(tcd_resolution_t));
-
-			for (resno = 0; resno < tilec->numresolutions; resno++) {
-				int pdx, pdy;
-				int levelno = tilec->numresolutions - 1 - resno;
-				int tlprcxstart, tlprcystart, brprcxend, brprcyend;
-				int tlcbgxstart, tlcbgystart, brcbgxend, brcbgyend;
-				int cbgwidthexpn, cbgheightexpn;
-				int cblkwidthexpn, cblkheightexpn;
-				/* tcd_resolution_t *res=&tilec->resolutions[resno]; */
-
-				res = &tilec->resolutions[resno];
-
-				/* border for each resolution level (global) */
-				res->x0 = int_ceildivpow2(tilec->x0, levelno);
-				res->y0 = int_ceildivpow2(tilec->y0, levelno);
-				res->x1 = int_ceildivpow2(tilec->x1, levelno);
-				res->y1 = int_ceildivpow2(tilec->y1, levelno);
-
-				res->numbands = resno == 0 ? 1 : 3;
-				/* p. 35, table A-23, ISO/IEC FDIS154444-1 : 2000 (18 august 2000) */
-				if (tccp->csty & J2K_CCP_CSTY_PRT) {
-					pdx = tccp->prcw[resno];
-					pdy = tccp->prch[resno];
-				} else {
-					pdx = 15;
-					pdy = 15;
-				}
-				/* p. 64, B.6, ISO/IEC FDIS15444-1 : 2000 (18 august 2000)  */
-				tlprcxstart = int_floordivpow2(res->x0, pdx) << pdx;
-				tlprcystart = int_floordivpow2(res->y0, pdy) << pdy;
-				brprcxend = int_ceildivpow2(res->x1, pdx) << pdx;
-				brprcyend = int_ceildivpow2(res->y1, pdy) << pdy;
-
-				res->pw = (brprcxend - tlprcxstart) >> pdx;
-				res->ph = (brprcyend - tlprcystart) >> pdy;
-
-				if (resno == 0) {
-					tlcbgxstart = tlprcxstart;
-					tlcbgystart = tlprcystart;
-					brcbgxend = brprcxend;
-					brcbgyend = brprcyend;
-					cbgwidthexpn = pdx;
-					cbgheightexpn = pdy;
-				} else {
-					tlcbgxstart = int_ceildivpow2(tlprcxstart, 1);
-					tlcbgystart = int_ceildivpow2(tlprcystart, 1);
-					brcbgxend = int_ceildivpow2(brprcxend, 1);
-					brcbgyend = int_ceildivpow2(brprcyend, 1);
-					cbgwidthexpn = pdx - 1;
-					cbgheightexpn = pdy - 1;
-				}
-
-				cblkwidthexpn = int_min(tccp->cblkw, cbgwidthexpn);
-				cblkheightexpn = int_min(tccp->cblkh, cbgheightexpn);
-
-				for (bandno = 0; bandno < res->numbands; bandno++) {
-					int x0b, y0b, i;
-					int gain, numbps;
-					j2k_stepsize_t *ss;
-					band = &res->bands[bandno];
-					band->bandno = resno == 0 ? 0 : bandno + 1;
-					x0b = (band->bandno == 1) || (band->bandno == 3) ? 1 : 0;
-					y0b = (band->bandno == 2) || (band->bandno == 3) ? 1 : 0;
-
-					if (band->bandno == 0) {
-						/* band border (global) */
-						band->x0 = int_ceildivpow2(tilec->x0, levelno);
-						band->y0 = int_ceildivpow2(tilec->y0, levelno);
-						band->x1 = int_ceildivpow2(tilec->x1, levelno);
-						band->y1 = int_ceildivpow2(tilec->y1, levelno);
-					} else {
-						/* band border (global) */
-						band->x0 = int_ceildivpow2(tilec->x0 - (1 << levelno) * x0b, levelno + 1);
-						band->y0 = int_ceildivpow2(tilec->y0 - (1 << levelno) * y0b, levelno + 1);
-						band->x1 = int_ceildivpow2(tilec->x1 - (1 << levelno) * x0b, levelno + 1);
-						band->y1 = int_ceildivpow2(tilec->y1 - (1 << levelno) * y0b, levelno + 1);
-
-					}
-
-					ss = &tccp->stepsizes[resno == 0 ? 0 : 3 * (resno - 1) + bandno + 1];
-					gain = tccp->qmfbid == 0 ? dwt_getgain_real(band->bandno) : dwt_getgain(band->bandno);
-					numbps = img->comps[compno].prec + gain;
-					band->stepsize = (int) floor((1.0 + ss->mant / 2048.0) * pow(2.0, numbps - ss->expn) * 8192.0);
-					band->numbps = ss->expn + tccp->numgbits - 1;	/* WHY -1 ? */
-
-					band->precincts = (tcd_precinct_t *) malloc(3 * res->pw * res->ph * sizeof(tcd_precinct_t));
-
-					for (i = 0; i < res->pw * res->ph * 3; i++) {
-						band->precincts[i].imsbtree = NULL;
-						band->precincts[i].incltree = NULL;
-					}
-
-					for (precno = 0; precno < res->pw * res->ph; precno++) {
-						int tlcblkxstart, tlcblkystart, brcblkxend, brcblkyend;
-						int cbgxstart =
-							tlcbgxstart + (precno % res->pw) * (1 << cbgwidthexpn);
-						int cbgystart =
-							tlcbgystart + (precno / res->pw) * (1 << cbgheightexpn);
-						int cbgxend = cbgxstart + (1 << cbgwidthexpn);
-						int cbgyend = cbgystart + (1 << cbgheightexpn);
-						/* tcd_precinct_t *prc=&band->precincts[precno]; */
-						prc = &band->precincts[precno];
-						/* precinct size (global) */
-						prc->x0 = int_max(cbgxstart, band->x0);
-						prc->y0 = int_max(cbgystart, band->y0);
-						prc->x1 = int_min(cbgxend, band->x1);
-						prc->y1 = int_min(cbgyend, band->y1);
-
-						tlcblkxstart = int_floordivpow2(prc->x0, cblkwidthexpn) << cblkwidthexpn;
-						tlcblkystart = int_floordivpow2(prc->y0, cblkheightexpn) << cblkheightexpn;
-						brcblkxend = int_ceildivpow2(prc->x1, cblkwidthexpn) << cblkwidthexpn;
-						brcblkyend = int_ceildivpow2(prc->y1, cblkheightexpn) << cblkheightexpn;
-						prc->cw = (brcblkxend - tlcblkxstart) >> cblkwidthexpn;
-						prc->ch = (brcblkyend - tlcblkystart) >> cblkheightexpn;
-
-						prc->cblks = (tcd_cblk_t *) malloc((prc->cw * prc->ch) * sizeof(tcd_cblk_t));
-						prc->incltree = tgt_create(prc->cw, prc->ch);
-						prc->imsbtree = tgt_create(prc->cw, prc->ch);
-
-						for (cblkno = 0; cblkno < prc->cw * prc->ch; cblkno++) {
-							int cblkxstart = tlcblkxstart + (cblkno % prc->cw) * (1 << cblkwidthexpn);
-							int cblkystart = tlcblkystart + (cblkno / prc->cw) * (1 << cblkheightexpn);
-							int cblkxend = cblkxstart + (1 << cblkwidthexpn);
-							int cblkyend = cblkystart + (1 << cblkheightexpn);
-
-							cblk = &prc->cblks[cblkno];
-							/* code-block size (global) */
-							cblk->x0 = int_max(cblkxstart, prc->x0);
-							cblk->y0 = int_max(cblkystart, prc->y0);
-							cblk->x1 = int_min(cblkxend, prc->x1);
-							cblk->y1 = int_min(cblkyend, prc->y1);
-						}
-					}
-				}
-			}
-		}
-	}
-	/* tcd_dump(&tcd_image,curtileno); */
-}
-
-void tcd_free_encode(j2k_image_t * img, j2k_cp_t * cp, int curtileno)
-{
-	int tileno, compno, resno, bandno, precno;
-	tcd_img = img;
-	tcd_cp = cp;
-	tcd_image.tw = cp->tw;
-	tcd_image.th = cp->th;
-	for (tileno = 0; tileno < 1; tileno++) {
-		/* j2k_tcp_t *tcp=&cp->tcps[curtileno]; */
-		tile = tcd_image.tiles;
-		for (compno = 0; compno < tile->numcomps; compno++) {
-			tilec = &tile->comps[compno];
-			for (resno = 0; resno < tilec->numresolutions; resno++) {
-				res = &tilec->resolutions[resno];
-				for (bandno = 0; bandno < res->numbands; bandno++) {
-					band = &res->bands[bandno];
-					for (precno = 0; precno < res->pw * res->ph; precno++) {
-						prc = &band->precincts[precno];
-
-						if (prc->incltree != NULL)
-							tgt_destroy(prc->incltree);
-						if (prc->imsbtree != NULL)
-							tgt_destroy(prc->imsbtree);
-						free(prc->cblks);
-					}		/* for (precno */
-					free(band->precincts);
-				}			/* for (bandno */
-			}				/* for (resno */
-			free(tilec->resolutions);
-		}					/* for (compno */
-		free(tile->comps);
-	}						/* for (tileno */
-	free(tcd_image.tiles);
-}
-
-void tcd_init_encode(j2k_image_t * img, j2k_cp_t * cp, int curtileno)
-{
-	int tileno, compno, resno, bandno, precno, cblkno;
-
-	for (tileno = 0; tileno < 1; tileno++) {
-		j2k_tcp_t *tcp = &cp->tcps[curtileno];
-		int j;
-		//		int previous_x0, previous_x1, previous_y0, previous_y1;
-		/* cfr p59 ISO/IEC FDIS15444-1 : 2000 (18 august 2000) */
-		int p = curtileno % cp->tw;
-		int q = curtileno / cp->tw;
-		tile = tcd_image.tiles;
-
-		/* 4 borders of the tile rescale on the image if necessary */
-		tile->x0 = int_max(cp->tx0 + p * cp->tdx, img->x0);
-		tile->y0 = int_max(cp->ty0 + q * cp->tdy, img->y0);
-		tile->x1 = int_min(cp->tx0 + (p + 1) * cp->tdx, img->x1);
-		tile->y1 = int_min(cp->ty0 + (q + 1) * cp->tdy, img->y1);
-
-		tile->numcomps = img->numcomps;
-		/* tile->PPT=img->PPT; */
-		/* Modification of the RATE >> */
-		for (j = 0; j < tcp->numlayers; j++) {
-			tcp->rates[j] =	ceil(tile->numcomps * (tile->x1 - tile->x0) * (tile->y1 - tile->y0) * img->comps[0].prec 
-					     / (tcp->rates[j] * 8 * img->comps[0].dx * img->comps[0].dy));
-			if (j && tcp->rates[j] < tcp->rates[j - 1] + 10) {
-				tcp->rates[j] = tcp->rates[j - 1] + 20;
-			} else {
-				if (!j && tcp->rates[j] < 30)
-					tcp->rates[j] = 30;
-			}
-		}
-		/* << Modification of the RATE */
-		/* tile->comps=(tcd_tilecomp_t*)realloc(tile->comps,img->numcomps*sizeof(tcd_tilecomp_t)); */
-		for (compno = 0; compno < tile->numcomps; compno++) {
-			j2k_tccp_t *tccp = &tcp->tccps[compno];
-			/* int realloc_op; */
-
-			tilec = &tile->comps[compno];
-			/* border of each tile component (global) */
-			tilec->x0 = int_ceildiv(tile->x0, img->comps[compno].dx);
-			tilec->y0 = int_ceildiv(tile->y0, img->comps[compno].dy);
-			tilec->x1 = int_ceildiv(tile->x1, img->comps[compno].dx);
-			tilec->y1 = int_ceildiv(tile->y1, img->comps[compno].dy);
-
-			tilec->data = (int *) malloc(sizeof(int) * (tilec->x1 - tilec->x0) * (tilec->y1 - tilec->y0));
-			tilec->numresolutions = tccp->numresolutions;
-			/* tilec->resolutions=(tcd_resolution_t*)realloc(tilec->resolutions,tilec->numresolutions*sizeof(tcd_resolution_t)); */
-			for (resno = 0; resno < tilec->numresolutions; resno++) {
-				int pdx, pdy;
-				int levelno = tilec->numresolutions - 1 - resno;
-				int tlprcxstart, tlprcystart, brprcxend, brprcyend;
-				int tlcbgxstart, tlcbgystart, brcbgxend, brcbgyend;
-				int cbgwidthexpn, cbgheightexpn;
-				int cblkwidthexpn, cblkheightexpn;
-
-				res = &tilec->resolutions[resno];
-				/* border for each resolution level (global) */
-				res->x0 = int_ceildivpow2(tilec->x0, levelno);
-				res->y0 = int_ceildivpow2(tilec->y0, levelno);
-				res->x1 = int_ceildivpow2(tilec->x1, levelno);
-				res->y1 = int_ceildivpow2(tilec->y1, levelno);
-
-				res->numbands = resno == 0 ? 1 : 3;
-				/* p. 35, table A-23, ISO/IEC FDIS154444-1 : 2000 (18 august 2000) */
-				if (tccp->csty & J2K_CCP_CSTY_PRT) {
-					pdx = tccp->prcw[resno];
-					pdy = tccp->prch[resno];
-				} else {
-					pdx = 15;
-					pdy = 15;
-				}
-				/* p. 64, B.6, ISO/IEC FDIS15444-1 : 2000 (18 august 2000)  */
-				tlprcxstart = int_floordivpow2(res->x0, pdx) << pdx;
-				tlprcystart = int_floordivpow2(res->y0, pdy) << pdy;
-				brprcxend = int_ceildivpow2(res->x1, pdx) << pdx;
-				brprcyend = int_ceildivpow2(res->y1, pdy) << pdy;
-
-				res->pw = (brprcxend - tlprcxstart) >> pdx;
-				res->ph = (brprcyend - tlprcystart) >> pdy;
-
-				if (resno == 0) {
-					tlcbgxstart = tlprcxstart;
-					tlcbgystart = tlprcystart;
-					brcbgxend = brprcxend;
-					brcbgyend = brprcyend;
-					cbgwidthexpn = pdx;
-					cbgheightexpn = pdy;
-				} else {
-					tlcbgxstart = int_ceildivpow2(tlprcxstart, 1);
-					tlcbgystart = int_ceildivpow2(tlprcystart, 1);
-					brcbgxend = int_ceildivpow2(brprcxend, 1);
-					brcbgyend = int_ceildivpow2(brprcyend, 1);
-					cbgwidthexpn = pdx - 1;
-					cbgheightexpn = pdy - 1;
-				}
-
-				cblkwidthexpn = int_min(tccp->cblkw, cbgwidthexpn);
-				cblkheightexpn = int_min(tccp->cblkh, cbgheightexpn);
-
-				for (bandno = 0; bandno < res->numbands; bandno++) {
-					int x0b, y0b;
-					int gain, numbps;
-					j2k_stepsize_t *ss;
-					band = &res->bands[bandno];
-					band->bandno = resno == 0 ? 0 : bandno + 1;
-					x0b = (band->bandno == 1) || (band->bandno == 3) ? 1 : 0;
-					y0b = (band->bandno == 2) || (band->bandno == 3) ? 1 : 0;
-
-					if (band->bandno == 0) {
-						/* band border */
-						band->x0 = int_ceildivpow2(tilec->x0, levelno);
-						band->y0 = int_ceildivpow2(tilec->y0, levelno);
-						band->x1 = int_ceildivpow2(tilec->x1, levelno);
-						band->y1 = int_ceildivpow2(tilec->y1, levelno);
-					} else {
-						band->x0 = int_ceildivpow2(tilec->x0 - (1 << levelno) * x0b, levelno + 1);
-						band->y0 = int_ceildivpow2(tilec->y0 - (1 << levelno) * y0b, levelno + 1);
-						band->x1 = int_ceildivpow2(tilec->x1 - (1 << levelno) * x0b, levelno + 1);
-						band->y1 = int_ceildivpow2(tilec->y1 - (1 << levelno) * y0b, levelno + 1);
-					}
-
-					ss = &tccp->stepsizes[resno == 0 ? 0 : 3 * (resno - 1) + bandno + 1];
-					gain = tccp->qmfbid == 0 ? dwt_getgain_real(band->bandno) : dwt_getgain(band->bandno);
-					numbps = img->comps[compno].prec + gain;
-					band->stepsize = (int) floor((1.0 + ss->mant / 2048.0) * pow(2.0, numbps - ss->expn) * 8192.0);
-					band->numbps = ss->expn + tccp->numgbits - 1;	/* WHY -1 ? */
-
-					for (precno = 0; precno < res->pw * res->ph; precno++) {
-						int tlcblkxstart, tlcblkystart, brcblkxend, brcblkyend;
-						int cbgxstart =
-							tlcbgxstart + (precno % res->pw) * (1 << cbgwidthexpn);
-						int cbgystart =
-							tlcbgystart + (precno / res->pw) * (1 << cbgheightexpn);
-						int cbgxend = cbgxstart + (1 << cbgwidthexpn);
-						int cbgyend = cbgystart + (1 << cbgheightexpn);
-
-						prc = &band->precincts[precno];
-						/* precinct size (global) */
-						prc->x0 = int_max(cbgxstart, band->x0);
-						prc->y0 = int_max(cbgystart, band->y0);
-						prc->x1 = int_min(cbgxend, band->x1);
-						prc->y1 = int_min(cbgyend, band->y1);
-
-						tlcblkxstart = int_floordivpow2(prc->x0, cblkwidthexpn) << cblkwidthexpn;
-						tlcblkystart = int_floordivpow2(prc->y0, cblkheightexpn) << cblkheightexpn;
-						brcblkxend = int_ceildivpow2(prc->x1, cblkwidthexpn) << cblkwidthexpn;
-						brcblkyend = int_ceildivpow2(prc->y1, cblkheightexpn) << cblkheightexpn;
-						prc->cw = (brcblkxend - tlcblkxstart) >> cblkwidthexpn;
-						prc->ch = (brcblkyend - tlcblkystart) >> cblkheightexpn;
-
-						free(prc->cblks);
-						prc->cblks = (tcd_cblk_t *) malloc(prc->cw * prc->ch * sizeof(tcd_cblk_t));
-
-						if (prc->incltree != NULL)
-							tgt_destroy(prc->incltree);
-						if (prc->imsbtree != NULL)
-							tgt_destroy(prc->imsbtree);
-
-						prc->incltree = tgt_create(prc->cw, prc->ch);
-						prc->imsbtree = tgt_create(prc->cw, prc->ch);
-
-						for (cblkno = 0; cblkno < prc->cw * prc->ch; cblkno++) {
-							int cblkxstart = tlcblkxstart + (cblkno % prc->cw) * (1 << cblkwidthexpn);
-							int cblkystart = tlcblkystart + (cblkno / prc->cw) * (1 << cblkheightexpn);
-							int cblkxend = cblkxstart + (1 << cblkwidthexpn);
-							int cblkyend = cblkystart + (1 << cblkheightexpn);
-							cblk = &prc->cblks[cblkno];
-
-							/* code-block size (global) */
-							cblk->x0 = int_max(cblkxstart, prc->x0);
-							cblk->y0 = int_max(cblkystart, prc->y0);
-							cblk->x1 = int_min(cblkxend, prc->x1);
-							cblk->y1 = int_min(cblkyend, prc->y1);
-
-						}
-					}
-				}
-			}
-		}
-	}
-	/* tcd_dump(&tcd_image,0); */
-}
-
-void tcd_init(j2k_image_t * img, j2k_cp_t * cp)
-{
-	int tileno, compno, resno, bandno, precno, cblkno;
-	tcd_img = img;
-	tcd_cp = cp;
-	tcd_image.tw = cp->tw;
-	tcd_image.th = cp->th;
-	tcd_image.tiles = (tcd_tile_t *) malloc(cp->tw * cp->th * sizeof(tcd_tile_t));
-	for (tileno = 0; tileno < cp->tw * cp->th; tileno++) {
-		j2k_tcp_t *tcp = &cp->tcps[tileno];
-		tcd_tile_t *tile = &tcd_image.tiles[tileno];
-		//		int previous_x0, previous_x1, previous_y0, previous_y1;
-		/* cfr p59 ISO/IEC FDIS15444-1 : 2000 (18 august 2000) */
-		int p = tileno % cp->tw;		/* si numerotation matricielle .. */
-		int q = tileno / cp->tw;		/* .. coordonnees de la tile (q,p) q pour ligne et p pour colonne */
-
-		/* 4 borders of the tile rescale on the image if necessary */
-		tile->x0 = int_max(cp->tx0 + p * cp->tdx, img->x0);
-		tile->y0 = int_max(cp->ty0 + q * cp->tdy, img->y0);
-		tile->x1 = int_min(cp->tx0 + (p + 1) * cp->tdx, img->x1);
-		tile->y1 = int_min(cp->ty0 + (q + 1) * cp->tdy, img->y1);
-
-		tile->numcomps = img->numcomps;
-		tile->comps = (tcd_tilecomp_t *) malloc(img->numcomps * sizeof(tcd_tilecomp_t));
-		for (compno = 0; compno < tile->numcomps; compno++) {
-			j2k_tccp_t *tccp = &tcp->tccps[compno];
-			tcd_tilecomp_t *tilec = &tile->comps[compno];
-			/* border of each tile component (global) */
-			tilec->x0 = int_ceildiv(tile->x0, img->comps[compno].dx);
-			tilec->y0 = int_ceildiv(tile->y0, img->comps[compno].dy);
-			tilec->x1 = int_ceildiv(tile->x1, img->comps[compno].dx);
-			tilec->y1 = int_ceildiv(tile->y1, img->comps[compno].dy);
-
-			tilec->data = (int *) malloc(sizeof(int) * (tilec->x1 - tilec->x0) * (tilec->y1 - tilec->y0));
-			tilec->numresolutions = tccp->numresolutions;
-			tilec->resolutions = (tcd_resolution_t *) malloc(tilec->numresolutions * sizeof(tcd_resolution_t));
-			for (resno = 0; resno < tilec->numresolutions; resno++) {
-				int pdx, pdy;
-				int levelno = tilec->numresolutions - 1 - resno;
-				int tlprcxstart, tlprcystart, brprcxend, brprcyend;
-				int tlcbgxstart, tlcbgystart, brcbgxend, brcbgyend;
-				int cbgwidthexpn, cbgheightexpn;
-				int cblkwidthexpn, cblkheightexpn;
-				tcd_resolution_t *res = &tilec->resolutions[resno];
-
-				/* border for each resolution level (global) */
-				res->x0 = int_ceildivpow2(tilec->x0, levelno);
-				res->y0 = int_ceildivpow2(tilec->y0, levelno);
-				res->x1 = int_ceildivpow2(tilec->x1, levelno);
-				res->y1 = int_ceildivpow2(tilec->y1, levelno);
-
-				res->numbands = resno == 0 ? 1 : 3;
-				/* p. 35, table A-23, ISO/IEC FDIS154444-1 : 2000 (18 august 2000) */
-				if (tccp->csty & J2K_CCP_CSTY_PRT) {
-					pdx = tccp->prcw[resno];
-					pdy = tccp->prch[resno];
-				} else {
-					pdx = 15;
-					pdy = 15;
-				}
-				/* p. 64, B.6, ISO/IEC FDIS15444-1 : 2000 (18 august 2000)  */
-				tlprcxstart = int_floordivpow2(res->x0, pdx) << pdx;
-				tlprcystart = int_floordivpow2(res->y0, pdy) << pdy;
-				brprcxend = int_ceildivpow2(res->x1, pdx) << pdx;
-				brprcyend = int_ceildivpow2(res->y1, pdy) << pdy;
-				res->pw = (brprcxend - tlprcxstart) >> pdx;
-				res->ph = (brprcyend - tlprcystart) >> pdy;
-
-				if (resno == 0) {
-					tlcbgxstart = tlprcxstart;
-					tlcbgystart = tlprcystart;
-					brcbgxend = brprcxend;
-					brcbgyend = brprcyend;
-					cbgwidthexpn = pdx;
-					cbgheightexpn = pdy;
-				} else {
-					tlcbgxstart = int_ceildivpow2(tlprcxstart, 1);
-					tlcbgystart = int_ceildivpow2(tlprcystart, 1);
-					brcbgxend = int_ceildivpow2(brprcxend, 1);
-					brcbgyend = int_ceildivpow2(brprcyend, 1);
-					cbgwidthexpn = pdx - 1;
-					cbgheightexpn = pdy - 1;
-				}
-
-				cblkwidthexpn = int_min(tccp->cblkw, cbgwidthexpn);
-				cblkheightexpn = int_min(tccp->cblkh, cbgheightexpn);
-
-				for (bandno = 0; bandno < res->numbands; bandno++) {
-					int x0b, y0b;
-					int gain, numbps;
-					j2k_stepsize_t *ss;
-					tcd_band_t *band = &res->bands[bandno];
-					band->bandno = resno == 0 ? 0 : bandno + 1;
-					x0b = (band->bandno == 1) || (band->bandno == 3) ? 1 : 0;
-					y0b = (band->bandno == 2) || (band->bandno == 3) ? 1 : 0;
-
-					if (band->bandno == 0) {
-						/* band border (global) */
-						band->x0 = int_ceildivpow2(tilec->x0, levelno);
-						band->y0 = int_ceildivpow2(tilec->y0, levelno);
-						band->x1 = int_ceildivpow2(tilec->x1, levelno);
-						band->y1 = int_ceildivpow2(tilec->y1, levelno);
-					} else {
-						/* band border (global) */
-						band->x0 = int_ceildivpow2(tilec->x0 - (1 << levelno) * x0b, levelno + 1);
-						band->y0 = int_ceildivpow2(tilec->y0 - (1 << levelno) * y0b, levelno + 1);
-						band->x1 = int_ceildivpow2(tilec->x1 - (1 << levelno) * x0b, levelno + 1);
-						band->y1 = int_ceildivpow2(tilec->y1 - (1 << levelno) * y0b, levelno + 1);
-					}
-
-					ss = &tccp->stepsizes[resno == 0 ? 0 : 3 * (resno - 1) + bandno + 1];
-					gain = tccp->qmfbid == 0 ? dwt_getgain_real(band->bandno) : dwt_getgain(band->bandno);
-					numbps = img->comps[compno].prec + gain;
-					band->stepsize = (int) floor((1.0 + ss->mant / 2048.0) * pow(2.0, numbps - ss->expn) * 8192.0);
-					band->numbps = ss->expn + tccp->numgbits - 1;	/* WHY -1 ? */
-
-					band->precincts = (tcd_precinct_t *) malloc(res->pw * res->ph *	sizeof(tcd_precinct_t));
-
-					for (precno = 0; precno < res->pw * res->ph; precno++) {
-						int tlcblkxstart, tlcblkystart, brcblkxend, brcblkyend;
-						int cbgxstart = tlcbgxstart + (precno % res->pw) * (1 << cbgwidthexpn);
-						int cbgystart = tlcbgystart + (precno / res->pw) * (1 << cbgheightexpn);
-						int cbgxend = cbgxstart + (1 << cbgwidthexpn);
-						int cbgyend = cbgystart + (1 << cbgheightexpn);
-						tcd_precinct_t *prc = &band->precincts[precno];
-						/* precinct size (global) */
-						prc->x0 = int_max(cbgxstart, band->x0);
-						prc->y0 = int_max(cbgystart, band->y0);
-						prc->x1 = int_min(cbgxend, band->x1);
-						prc->y1 = int_min(cbgyend, band->y1);
-
-						tlcblkxstart = int_floordivpow2(prc->x0, cblkwidthexpn) << cblkwidthexpn;
-						tlcblkystart = int_floordivpow2(prc->y0, cblkheightexpn) << cblkheightexpn;
-						brcblkxend = int_ceildivpow2(prc->x1, cblkwidthexpn) << cblkwidthexpn;
-						brcblkyend = int_ceildivpow2(prc->y1, cblkheightexpn) << cblkheightexpn;
-						prc->cw = (brcblkxend - tlcblkxstart) >> cblkwidthexpn;
-						prc->ch = (brcblkyend - tlcblkystart) >> cblkheightexpn;
-
-						prc->cblks = (tcd_cblk_t *) malloc(prc->cw * prc->ch * sizeof(tcd_cblk_t));
-
-						prc->incltree = tgt_create(prc->cw, prc->ch);
-						prc->imsbtree = tgt_create(prc->cw, prc->ch);
-
-						for (cblkno = 0; cblkno < prc->cw * prc->ch; cblkno++) {
-							int cblkxstart = tlcblkxstart + (cblkno % prc->cw) * (1 << cblkwidthexpn);
-							int cblkystart = tlcblkystart + (cblkno / prc->cw) * (1 << cblkheightexpn);
-							int cblkxend = cblkxstart + (1 << cblkwidthexpn);
-							int cblkyend = cblkystart + (1 << cblkheightexpn);
-							tcd_cblk_t *cblk = &prc->cblks[cblkno];
-							/* code-block size (global) */
-							cblk->x0 = int_max(cblkxstart, prc->x0);
-							cblk->y0 = int_max(cblkystart, prc->y0);
-							cblk->x1 = int_min(cblkxend, prc->x1);
-							cblk->y1 = int_min(cblkyend, prc->y1);
-						}
-					}
-				}
-			}
-		}
-	}
-	/* tcd_dump(&tcd_image,0); */
-}
-
-void tcd_makelayer_fixed(int layno, int final) {
-  int compno, resno, bandno, precno, cblkno;
-  int value; //, matrice[tcd_tcp->numlayers][tcd_tile->comps[0].numresolutions][3];
-  int matrice[10][10][3];
-  int i,j,k;
-
-  /*matrice=(int*)malloc(tcd_tcp->numlayers*tcd_tile->comps[0].numresolutions*3*sizeof(int));*/
-
-  for (compno=0; compno<tcd_tile->numcomps; compno++) 
-    {
-      tcd_tilecomp_t *tilec=&tcd_tile->comps[compno];
-      for (i=0;i<tcd_tcp->numlayers;i++) {
-	for (j=0;j<tilec->numresolutions;j++) {
-	  for (k=0;k<3;k++) {
-	    matrice[i][j][k]=(int)(tcd_cp->matrice[i*tilec->numresolutions*3+j*3+k]*(float)(tcd_img->comps[compno].prec/16.0));}}}
-      
-      for (resno=0; resno<tilec->numresolutions; resno++) {
-	tcd_resolution_t *res=&tilec->resolutions[resno];
-	for (bandno=0; bandno<res->numbands; bandno++) {
-	  tcd_band_t *band=&res->bands[bandno];
-	  for (precno=0; precno<res->pw*res->ph; precno++) {
-	    tcd_precinct_t *prc=&band->precincts[precno];
-	    for (cblkno=0; cblkno<prc->cw*prc->ch; cblkno++) {
-	      tcd_cblk_t *cblk=&prc->cblks[cblkno];
-	      tcd_layer_t *layer=&cblk->layers[layno];
-	      int n;
-	      int imsb=tcd_img->comps[compno].prec-cblk->numbps; /* number of bit-plan equal to zero */
-	      /* Correction of the matrix of coefficient to include the IMSB information */
-	      
-	      if (layno==0)
-		{
-		  value=matrice[layno][resno][bandno];
-		  if (imsb>=value)
-		    value=0;
-		  else
-		    value-=imsb;
-		} else
-		  {
-		    value=matrice[layno][resno][bandno]-matrice[layno-1][resno][bandno];
-		    if (imsb>=matrice[layno-1][resno][bandno])
-		      {
-			value-=(imsb-matrice[layno-1][resno][bandno]);
-			if (value<0) value=0;	
-		      }
-		  }
-	      
-	      if (layno==0) 
-		cblk->numpassesinlayers=0;
-	      
-	      n=cblk->numpassesinlayers;
-	      if (cblk->numpassesinlayers==0)
-		{
-		  if (value!=0)
-		    n=3*value-2+cblk->numpassesinlayers;
-		  else
-		    n=cblk->numpassesinlayers;
-		} else
-		  n=3*value+cblk->numpassesinlayers;
-	      
-	      layer->numpasses=n-cblk->numpassesinlayers;
-	      
-	      if (!layer->numpasses) 
-		continue;
-	      
-	      if (cblk->numpassesinlayers==0) 
-		{
-		  layer->len=cblk->passes[n-1].rate;
-		  layer->data=cblk->data;
-		} else 
-		  {
-		    layer->len=cblk->passes[n-1].rate-cblk->passes[cblk->numpassesinlayers-1].rate;
-		    layer->data=cblk->data+cblk->passes[cblk->numpassesinlayers-1].rate;
-		  }
-	      if (final) 
-		cblk->numpassesinlayers=n;
-	    }
-	  }
-	}
-      }
-    }
-}
-
-void tcd_rateallocate_fixed() {
-  int layno;
-
-  for (layno=0; layno<tcd_tcp->numlayers; layno++) 
-    {
-      tcd_makelayer_fixed(layno, 1);
-    }
-}
-
-void tcd_makelayer(int layno, double thresh, int final)
-{
-	int compno, resno, bandno, precno, cblkno, passno;
-	for (compno = 0; compno < tcd_tile->numcomps; compno++) {
-		tcd_tilecomp_t *tilec = &tcd_tile->comps[compno];
-		for (resno = 0; resno < tilec->numresolutions; resno++) {
-			tcd_resolution_t *res = &tilec->resolutions[resno];
-			for (bandno = 0; bandno < res->numbands; bandno++) {
-				tcd_band_t *band = &res->bands[bandno];
-				for (precno = 0; precno < res->pw * res->ph; precno++) {
-					tcd_precinct_t *prc = &band->precincts[precno];
-					for (cblkno = 0; cblkno < prc->cw * prc->ch; cblkno++) {
-						tcd_cblk_t *cblk = &prc->cblks[cblkno];
-						tcd_layer_t *layer = &cblk->layers[layno];
-						int n;
-
-						if (layno == 0) {
-							cblk->numpassesinlayers = 0;
-						}
-						n = cblk->numpassesinlayers;
-						for (passno = cblk->numpassesinlayers;
-								 passno < cblk->totalpasses; passno++) {
-							int dr;
-							double dd;
-							tcd_pass_t *pass = &cblk->passes[passno];
-							if (n == 0) {
-								dr = pass->rate;
-								dd = pass->distortiondec;
-							} else {
-								dr = pass->rate - cblk->passes[n - 1].rate;
-								dd = pass->distortiondec - cblk->passes[n - 1].distortiondec;
-							}
-							if (dr == 0) {
-								if (dd != 0)
-									n = passno + 1;
-								continue;
-							}
-							if (dd / dr > thresh)
-								n = passno + 1;
-						}
-						layer->numpasses = n - cblk->numpassesinlayers;
-						if (!layer->numpasses)
-							continue;
-						if (cblk->numpassesinlayers == 0) {
-							layer->len = cblk->passes[n - 1].rate;
-							layer->data = cblk->data;
-							layer->disto = cblk->passes[n - 1].distortiondec;
-						} else {
-							layer->len = cblk->passes[n - 1].rate - 
-							  cblk->passes[cblk->numpassesinlayers - 1].rate;
-							layer->data = cblk->data + cblk->passes[cblk->numpassesinlayers - 1].rate;
-							layer->disto = cblk->passes[n - 1].distortiondec - 
-							  cblk->passes[cblk->numpassesinlayers - 1].distortiondec;
-						}
-
-						if (final)
-							cblk->numpassesinlayers = n;
-					}
-				}
-			}
-		}
-	}
-}
-
-void tcd_rateallocate(unsigned char *dest, int len, info_image * info_IM)
-{
-	int compno, resno, bandno, precno, cblkno, passno, layno;
-	double min, max;
-	min = DBL_MAX;
-	max = 0;
-
-	for (compno = 0; compno < tcd_tile->numcomps; compno++) {
-		tcd_tilecomp_t *tilec = &tcd_tile->comps[compno];
-		for (resno = 0; resno < tilec->numresolutions; resno++) {
-			tcd_resolution_t *res = &tilec->resolutions[resno];
-			for (bandno = 0; bandno < res->numbands; bandno++) {
-				tcd_band_t *band = &res->bands[bandno];
-				for (precno = 0; precno < res->pw * res->ph; precno++) {
-					tcd_precinct_t *prc = &band->precincts[precno];
-					for (cblkno = 0; cblkno < prc->cw * prc->ch; cblkno++) {
-						tcd_cblk_t *cblk = &prc->cblks[cblkno];
-						for (passno = 0; passno < cblk->totalpasses; passno++) {
-							tcd_pass_t *pass = &cblk->passes[passno];
-							int dr;
-							double dd, rdslope;
-							if (passno == 0) {
-								dr = pass->rate;
-								dd = pass->distortiondec;
-							} else {
-								dr = pass->rate - cblk->passes[passno - 1].rate;
-								dd = pass->distortiondec - cblk->passes[passno - 1].distortiondec;
-							}
-							if (dr == 0) {
-								continue;
-							}
-							rdslope = dd / dr;
-							if (rdslope < min) {
-								min = rdslope;
-							}
-							if (rdslope > max) {
-								max = rdslope;
-							}
-						} /* passno */
-					} /* cbklno */
-				} /* precno */
-			} /* bandno */
-		} /* resno */
-	} /* compno */
-	if (info_IM->index_on) { /* Threshold for Marcela Index */
-	  info_IM->tile[tcd_tileno].thresh=(double*)malloc(tcd_tcp->numlayers*sizeof(double));
-	}
-	for (layno = 0; layno < tcd_tcp->numlayers; layno++) {
-		volatile double lo = min;
-		volatile double hi = max;
-		volatile int success = 0;
-		volatile int maxlen = int_min(tcd_tcp->rates[layno], len);
-		volatile double goodthresh;
-		volatile int goodlen;
-		volatile int i;
-
-		for (i = 0; i < 32; i++) {
-			volatile double thresh = (lo + hi) / 2;
-			int l;
-
-			tcd_makelayer(layno, thresh, 0);
-
-			l = t2_encode_packets(tcd_img, tcd_cp, tcd_tileno, tcd_tile, layno + 1, dest, maxlen, info_IM);
-			/* fprintf(stderr, "rate alloc: len=%d, max=%d\n", l, maxlen); */
-			if (l == -999) {
-				lo = thresh;
-				continue;
-			}
-
-			hi = thresh;
-			success = 1;
-			goodthresh = thresh;
-			goodlen = l;
-		}
-
-		if (!success) {
-			longjmp(j2k_error, 1);
-		}
-		
-		if (info_IM->index_on) { /* Threshold for Marcela Index */
-		  info_IM->tile[tcd_tileno].thresh[layno]=goodthresh;
-		}
-		tcd_makelayer(layno, goodthresh, 1);
-	}
-}
-
-int tcd_encode_tile_pxm(int tileno, unsigned char *dest, int len, info_image * info_IM)
-{
-	int compno;
-	int l;
-	clock_t time7;
-	tcd_tile_t *tile;
-	j2k_tcp_t *tcp = &tcd_cp->tcps[0];
-	j2k_tccp_t *tccp = &tcp->tccps[0];
-
-	tcd_tileno = tileno;
-	tcd_tile = tcd_image.tiles;
-	tcd_tcp = &tcd_cp->tcps[tileno];
-	tile = tcd_tile;
-	/* INDEX >> "Precinct_nb_X et Precinct_nb_Y" */
-	if (info_IM->index_on) {
-		tcd_tilecomp_t *tilec_idx = &tile->comps[0];	/* old parser version */
-		tcd_resolution_t *res_idx = &tilec_idx->resolutions[0];	/* old parser version */
-
-		info_IM->tile[tileno].pw = res_idx->pw;
-		info_IM->tile[tileno].ph = res_idx->ph;
-
-		info_IM->pw = res_idx->pw;	/* old parser version */
-		info_IM->ph = res_idx->ph;	/* old parser version */
-		info_IM->pdx = 1 << tccp->prcw[tccp->numresolutions - 1];
-		info_IM->pdy = 1 << tccp->prch[tccp->numresolutions - 1];
-	}
-	/* << INDEX */
-
-/*---------------TILE-------------------*/
-
-	time7 = clock();
-
-	for (compno = 0; compno < tile->numcomps; compno++) {
-		FILE *src;
-		char tmp[256];
-		int k;
-		unsigned char elmt;
-		int i, j;
-		int tw, w;
-		tcd_tilecomp_t *tilec = &tile->comps[compno];
-		int adjust = tcd_img->comps[compno].sgnd ? 0 : 1 << (tcd_img->comps[compno].prec - 1);
-		int offset_x, offset_y;
-
-		offset_x = int_ceildiv(tcd_img->x0, tcd_img->comps[compno].dx);
-		offset_y = int_ceildiv(tcd_img->y0, tcd_img->comps[compno].dy);
-		tw = tilec->x1 - tilec->x0;
-		w = int_ceildiv(tcd_img->x1 - tcd_img->x0, tcd_img->comps[compno].dx);
-		sprintf(tmp, "Compo%d", compno);	/* component file */
-		src = fopen(tmp, "rb");
-		if (!src) {
-			fprintf(stderr, "failed to open %s for reading\n", tmp);
-			return 1;
-		}
-
-		/* read the Compo file to extract data of the tile */
-		k = 0;
-		fseek(src, (tilec->x0 - offset_x) + (tilec->y0 - offset_y) * w, SEEK_SET);
-		k = (tilec->x0 - offset_x) + (tilec->y0 - offset_y) * w;
-		for (j = tilec->y0; j < tilec->y1; j++) {
-			for (i = tilec->x0; i < tilec->x1; i++) {
-				if (tcd_tcp->tccps[compno].qmfbid == 1) {
-					elmt = fgetc(src);
-					tilec->data[i - tilec->x0 + (j - tilec->y0) * tw] = elmt - adjust;
-					k++;
-				} else if (tcd_tcp->tccps[compno].qmfbid == 0) {
-					elmt = fgetc(src);
-					tilec->data[i - tilec->x0 + (j - tilec->y0) * tw] = (elmt - adjust) << 13;
-					k++;
-				}
-			}
-			fseek(src, (tilec->x0 - offset_x) + (j + 1 - offset_y) * w - k,	SEEK_CUR);
-			k = tilec->x0 - offset_x + (j + 1 - offset_y) * w;
-
-		}
-		fclose(src);
-	}
-
-/*----------------MCT-------------------*/
-
-	if (tcd_tcp->mct) {
-		if (tcd_tcp->tccps[0].qmfbid == 0) {
-			mct_encode_real(tile->comps[0].data, tile->comps[1].data,tile->comps[2].data, 
-					(tile->comps[0].x1 - tile->comps[0].x0) * (tile->comps[0].y1 - tile->comps[0].y0));
-		} else {
-			mct_encode(tile->comps[0].data, tile->comps[1].data, tile->comps[2].data, 
-				   (tile->comps[0].x1 - tile->comps[0].x0) * (tile->comps[0].y1 - tile->comps[0].y0));
-		}
-	}
-/*----------------DWT---------------------*/
-
-	/* time3=clock(); */
-	for (compno = 0; compno < tile->numcomps; compno++) {
-		tcd_tilecomp_t *tilec = &tile->comps[compno];
-		if (tcd_tcp->tccps[compno].qmfbid == 1) {
-			dwt_encode(tilec->data, tilec->x1 - tilec->x0, tilec->y1 - tilec->y0, tilec, tilec->numresolutions - 1);
-		} else if (tcd_tcp->tccps[compno].qmfbid == 0) {
-			dwt_encode_real(tilec->data, tilec->x1 - tilec->x0, tilec->y1 - tilec->y0, tilec, tilec->numresolutions - 1);
-		}
-	}
-/*------------------TIER1-----------------*/
-
-	t1_init_luts();
-	t1_encode_cblks(tile, tcd_tcp);
-
-/*-----------RATE-ALLOCATE------------------*/
-	info_IM->index_write = 0;			/* INDEX     */
-
-	if (tcd_cp->disto_alloc)
-	  /* Normal Rate/distortion allocation */
-	  tcd_rateallocate(dest, len, info_IM);
-	else
-	  /* Fixed layer allocation */
-	  tcd_rateallocate_fixed();
-	
-/*--------------TIER2------------------*/
-	info_IM->index_write = 1;			/* INDEX     */
-	l = t2_encode_packets(tcd_img, tcd_cp, tileno, tile, tcd_tcp->numlayers, dest, len, info_IM);
-/*---------------CLEAN-------------------*/
-
-	time7 = clock() - time7;
-	printf("total:     %ld.%.3ld s\n", time7 / CLOCKS_PER_SEC, (time7 % CLOCKS_PER_SEC) * 1000 / CLOCKS_PER_SEC);
-
-	/* cleaning memory */
-	for (compno = 0; compno < tile->numcomps; compno++) {
-		tilec = &tile->comps[compno];
-		free(tilec->data);
-	}
-
-	return l;
-}
-
-int tcd_encode_tile_pgx(int tileno, unsigned char *dest, int len, info_image * info_IM)
-{
-	int compno;
-	int l;
-	clock_t time7;
-	tcd_tile_t *tile;
-	j2k_tcp_t *tcp = &tcd_cp->tcps[0];
-	j2k_tccp_t *tccp = &tcp->tccps[0];
-
-	tcd_tileno = tileno;
-	tcd_tile = tcd_image.tiles;
-	tcd_tcp = &tcd_cp->tcps[tileno];
-	tile = tcd_tile;
-	/* INDEX >> "Precinct_nb_X et Precinct_nb_Y" */
-	if (info_IM->index_on) {
-		tcd_tilecomp_t *tilec_idx = &tile->comps[0];
-		tcd_resolution_t *res_idx = &tilec_idx->resolutions[0];
-		info_IM->tile[tileno].pw = res_idx->pw;
-		info_IM->tile[tileno].ph = res_idx->ph;
-		info_IM->pw = res_idx->pw;	/* old parser version */
-		info_IM->ph = res_idx->ph;	/* old parser version */
-		info_IM->pdx = 1 << tccp->prcw[tccp->numresolutions - 1];
-		info_IM->pdy = 1 << tccp->prch[tccp->numresolutions - 1];
-	}
-	/* << INDEX */
-/*---------------TILE-------------------*/
-	time7 = clock();
-
-	for (compno = 0; compno < tile->numcomps; compno++) {
-		FILE *src;
-		char tmp[256];
-		int k;
-		int elmt;
-		int i, j;
-		int tw, w;
-		tcd_tilecomp_t *tilec = &tile->comps[compno];
-		int adjust = tcd_img->comps[compno].sgnd ? 0 : 1 << (tcd_img->comps[compno].prec - 1);
-		int offset_x, offset_y;
-
-		offset_x = int_ceildiv(tcd_img->x0, tcd_img->comps[compno].dx);
-		offset_y = int_ceildiv(tcd_img->y0, tcd_img->comps[compno].dy);
-		tw = tilec->x1 - tilec->x0;
-		w = int_ceildiv(tcd_img->x1 - tcd_img->x0, tcd_img->comps[compno].dx);
-		sprintf(tmp, "bandtile%d", tileno / tcd_cp->tw + 1);	/* bandtile file opening */
-		src = fopen(tmp, "rb");
-		if (!src) {
-			fprintf(stderr, "failed to open %s for reading\n", tmp);
-			return 1;
-		}
-		/* Extract data from bandtile file limited to the current tile */
-		k = 0;
-		while (k < tilec->x0 - offset_x) {
-			k++;
-			fscanf(src, "%d", &elmt);
-		}
-
-		for (j = 0; j < tilec->y1 - tilec->y0; j++) {
-			for (i = tilec->x0; i < tilec->x1; i++) {
-				if (tcd_tcp->tccps[compno].qmfbid == 1) {
-					fscanf(src, "%d", &elmt);
-					tilec->data[i - tilec->x0 + (j) * tw] = elmt - adjust;
-					k++;
-				} else if (tcd_tcp->tccps[compno].qmfbid == 0) {
-					fscanf(src, "%d", &elmt);
-					tilec->data[i - tilec->x0 + (j) * tw] = (elmt - adjust) << 13;
-					k++;
-				}
-			}
-			while (k < tilec->x0 - offset_x + (j + 1) * w) {
-				k++;
-				fscanf(src, "%d", &elmt);
-			}
-		}
-		fclose(src);
-	}
-
-/*----------------MCT-------------------*/
-
-	if (tcd_tcp->mct) {
-		if (tcd_tcp->tccps[0].qmfbid == 0) {
-			mct_encode_real(tile->comps[0].data, tile->comps[1].data, tile->comps[2].data, 
-					(tile->comps[0].x1 - tile->comps[0].x0) * (tile->comps[0].y1 - tile->comps[0].y0));
-		} else {
-			mct_encode(tile->comps[0].data, tile->comps[1].data, tile->comps[2].data, 
-				   (tile->comps[0].x1 - tile->comps[0].x0) * (tile->comps[0].y1 - tile->comps[0].y0));
-		}
-	}
-
-/*----------------DWT---------------------*/
-
-	for (compno = 0; compno < tile->numcomps; compno++) {
-		tcd_tilecomp_t *tilec = &tile->comps[compno];
-		if (tcd_tcp->tccps[compno].qmfbid == 1) {
-			dwt_encode(tilec->data, tilec->x1 - tilec->x0, tilec->y1 - tilec->y0, tilec, tilec->numresolutions - 1);
-		} else if (tcd_tcp->tccps[compno].qmfbid == 0) {
-			dwt_encode_real(tilec->data, tilec->x1 - tilec->x0, tilec->y1 - tilec->y0, tilec, tilec->numresolutions - 1);
-		}
-	}
-
-/*------------------TIER1-----------------*/
-	
-	t1_init_luts();
-	t1_encode_cblks(tile, tcd_tcp);
-
-/*-----------RATE-ALLOCATE------------------*/
-	info_IM->index_write = 0;			/* INDEX */
-
-	info_IM->index_write=0; /* INDEX */
-	
-	if (tcd_cp->disto_alloc)
-	  /* Normal Rate/distortion allocation */
-	  tcd_rateallocate(dest, len, info_IM);
-	else
-	  /* Fixed layer allocation */
-	  tcd_rateallocate_fixed();
-
-/*--------------TIER2------------------*/
-	info_IM->index_write = 1;			/* INDEX */
-
-	l = t2_encode_packets(tcd_img, tcd_cp, tileno, tile, tcd_tcp->numlayers, dest, len, info_IM);
-
- /*---------------CLEAN-------------------*/
-	time7 = clock() - time7;
-	printf("total:     %ld.%.3ld s\n", time7 / CLOCKS_PER_SEC, (time7 % CLOCKS_PER_SEC) * 1000 / CLOCKS_PER_SEC);
-
-	for (compno = 0; compno < tile->numcomps; compno++) {
-		tilec = &tile->comps[compno];
-		free(tilec->data);
-	}
-
-	return l;
-}
-
-
-int tcd_decode_tile(unsigned char *src, int len, int tileno)
-{
-	int l;
-	int compno;
-	int eof = 0;
-	clock_t time1, time2, time3, time4, time5, time6;
-	tcd_tile_t *tile;
-
-	tcd_tileno = tileno;
-	tcd_tile = &tcd_image.tiles[tileno];
-	tcd_tcp = &tcd_cp->tcps[tileno];
-	tile = tcd_tile;
-
-	time6 = clock();
-
-	time1 = clock();
-	printf("tile decoding time %d/%d:\n", tileno + 1, tcd_cp->tw * tcd_cp->th);
-
-	l = t2_decode_packets(src, len, tcd_img, tcd_cp, tileno, tile);
-
-	if (l == -999) {
-		eof = 1;
-		fprintf(stderr, "tcd_decode: incomplete bistream\n");
-	}
-	time1 = clock() - time1;
-	
-	/* printf("tier 2:    %ld.%.3ld s\n", time1/CLOCKS_PER_SEC, (time1%CLOCKS_PER_SEC)*1000/CLOCKS_PER_SEC);    */
-
-	time2 = clock();
-	t1_init_luts();
-	t1_decode_cblks(tile, tcd_tcp);
-	time2 = clock() - time2;
-	/* printf("tier 1:    %ld.%.3ld s\n", time2/CLOCKS_PER_SEC, (time2%CLOCKS_PER_SEC)*1000/CLOCKS_PER_SEC); */
-
-	time3 = clock();
-	for (compno = 0; compno < tile->numcomps; compno++) 
-	  {
-	    tcd_tilecomp_t *tilec = &tile->comps[compno];
-	    if (tcd_tcp->tccps[compno].qmfbid == 1) 
-	      {
-		dwt_decode(tilec->data, tilec->x1 - tilec->x0,tilec->y1 - tilec->y0, tilec, tilec->numresolutions - 1);
-	      }  else 
-		{ /*if (tcd_tcp->tccps[compno].qmfbid == 0) {*/
-		  dwt_decode_real(tilec->data, tilec->x1 - tilec->x0, tilec->y1 - tilec->y0, tilec, tilec->numresolutions - 1);
-		} 
-	  }
-
-	time3 = clock() - time3;
-	/* printf("dwt:       %ld.%.3ld s\n", time3/CLOCKS_PER_SEC, (time3%CLOCKS_PER_SEC)*1000/CLOCKS_PER_SEC); */
-
-	time4 = clock();
-	if (tcd_tcp->mct) {
-		if (tcd_tcp->tccps[0].qmfbid == 0) {
-			mct_decode_real(tile->comps[0].data, tile->comps[1].data, tile->comps[2].data, 
-					(tile->comps[0].x1 - tile->comps[0].x0) * (tile->comps[0].y1 - tile->comps[0].y0));
-		} else {
-			mct_decode(tile->comps[0].data, tile->comps[1].data, tile->comps[2].data, 
-				   (tile->comps[0].x1 - tile->comps[0].x0) * (tile->comps[0].y1 - tile->comps[0].y0));
-		}
-	}
-	time4 = clock() - time4;
-	/* printf("mct:       %ld.%.3ld s\n", time4/CLOCKS_PER_SEC, (time4%CLOCKS_PER_SEC)*1000/CLOCKS_PER_SEC); */
-
-	time5 = clock();
-	for (compno = 0; compno < tile->numcomps; compno++) {
-		tcd_tilecomp_t *tilec = &tile->comps[compno];
-		int adjust = tcd_img->comps[compno].sgnd ? 0 : 1 << (tcd_img->comps[compno].prec - 1);
-		int min = tcd_img->comps[compno].sgnd ? -(1 << (tcd_img->comps[compno].prec - 1)) : 0;
-		int max = tcd_img->comps[compno].sgnd ? (1 << (tcd_img->comps[compno].prec - 1)) - 1 : (1 << tcd_img->comps[compno].prec) - 1;
-		int tw = tilec->x1 - tilec->x0;
-		int w =	int_ceildiv(tcd_img->x1 - tcd_img->x0, tcd_img->comps[compno].dx);
-		int i, j;
-		int offset_x = int_ceildiv(tcd_img->x0, tcd_img->comps[compno].dx);
-		int offset_y = int_ceildiv(tcd_img->y0, tcd_img->comps[compno].dy);
-
-		for (j = tilec->y0; j < tilec->y1; j++) {
-			for (i = tilec->x0; i < tilec->x1; i++) {
-				int v;
-				if (tcd_tcp->tccps[compno].qmfbid == 1) {
-					v = tilec->data[i - tilec->x0 + (j - tilec->y0) * tw];
-				} else {  /* if (tcd_tcp->tccps[compno].qmfbid == 0) */
-					v = tilec->data[i - tilec->x0 + (j - tilec->y0) * tw] >> 13;
-				}
-				v += adjust;
-				
-				/* tcd_img->comps[compno].data[i+j*w]=int_clamp(v, min, max); */
-				tcd_img->comps[compno].data[(i - offset_x) + (j - offset_y) * w] = int_clamp(v, min, max);	/* change ! */
-			}
-		}
-	}
-	time5 = clock() - time5;
-	/* printf("tile->img: %ld.%.3ld s\n", time5/CLOCKS_PER_SEC, (time5%CLOCKS_PER_SEC)*1000/CLOCKS_PER_SEC); */
-
-	time6 = clock() - time6;
-	printf("total:     %ld.%.3ld s\n\n", time6 / CLOCKS_PER_SEC, (time6 % CLOCKS_PER_SEC) * 1000 / CLOCKS_PER_SEC);
-
-	if (eof) {
-		longjmp(j2k_error, 1);
-	}
-
-	return l;
-}
diff --git a/libopenjpeg/tcd.h b/libopenjpeg/tcd.h
deleted file mode 100644
index 9401e96..0000000
--- a/libopenjpeg/tcd.h
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens 
- * Copyright (c) 2002-2003, Yannick Verschueren
- * Copyright (c) 2002-2003,  Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
- * 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 __TCD_H
-#define __TCD_H
-
-#include "j2k.h"
-#include "tgt.h"
-
-typedef struct {
-  int numpasses;
-  int len;
-  unsigned char *data;
-  int maxpasses;
-  int numnewpasses;
-  int newlen;
-} tcd_seg_t;
-
-typedef struct {
-  int rate;                         
-  double distortiondec;             
-  int term, len;
-} tcd_pass_t;
-
-typedef struct {
-  int numpasses;                    /* Number of passes in the layer */
-  int len;                          /* len of information */
-  double disto;		            /* add for index (Cfr. Marcela) */
-  unsigned char *data;              /* data */
-} tcd_layer_t;
-
-typedef struct {
-  int x0, y0, x1, y1;               /* dimension of the code-blocks : left upper corner (x0, y0) right low corner (x1,y1) */
-  int numbps;
-  int numlenbits;
-  int len;                          /* length */
-  int numpasses;                    /* number of pass already done for the code-blocks */
-  int numnewpasses;                 /* number of pass added to the code-blocks */
-  int numsegs;                      /* number of segments */
-  tcd_seg_t segs[100];              /* segments informations */
-  unsigned char data[8192];         /* Data */
-  int numpassesinlayers;            /* number of passes in the layer */
-  tcd_layer_t layers[100];          /* layer information */
-  int totalpasses;                  /* total number of passes */
-  tcd_pass_t passes[100];           /* information about the passes */
-} tcd_cblk_t;
-
-typedef struct {
-  int x0, y0, x1, y1;               /* dimension of the precinct : left upper corner (x0, y0) right low corner (x1,y1) */
-  int cw, ch;                       /* number of precinct in width and heigth */
-  tcd_cblk_t *cblks;                /* code-blocks informations */
-  tgt_tree_t *incltree;             /* inclusion tree */
-  tgt_tree_t *imsbtree;             /* IMSB tree */
-} tcd_precinct_t;
-
-typedef struct {
-  int x0, y0, x1, y1;               /* dimension of the subband : left upper corner (x0, y0) right low corner (x1,y1) */
-  int bandno;
-  tcd_precinct_t *precincts;        /* precinct information */
-  int numbps;
-  int stepsize;
-} tcd_band_t;
-
-typedef struct {
-  int x0, y0, x1, y1;               /* dimension of the resolution level : left upper corner (x0, y0) right low corner (x1,y1) */
-  int pw, ph;			    
-  int numbands;                     /* number sub-band for the resolution level */
-  tcd_band_t bands[3];              /* subband information */
-} tcd_resolution_t;
-
-typedef struct {
-  int x0, y0, x1, y1;               /* dimension of component : left upper corner (x0, y0) right low corner (x1,y1) */
-  int numresolutions;               /* number of resolutions level */
-  tcd_resolution_t *resolutions;    /* resolutions information */
-  int *data;                        /* data of the component */
-} tcd_tilecomp_t;
-
-typedef struct {
-  int x0, y0, x1, y1;               /* dimension of the tile : left upper corner (x0, y0) right low corner (x1,y1) */
-  int numcomps;                     /* number of components in tile */
-  tcd_tilecomp_t *comps;            /* Components information */
-} tcd_tile_t;
-
-typedef struct {
-  int tw, th;                       /* number of tiles in width and heigth */
-  tcd_tile_t *tiles;                /* Tiles information */
-} tcd_image_t;
-
-/*
- * Initialize the tile coder (reuses the memory allocated by tcd_malloc_encode)
- * img: raw image
- * cp: coding parameters
- * curtileno : number that identifies the tile that will be encoded
- */
-void tcd_init_encode(j2k_image_t * img, j2k_cp_t * cp, int curtileno);
-
-
-/*
- * Initialize the tile coder (allocate the memory)
- * img: raw image
- * cp: coding parameters
- * curtileno : number that identifies the tile that will be encoded
- */
-void tcd_malloc_encode(j2k_image_t * img, j2k_cp_t * cp, int curtileno);
-
-
-/*
- * Initialize the tile decoder
- * img: raw image
- * cp: coding parameters
- */
-void tcd_init(j2k_image_t * img, j2k_cp_t * cp);
-
-
-/*
- * Free the memory allocated for encoding
- * img: raw image
- * cp: coding parameters
- * curtileno : number that identifies the tile that will be encoded
- */
-void tcd_free_encode(j2k_image_t * img, j2k_cp_t * cp, int curtileno);
-
-/*
- * Encode a tile from the raw image into a buffer, format pnm, pgm or ppm
- * tileno: number that identifies one of the tiles to be encoded
- * dest: destination buffer
- * len: length of destination buffer
- * info_IM: creation of index file
- */
-int tcd_encode_tile_pxm(int tileno, unsigned char *dest, int len, info_image * info_IM);
-
-
-/*
- * Encode a tile from the raw image into a buffer, format pgx
- * tileno: number that identifies one of the tiles to be encoded
- * dest: destination buffer
- * len: length of destination buffer
- * info_IM: creation of index file
- */
-int tcd_encode_tile_pgx(int tileno, unsigned char *dest, int len, info_image * info_IM);
-
-/*
- * Decode a tile from a buffer into a raw image
- * src: source buffer
- * len: length of the source buffer
- * tileno: number that identifies the tile that will be decoded
- */
-int tcd_decode_tile(unsigned char *src, int len, int tileno);
-
-#endif
diff --git a/libopenjpeg/tgt.c b/libopenjpeg/tgt.c
deleted file mode 100644
index 4d4e2be..0000000
--- a/libopenjpeg/tgt.c
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * 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 "tgt.h"
-#include "bio.h"
-#include <stdlib.h>
-#include <stdio.h>
-
-/* <summary> */
-/* Reset tag-tree. */
-/* </summary> */
-void tgt_reset(tgt_tree_t * tree)
-{
-	int i;
-	/* new */
-	if (!tree || tree == NULL)
-		return;
-
-	for (i = 0; i < tree->numnodes; i++) {
-		tree->nodes[i].value = 999;
-		tree->nodes[i].low = 0;
-		tree->nodes[i].known = 0;
-	}
-}
-
-/* <summary> */
-/* Create tag-tree. */
-/* </summary> */
-tgt_tree_t *tgt_create(int numleafsh, int numleafsv)
-{
-	int nplh[32];
-	int nplv[32];
-	tgt_node_t *node;
-	tgt_node_t *parentnode;
-	tgt_node_t *parentnode0;
-	tgt_tree_t *tree;
-	int i, j, k;
-	int numlvls;
-	int n;
-
-	tree = (tgt_tree_t *) malloc(sizeof(tgt_tree_t));
-	tree->numleafsh = numleafsh;
-	tree->numleafsv = numleafsv;
-
-	numlvls = 0;
-	nplh[0] = numleafsh;
-	nplv[0] = numleafsv;
-	tree->numnodes = 0;
-	do {
-		n = nplh[numlvls] * nplv[numlvls];
-		nplh[numlvls + 1] = (nplh[numlvls] + 1) / 2;
-		nplv[numlvls + 1] = (nplv[numlvls] + 1) / 2;
-		tree->numnodes += n;
-		++numlvls;
-	} while (n > 1);
-
-	/* ADD */
-	if (tree->numnodes == 0) {
-		free(tree);
-		return NULL;
-	}
-
-	tree->nodes = (tgt_node_t *) malloc(tree->numnodes * sizeof(tgt_node_t));
-
-	node = tree->nodes;
-	parentnode = &tree->nodes[tree->numleafsh * tree->numleafsv];
-	parentnode0 = parentnode;
-
-	for (i = 0; i < numlvls - 1; ++i) {
-		for (j = 0; j < nplv[i]; ++j) {
-			k = nplh[i];
-			while (--k >= 0) {
-				node->parent = parentnode;
-				++node;
-				if (--k >= 0) {
-					node->parent = parentnode;
-					++node;
-				}
-				++parentnode;
-			}
-			if ((j & 1) || j == nplv[i] - 1) {
-				parentnode0 = parentnode;
-			} else {
-				parentnode = parentnode0;
-				parentnode0 += nplh[i];
-			}
-		}
-	}
-	node->parent = 0;
-
-	tgt_reset(tree);
-
-	return tree;
-}
-
-/* <summary> */
-/* Destroy tag-tree. */
-/* </summary> */
-void tgt_destroy(tgt_tree_t * t)
-{
-	free(t->nodes);
-	free(t);
-}
-
-/* <summary> */
-/* Set the value of a leaf of the tag-tree. */
-/* </summary> */
-void tgt_setvalue(tgt_tree_t * tree, int leafno, int value)
-{
-	tgt_node_t *node;
-	node = &tree->nodes[leafno];
-	while (node && node->value > value) {
-		node->value = value;
-		node = node->parent;
-	}
-}
-
-/* <summary> */
-/* Encode the value of a leaf of the tag-tree. */
-/* </summary> */
-void tgt_encode(tgt_tree_t * tree, int leafno, int threshold)
-{
-	tgt_node_t *stk[31];
-	tgt_node_t **stkptr;
-	tgt_node_t *node;
-	int low;
-
-	stkptr = stk;
-	node = &tree->nodes[leafno];
-	while (node->parent) {
-		*stkptr++ = node;
-		node = node->parent;
-	}
-
-	low = 0;
-	for (;;) {
-		if (low > node->low) {
-			node->low = low;
-		} else {
-			low = node->low;
-		}
-
-		while (low < threshold) {
-			if (low >= node->value) {
-				if (!node->known) {
-					bio_write(1, 1);
-					node->known = 1;
-				}
-				break;
-			}
-			bio_write(0, 1);
-			++low;
-		}
-
-		node->low = low;
-		if (stkptr == stk)
-			break;
-		node = *--stkptr;
-	}
-
-}
-
-/* <summary> */
-/* Decode the value of a leaf of the tag-tree. */
-/* </summary> */
-int tgt_decode(tgt_tree_t * tree, int leafno, int threshold)
-{
-	tgt_node_t *stk[31];
-	tgt_node_t **stkptr;
-	tgt_node_t *node;
-	int low;
-
-	stkptr = stk;
-	node = &tree->nodes[leafno];
-	while (node->parent) {
-		*stkptr++ = node;
-		node = node->parent;
-	}
-
-	low = 0;
-	for (;;) {
-		if (low > node->low) {
-			node->low = low;
-		} else {
-			low = node->low;
-		}
-		while (low < threshold && low < node->value) {
-			if (bio_read(1)) {
-				node->value = low;
-			} else {
-				++low;
-			}
-		}
-		node->low = low;
-		if (stkptr == stk) {
-			break;
-		}
-		node = *--stkptr;
-	}
-
-	return (node->value < threshold) ? 1 : 0;
-}
diff --git a/libopenjpeg/tgt.h b/libopenjpeg/tgt.h
deleted file mode 100644
index 230b0e2..0000000
--- a/libopenjpeg/tgt.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (c) 2001-2002, David Janssens
- * 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 __TGT_H
-#define __TGT_H
-
-typedef struct tgt_node {
-	struct tgt_node *parent;
-	int value;
-	int low;
-	int known;
-} tgt_node_t;
-
-typedef struct {
-	int numleafsh;
-	int numleafsv;
-	int numnodes;
-	tgt_node_t *nodes;
-} tgt_tree_t;
-
-
-
-/*
- * Reset a tag-tree (set all leaves to 0)
- * tree: tag-tree to reset
- */
-void tgt_reset(tgt_tree_t * tree);
-
-/*
- * Create a tag-tree
- * numleafsh: width of the array of leafs of the tree
- * numleafsv: height of the array of leafs of the tree
- */
-tgt_tree_t *tgt_create(int numleafsh, int numleafsv);
-
-/*
- * Destroy a tag-tree, liberating memory
- * tree: tag-tree to destroy
- */
-void tgt_destroy(tgt_tree_t * tree);
-
-/*
- * Set the value of a leaf of a tag-tree
- * tree: tag-tree to modify
- * leafno: number that identifies the leaf to modify
- * value: new value of the leaf
- */
-void tgt_setvalue(tgt_tree_t * tree, int leafno, int value);
-
-/*
- * Encode the value of a leaf of the tag-tree up to a given threshold
- * leafno: number that identifies the leaf to encode
- * threshold: threshold to use when encoding value of the leaf
- */
-void tgt_encode(tgt_tree_t * tree, int leafno, int threshold);
-
-/*
- * Decode the value of a leaf of the tag-tree up to a given threshold
- * leafno: number that identifies the leaf to decode
- * threshold: threshold to use when decoding value of the leaf
- */
-int tgt_decode(tgt_tree_t * tree, int leafno, int threshold);
-
-#endif