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) */
60 int lastbp; /* Add antonin : quantizbug1 */
63 int numpasses; /* number of pass already done for the code-blocks */
64 int numnewpasses; /* number of pass added to the code-blocks */
65 int numsegs; /* number of segments */
66 tcd_seg_t segs[100]; /* segments informations */
67 unsigned char data[8192]; /* Data */
68 int numpassesinlayers; /* number of passes in the layer */
69 tcd_layer_t layers[100]; /* layer information */
70 int totalpasses; /* total number of passes */
71 tcd_pass_t passes[100]; /* information about the passes */
75 int x0, y0, x1, y1; /* dimension of the precinct : left upper corner (x0, y0) right low corner (x1,y1) */
76 int cw, ch; /* number of precinct in width and heigth */
77 tcd_cblk_t *cblks; /* code-blocks informations */
78 tgt_tree_t *incltree; /* inclusion tree */
79 tgt_tree_t *imsbtree; /* IMSB tree */
83 int x0, y0, x1, y1; /* dimension of the subband : left upper corner (x0, y0) right low corner (x1,y1) */
85 tcd_precinct_t *precincts; /* precinct information */
91 int x0, y0, x1, y1; /* dimension of the resolution level : left upper corner (x0, y0) right low corner (x1,y1) */
93 int numbands; /* number sub-band for the resolution level */
94 tcd_band_t bands[3]; /* subband information */
98 int x0, y0, x1, y1; /* dimension of component : left upper corner (x0, y0) right low corner (x1,y1) */
99 int numresolutions; /* number of resolutions level */
100 tcd_resolution_t *resolutions; /* resolutions information */
101 int *data; /* data of the component */
102 int nbpix; /* add fixed_quality */
106 int x0, y0, x1, y1; /* dimension of the tile : left upper corner (x0, y0) right low corner (x1,y1) */
107 int numcomps; /* number of components in tile */
108 tcd_tilecomp_t *comps; /* Components information */
109 int nbpix; /* add fixed_quality */
110 double distotile; /* add fixed_quality */
111 double distolayer[100]; /* add fixed_quality */
115 int tw, th; /* number of tiles in width and heigth */
116 tcd_tile_t *tiles; /* Tiles information */
120 * Initialize the tile coder (reuses the memory allocated by tcd_malloc_encode)
122 * cp: coding parameters
123 * curtileno : number that identifies the tile that will be encoded
125 void tcd_init_encode(j2k_image_t * img, j2k_cp_t * cp, int curtileno);
129 * Initialize the tile coder (allocate the memory)
131 * cp: coding parameters
132 * curtileno : number that identifies the tile that will be encoded
134 void tcd_malloc_encode(j2k_image_t * img, j2k_cp_t * cp, int curtileno);
138 * Initialize the tile decoder
140 * cp: coding parameters
142 void tcd_init(j2k_image_t * img, j2k_cp_t * cp);
146 * Free the memory allocated for encoding
148 * cp: coding parameters
149 * curtileno : number that identifies the tile that will be encoded
151 void tcd_free_encode(j2k_image_t * img, j2k_cp_t * cp, int curtileno);
154 * Encode a tile from the raw image into a buffer, format pnm, pgm or ppm
155 * tileno: number that identifies one of the tiles to be encoded
156 * dest: destination buffer
157 * len: length of destination buffer
158 * info_IM: creation of index file
160 int tcd_encode_tile_pxm(int tileno, unsigned char *dest, int len,
161 info_image * info_IM);
165 * Encode a tile from the raw image into a buffer, format pgx
166 * tileno: number that identifies one of the tiles to be encoded
167 * dest: destination buffer
168 * len: length of destination buffer
169 * info_IM: creation of index file
171 int tcd_encode_tile_pgx(int tileno, unsigned char *dest, int len,
172 info_image * info_IM);
175 * Decode a tile from a buffer into a raw image
177 * len: length of the source buffer
178 * tileno: number that identifies the tile that will be decoded
180 int tcd_decode_tile(unsigned char *src, int len, int tileno);