-/*\r
- * Copyright (c) 2001-2003, David Janssens\r
- * Copyright (c) 2002-2003, Yannick Verschueren\r
- * Copyright (c) 2003-2005, Francois Devaux and Antonin Descampe\r
- * Copyright (c) 2005, Hervé Drolon, FreeImage Team\r
- * Copyright (c) 2002-2005, Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium\r
- * All rights reserved.\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- * 1. Redistributions of source code must retain the above copyright\r
- * notice, this list of conditions and the following disclaimer.\r
- * 2. Redistributions in binary form must reproduce the above copyright\r
- * notice, this list of conditions and the following disclaimer in the\r
- * documentation and/or other materials provided with the distribution.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'\r
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\r
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
- * POSSIBILITY OF SUCH DAMAGE.\r
- */\r
-#ifndef __TCD_H\r
-#define __TCD_H\r
-/**\r
-@file tcd.h\r
-@brief Implementation of a tile coder/decoder (TCD)\r
-\r
-The functions in TCD.C have for goal to encode or decode each tile independently from\r
-each other. The functions in TCD.C are used by some function in J2K.C.\r
-*/\r
-\r
-/** @defgroup TCD TCD - Implementation of a tile coder/decoder */\r
-/*@{*/\r
-\r
-/**\r
-FIXME: documentation\r
-*/\r
-typedef struct opj_tcd_seg {\r
- int numpasses;\r
- int len;\r
- unsigned char *data;\r
- int maxpasses;\r
- int numnewpasses;\r
- int newlen;\r
-} opj_tcd_seg_t;\r
-\r
-/**\r
-FIXME: documentation\r
-*/\r
-typedef struct opj_tcd_pass {\r
- int rate;\r
- double distortiondec;\r
- int term, len;\r
-} opj_tcd_pass_t;\r
-\r
-/**\r
-FIXME: documentation\r
-*/\r
-typedef struct opj_tcd_layer {\r
- int numpasses; /* Number of passes in the layer */\r
- int len; /* len of information */\r
- double disto; /* add for index (Cfr. Marcela) */\r
- unsigned char *data; /* data */\r
-} opj_tcd_layer_t;\r
-\r
-/**\r
-FIXME: documentation\r
-*/\r
-typedef struct opj_tcd_cblk {\r
- int x0, y0, x1, y1; /* dimension of the code-blocks : left upper corner (x0, y0) right low corner (x1,y1) */\r
- int numbps;\r
- int numlenbits;\r
- int len; /* length */\r
- int numpasses; /* number of pass already done for the code-blocks */\r
- int numnewpasses; /* number of pass added to the code-blocks */\r
- int numsegs; /* number of segments */\r
- opj_tcd_seg_t segs[100]; /* segments informations */\r
- unsigned char data[8192]; /* Data */\r
- int numpassesinlayers; /* number of passes in the layer */\r
- opj_tcd_layer_t layers[100]; /* layer information */\r
- int totalpasses; /* total number of passes */\r
- opj_tcd_pass_t passes[100]; /* information about the passes */\r
-} opj_tcd_cblk_t;\r
-\r
-/**\r
-FIXME: documentation\r
-*/\r
-typedef struct opj_tcd_precinct {\r
- int x0, y0, x1, y1; /* dimension of the precinct : left upper corner (x0, y0) right low corner (x1,y1) */\r
- int cw, ch; /* number of precinct in width and heigth */\r
- opj_tcd_cblk_t *cblks; /* code-blocks informations */\r
- opj_tgt_tree_t *incltree; /* inclusion tree */\r
- opj_tgt_tree_t *imsbtree; /* IMSB tree */\r
-} opj_tcd_precinct_t;\r
-\r
-/**\r
-FIXME: documentation\r
-*/\r
-typedef struct opj_tcd_band {\r
- int x0, y0, x1, y1; /* dimension of the subband : left upper corner (x0, y0) right low corner (x1,y1) */\r
- int bandno;\r
- opj_tcd_precinct_t *precincts; /* precinct information */\r
- int numbps;\r
- float stepsize;\r
-} opj_tcd_band_t;\r
-\r
-/**\r
-FIXME: documentation\r
-*/\r
-typedef struct opj_tcd_resolution {\r
- int x0, y0, x1, y1; /* dimension of the resolution level : left upper corner (x0, y0) right low corner (x1,y1) */\r
- int pw, ph;\r
- int numbands; /* number sub-band for the resolution level */\r
- opj_tcd_band_t bands[3]; /* subband information */\r
-} opj_tcd_resolution_t;\r
-\r
-/**\r
-FIXME: documentation\r
-*/\r
-typedef struct opj_tcd_tilecomp {\r
- int x0, y0, x1, y1; /* dimension of component : left upper corner (x0, y0) right low corner (x1,y1) */\r
- int numresolutions; /* number of resolutions level */\r
- opj_tcd_resolution_t *resolutions; /* resolutions information */\r
- int *data; /* data of the component */\r
- int nbpix; /* add fixed_quality */\r
-} opj_tcd_tilecomp_t;\r
-\r
-/**\r
-FIXME: documentation\r
-*/\r
-typedef struct opj_tcd_tile {\r
- int x0, y0, x1, y1; /* dimension of the tile : left upper corner (x0, y0) right low corner (x1,y1) */\r
- int numcomps; /* number of components in tile */\r
- opj_tcd_tilecomp_t *comps; /* Components information */\r
- int nbpix; /* add fixed_quality */\r
- double distotile; /* add fixed_quality */\r
- double distolayer[100]; /* add fixed_quality */\r
-} opj_tcd_tile_t;\r
-\r
-/**\r
-FIXME: documentation\r
-*/\r
-typedef struct opj_tcd_image {\r
- int tw, th; /* number of tiles in width and heigth */\r
- opj_tcd_tile_t *tiles; /* Tiles information */\r
-} opj_tcd_image_t;\r
-\r
-/**\r
-Tile coder/decoder\r
-*/\r
-typedef struct opj_tcd {\r
- /** codec context */\r
- opj_common_ptr cinfo;\r
-\r
- /** info on each image tile */\r
- opj_tcd_image_t *tcd_image;\r
- /** image */\r
- opj_image_t *image;\r
- /** coding parameters */\r
- opj_cp_t *cp;\r
- /** pointer to the current encoded/decoded tile */\r
- opj_tcd_tile_t *tcd_tile;\r
- /** coding/decoding parameters common to all tiles */\r
- opj_tcp_t *tcp;\r
- /** current encoded/decoded tile */\r
- int tcd_tileno;\r
- /**@name working variables */\r
- /*@{*/\r
- opj_tcd_tile_t *tile;\r
- opj_tcd_tilecomp_t *tilec;\r
- opj_tcd_resolution_t *res;\r
- opj_tcd_band_t *band;\r
- opj_tcd_precinct_t *prc;\r
- opj_tcd_cblk_t *cblk;\r
- /*@}*/\r
-} opj_tcd_t;\r
-\r
-/** @name Exported functions */\r
-/*@{*/\r
-/* ----------------------------------------------------------------------- */\r
-\r
-/**\r
-Dump the content of a tcd structure\r
-*/\r
-void tcd_dump(FILE *fd, opj_tcd_t *tcd, opj_tcd_image_t *img);\r
-/**\r
-Create a new TCD handle\r
-@param cinfo Codec context info\r
-@return Returns a new TCD handle if successful returns NULL otherwise\r
-*/\r
-opj_tcd_t* tcd_create(opj_common_ptr cinfo);\r
-/**\r
-Destroy a previously created TCD handle\r
-@param tcd TCD handle to destroy\r
-*/\r
-void tcd_destroy(opj_tcd_t *tcd);\r
-/**\r
-Initialize the tile coder (allocate the memory)\r
-@param tcd TCD handle\r
-@param image Raw image\r
-@param cp Coding parameters\r
-@param curtileno Number that identifies the tile that will be encoded\r
-*/\r
-void tcd_malloc_encode(opj_tcd_t *tcd, opj_image_t * image, opj_cp_t * cp, int curtileno);\r
-/**\r
-Free the memory allocated for encoding\r
-@param tcd TCD handle\r
-*/\r
-void tcd_free_encode(opj_tcd_t *tcd);\r
-/**\r
-Initialize the tile coder (reuses the memory allocated by tcd_malloc_encode)\r
-@param tcd TCD handle\r
-@param image Raw image\r
-@param cp Coding parameters\r
-@param curtileno Number that identifies the tile that will be encoded\r
-*/\r
-void tcd_init_encode(opj_tcd_t *tcd, opj_image_t * image, opj_cp_t * cp, int curtileno);\r
-/**\r
-Initialize the tile decoder\r
-@param tcd TCD handle\r
-@param image Raw image\r
-@param cp Coding parameters\r
-*/\r
-void tcd_malloc_decode(opj_tcd_t *tcd, opj_image_t * image, opj_cp_t * cp);\r
-void tcd_makelayer_fixed(opj_tcd_t *tcd, int layno, int final);\r
-void tcd_rateallocate_fixed(opj_tcd_t *tcd);\r
-void tcd_makelayer(opj_tcd_t *tcd, int layno, double thresh, int final);\r
-bool tcd_rateallocate(opj_tcd_t *tcd, unsigned char *dest, int len, opj_image_info_t * image_info);\r
-/**\r
-Encode a tile from the raw image into a buffer\r
-@param tcd TCD handle\r
-@param tileno Number that identifies one of the tiles to be encoded\r
-@param dest Destination buffer\r
-@param len Length of destination buffer\r
-@param image_info Creation of index file\r
-@return \r
-*/\r
-int tcd_encode_tile(opj_tcd_t *tcd, int tileno, unsigned char *dest, int len, opj_image_info_t * image_info);\r
-/**\r
-Decode a tile from a buffer into a raw image\r
-@param tcd TCD handle\r
-@param src Source buffer\r
-@param len Length of source buffer\r
-@param tileno Number that identifies one of the tiles to be decoded\r
-*/\r
-bool tcd_decode_tile(opj_tcd_t *tcd, unsigned char *src, int len, int tileno);\r
-/**\r
-Free the memory allocated for decoding\r
-@param tcd TCD handle\r
-*/\r
-void tcd_free_decode(opj_tcd_t *tcd);\r
-\r
-/* ----------------------------------------------------------------------- */\r
-/*@}*/\r
-\r
-/*@}*/\r
-\r
-#endif /* __TCD_H */\r
+/*
+ * Copyright (c) 2001-2003, David Janssens
+ * Copyright (c) 2002-2003, Yannick Verschueren
+ * Copyright (c) 2003-2005, Francois Devaux and Antonin Descampe
+ * Copyright (c) 2005, Hervé Drolon, FreeImage Team
+ * Copyright (c) 2002-2005, 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
+/**
+@file tcd.h
+@brief Implementation of a tile coder/decoder (TCD)
+
+The functions in TCD.C have for goal to encode or decode each tile independently from
+each other. The functions in TCD.C are used by some function in J2K.C.
+*/
+
+/** @defgroup TCD TCD - Implementation of a tile coder/decoder */
+/*@{*/
+
+/**
+FIXME: documentation
+*/
+typedef struct opj_tcd_seg {
+ int numpasses;
+ int len;
+ unsigned char *data;
+ int maxpasses;
+ int numnewpasses;
+ int newlen;
+} opj_tcd_seg_t;
+
+/**
+FIXME: documentation
+*/
+typedef struct opj_tcd_pass {
+ int rate;
+ double distortiondec;
+ int term, len;
+} opj_tcd_pass_t;
+
+/**
+FIXME: documentation
+*/
+typedef struct opj_tcd_layer {
+ int numpasses; /* Number of passes in the layer */
+ int len; /* len of information */
+ double disto; /* add for index (Cfr. Marcela) */
+ unsigned char *data; /* data */
+} opj_tcd_layer_t;
+
+/**
+FIXME: documentation
+*/
+typedef struct opj_tcd_cblk {
+ 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 */
+ opj_tcd_seg_t segs[100]; /* segments informations */
+ unsigned char data[8192]; /* Data */
+ int numpassesinlayers; /* number of passes in the layer */
+ opj_tcd_layer_t layers[100]; /* layer information */
+ int totalpasses; /* total number of passes */
+ opj_tcd_pass_t passes[100]; /* information about the passes */
+} opj_tcd_cblk_t;
+
+/**
+FIXME: documentation
+*/
+typedef struct opj_tcd_precinct {
+ 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 */
+ opj_tcd_cblk_t *cblks; /* code-blocks informations */
+ opj_tgt_tree_t *incltree; /* inclusion tree */
+ opj_tgt_tree_t *imsbtree; /* IMSB tree */
+} opj_tcd_precinct_t;
+
+/**
+FIXME: documentation
+*/
+typedef struct opj_tcd_band {
+ int x0, y0, x1, y1; /* dimension of the subband : left upper corner (x0, y0) right low corner (x1,y1) */
+ int bandno;
+ opj_tcd_precinct_t *precincts; /* precinct information */
+ int numbps;
+ float stepsize;
+} opj_tcd_band_t;
+
+/**
+FIXME: documentation
+*/
+typedef struct opj_tcd_resolution {
+ 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 */
+ opj_tcd_band_t bands[3]; /* subband information */
+} opj_tcd_resolution_t;
+
+/**
+FIXME: documentation
+*/
+typedef struct opj_tcd_tilecomp {
+ int x0, y0, x1, y1; /* dimension of component : left upper corner (x0, y0) right low corner (x1,y1) */
+ int numresolutions; /* number of resolutions level */
+ opj_tcd_resolution_t *resolutions; /* resolutions information */
+ int *data; /* data of the component */
+ int nbpix; /* add fixed_quality */
+} opj_tcd_tilecomp_t;
+
+/**
+FIXME: documentation
+*/
+typedef struct opj_tcd_tile {
+ 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 */
+ opj_tcd_tilecomp_t *comps; /* Components information */
+ int nbpix; /* add fixed_quality */
+ double distotile; /* add fixed_quality */
+ double distolayer[100]; /* add fixed_quality */
+} opj_tcd_tile_t;
+
+/**
+FIXME: documentation
+*/
+typedef struct opj_tcd_image {
+ int tw, th; /* number of tiles in width and heigth */
+ opj_tcd_tile_t *tiles; /* Tiles information */
+} opj_tcd_image_t;
+
+/**
+Tile coder/decoder
+*/
+typedef struct opj_tcd {
+ /** codec context */
+ opj_common_ptr cinfo;
+
+ /** info on each image tile */
+ opj_tcd_image_t *tcd_image;
+ /** image */
+ opj_image_t *image;
+ /** coding parameters */
+ opj_cp_t *cp;
+ /** pointer to the current encoded/decoded tile */
+ opj_tcd_tile_t *tcd_tile;
+ /** coding/decoding parameters common to all tiles */
+ opj_tcp_t *tcp;
+ /** current encoded/decoded tile */
+ int tcd_tileno;
+ /**@name working variables */
+ /*@{*/
+ opj_tcd_tile_t *tile;
+ opj_tcd_tilecomp_t *tilec;
+ opj_tcd_resolution_t *res;
+ opj_tcd_band_t *band;
+ opj_tcd_precinct_t *prc;
+ opj_tcd_cblk_t *cblk;
+ /*@}*/
+} opj_tcd_t;
+
+/** @name Exported functions */
+/*@{*/
+/* ----------------------------------------------------------------------- */
+
+/**
+Dump the content of a tcd structure
+*/
+void tcd_dump(FILE *fd, opj_tcd_t *tcd, opj_tcd_image_t *img);
+/**
+Create a new TCD handle
+@param cinfo Codec context info
+@return Returns a new TCD handle if successful returns NULL otherwise
+*/
+opj_tcd_t* tcd_create(opj_common_ptr cinfo);
+/**
+Destroy a previously created TCD handle
+@param tcd TCD handle to destroy
+*/
+void tcd_destroy(opj_tcd_t *tcd);
+/**
+Initialize the tile coder (allocate the memory)
+@param tcd TCD handle
+@param image Raw image
+@param cp Coding parameters
+@param curtileno Number that identifies the tile that will be encoded
+*/
+void tcd_malloc_encode(opj_tcd_t *tcd, opj_image_t * image, opj_cp_t * cp, int curtileno);
+/**
+Free the memory allocated for encoding
+@param tcd TCD handle
+*/
+void tcd_free_encode(opj_tcd_t *tcd);
+/**
+Initialize the tile coder (reuses the memory allocated by tcd_malloc_encode)
+@param tcd TCD handle
+@param image Raw image
+@param cp Coding parameters
+@param curtileno Number that identifies the tile that will be encoded
+*/
+void tcd_init_encode(opj_tcd_t *tcd, opj_image_t * image, opj_cp_t * cp, int curtileno);
+/**
+Initialize the tile decoder
+@param tcd TCD handle
+@param image Raw image
+@param cp Coding parameters
+*/
+void tcd_malloc_decode(opj_tcd_t *tcd, opj_image_t * image, opj_cp_t * cp);
+void tcd_makelayer_fixed(opj_tcd_t *tcd, int layno, int final);
+void tcd_rateallocate_fixed(opj_tcd_t *tcd);
+void tcd_makelayer(opj_tcd_t *tcd, int layno, double thresh, int final);
+bool tcd_rateallocate(opj_tcd_t *tcd, unsigned char *dest, int len, opj_image_info_t * image_info);
+/**
+Encode a tile from the raw image into a buffer
+@param tcd TCD handle
+@param tileno Number that identifies one of the tiles to be encoded
+@param dest Destination buffer
+@param len Length of destination buffer
+@param image_info Creation of index file
+@return
+*/
+int tcd_encode_tile(opj_tcd_t *tcd, int tileno, unsigned char *dest, int len, opj_image_info_t * image_info);
+/**
+Decode a tile from a buffer into a raw image
+@param tcd TCD handle
+@param src Source buffer
+@param len Length of source buffer
+@param tileno Number that identifies one of the tiles to be decoded
+*/
+bool tcd_decode_tile(opj_tcd_t *tcd, unsigned char *src, int len, int tileno);
+/**
+Free the memory allocated for decoding
+@param tcd TCD handle
+*/
+void tcd_free_decode(opj_tcd_t *tcd);
+
+/* ----------------------------------------------------------------------- */
+/*@}*/
+
+/*@}*/
+
+#endif /* __TCD_H */