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