2 * Copyright (c) 2001-2002, David Janssens
3 * Copyright (c) 2002-2003, Yannick Verschueren
4 * Copyright (c) 2002-2003, Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26 * POSSIBILITY OF SUCH DAMAGE.
51 int numpasses; /* Number of passes in the layer */
52 int len; /* len of information */
53 double disto; /* add for index (Cfr. Marcela) */
54 unsigned char *data; /* data */
58 int x0, y0, x1, y1; /* dimension of the code-blocks : left upper corner (x0, y0) right low corner (x1,y1) */
62 int numpasses; /* number of pass already done for the code-blocks */
63 int numnewpasses; /* number of pass added to the code-blocks */
64 int numsegs; /* number of segments */
65 tcd_seg_t segs[100]; /* segments informations */
66 unsigned char data[8192]; /* Data */
67 int numpassesinlayers; /* number of passes in the layer */
68 tcd_layer_t layers[100]; /* layer information */
69 int totalpasses; /* total number of passes */
70 tcd_pass_t passes[100]; /* information about the passes */
74 int x0, y0, x1, y1; /* dimension of the precinct : left upper corner (x0, y0) right low corner (x1,y1) */
75 int cw, ch; /* number of precinct in width and heigth */
76 tcd_cblk_t *cblks; /* code-blocks informations */
77 tgt_tree_t *incltree; /* inclusion tree */
78 tgt_tree_t *imsbtree; /* IMSB tree */
82 int x0, y0, x1, y1; /* dimension of the subband : left upper corner (x0, y0) right low corner (x1,y1) */
84 tcd_precinct_t *precincts; /* precinct information */
90 int x0, y0, x1, y1; /* dimension of the resolution level : left upper corner (x0, y0) right low corner (x1,y1) */
92 int numbands; /* number sub-band for the resolution level */
93 tcd_band_t bands[3]; /* subband information */
97 int x0, y0, x1, y1; /* dimension of component : left upper corner (x0, y0) right low corner (x1,y1) */
98 int numresolutions; /* number of resolutions level */
99 tcd_resolution_t *resolutions; /* resolutions information */
100 int *data; /* data of the component */
104 int x0, y0, x1, y1; /* dimension of the tile : left upper corner (x0, y0) right low corner (x1,y1) */
105 int numcomps; /* number of components in tile */
106 tcd_tilecomp_t *comps; /* Components information */
110 int tw, th; /* number of tiles in width and heigth */
111 tcd_tile_t *tiles; /* Tiles information */
115 * Initialize the tile coder (reuses the memory allocated by tcd_malloc_encode)
117 * cp: coding parameters
118 * curtileno : number that identifies the tile that will be encoded
120 void tcd_init_encode(j2k_image_t * img, j2k_cp_t * cp, int curtileno);
124 * Initialize the tile coder (allocate the memory)
126 * cp: coding parameters
127 * curtileno : number that identifies the tile that will be encoded
129 void tcd_malloc_encode(j2k_image_t * img, j2k_cp_t * cp, int curtileno);
133 * Initialize the tile decoder
135 * cp: coding parameters
137 void tcd_init(j2k_image_t * img, j2k_cp_t * cp);
141 * Free the memory allocated for encoding
143 * cp: coding parameters
144 * curtileno : number that identifies the tile that will be encoded
146 void tcd_free_encode(j2k_image_t * img, j2k_cp_t * cp, int curtileno);
149 * Encode a tile from the raw image into a buffer, format pnm, pgm or ppm
150 * tileno: number that identifies one of the tiles to be encoded
151 * dest: destination buffer
152 * len: length of destination buffer
153 * info_IM: creation of index file
155 int tcd_encode_tile_pxm(int tileno, unsigned char *dest, int len, info_image * info_IM);
159 * Encode a tile from the raw image into a buffer, format pgx
160 * tileno: number that identifies one of the tiles to be encoded
161 * dest: destination buffer
162 * len: length of destination buffer
163 * info_IM: creation of index file
165 int tcd_encode_tile_pgx(int tileno, unsigned char *dest, int len, info_image * info_IM);
168 * Decode a tile from a buffer into a raw image
170 * len: length of the source buffer
171 * tileno: number that identifies the tile that will be decoded
173 int tcd_decode_tile(unsigned char *src, int len, int tileno);