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 */
101 int nbpix; /* add fixed_quality */
105 int x0, y0, x1, y1; /* dimension of the tile : left upper corner (x0, y0) right low corner (x1,y1) */
106 int numcomps; /* number of components in tile */
107 tcd_tilecomp_t *comps; /* Components information */
108 int nbpix; /* add fixed_quality */
109 double distotile; /* add fixed_quality */
110 double distolayer[100]; /* add fixed_quality */
114 int tw, th; /* number of tiles in width and heigth */
115 tcd_tile_t *tiles; /* Tiles information */
119 * Initialize the tile coder (reuses the memory allocated by tcd_malloc_encode)
121 * cp: coding parameters
122 * curtileno : number that identifies the tile that will be encoded
124 void tcd_init_encode(j2k_image_t * img, j2k_cp_t * cp, int curtileno);
128 * Initialize the tile coder (allocate the memory)
130 * cp: coding parameters
131 * curtileno : number that identifies the tile that will be encoded
133 void tcd_malloc_encode(j2k_image_t * img, j2k_cp_t * cp, int curtileno);
137 * Initialize the tile decoder
139 * cp: coding parameters
141 void tcd_init(j2k_image_t * img, j2k_cp_t * cp);
145 * Free the memory allocated for encoding
147 * cp: coding parameters
148 * curtileno : number that identifies the tile that will be encoded
150 void tcd_free_encode(j2k_image_t * img, j2k_cp_t * cp, int curtileno);
153 * Encode a tile from the raw image into a buffer, format pnm, pgm or ppm
154 * tileno: number that identifies one of the tiles to be encoded
155 * dest: destination buffer
156 * len: length of destination buffer
157 * info_IM: creation of index file
159 int tcd_encode_tile_pxm(int tileno, unsigned char *dest, int len,
160 info_image * info_IM);
164 * Encode a tile from the raw image into a buffer, format pgx
165 * tileno: number that identifies one of the tiles to be encoded
166 * dest: destination buffer
167 * len: length of destination buffer
168 * info_IM: creation of index file
170 int tcd_encode_tile_pgx(int tileno, unsigned char *dest, int len,
171 info_image * info_IM);
174 * Decode a tile from a buffer into a raw image
176 * len: length of the source buffer
177 * tileno: number that identifies the tile that will be decoded
179 int tcd_decode_tile(unsigned char *src, int len, int tileno);
181 void tcd_dec_release();