OpenJPEG  1.5.1
tcd.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2002-2007, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium
3  * Copyright (c) 2002-2007, Professor Benoit Macq
4  * Copyright (c) 2001-2003, David Janssens
5  * Copyright (c) 2002-2003, Yannick Verschueren
6  * Copyright (c) 2003-2007, Francois-Olivier Devaux and Antonin Descampe
7  * Copyright (c) 2005, Herve Drolon, FreeImage Team
8  * All rights reserved.
9  *
10  * Redistribution and use in source and binary forms, with or without
11  * modification, are permitted provided that the following conditions
12  * are met:
13  * 1. Redistributions of source code must retain the above copyright
14  * notice, this list of conditions and the following disclaimer.
15  * 2. Redistributions in binary form must reproduce the above copyright
16  * notice, this list of conditions and the following disclaimer in the
17  * documentation and/or other materials provided with the distribution.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29  * POSSIBILITY OF SUCH DAMAGE.
30  */
31 #ifndef __TCD_H
32 #define __TCD_H
33 
43 
47 typedef struct opj_tcd_seg {
48  unsigned char** data;
49  int dataindex;
50  int numpasses;
51  int len;
52  int maxpasses;
54  int newlen;
56 
60 typedef struct opj_tcd_pass {
61  int rate;
62  double distortiondec;
63  int term, len;
65 
69 typedef struct opj_tcd_layer {
70  int numpasses; /* Number of passes in the layer */
71  int len; /* len of information */
72  double disto; /* add for index (Cfr. Marcela) */
73  unsigned char *data; /* data */
75 
79 typedef struct opj_tcd_cblk_enc {
80  unsigned char* data; /* Data */
81  opj_tcd_layer_t* layers; /* layer information */
82  opj_tcd_pass_t* passes; /* information about the passes */
83  int x0, y0, x1, y1; /* dimension of the code-blocks : left upper corner (x0, y0) right low corner (x1,y1) */
84  int numbps;
86  int numpasses; /* number of pass already done for the code-blocks */
87  int numpassesinlayers; /* number of passes in the layer */
88  int totalpasses; /* total number of passes */
90 
91 typedef struct opj_tcd_cblk_dec {
92  unsigned char* data; /* Data */
93  opj_tcd_seg_t* segs; /* segments informations */
94  int x0, y0, x1, y1; /* dimension of the code-blocks : left upper corner (x0, y0) right low corner (x1,y1) */
95  int numbps;
97  int len; /* length */
98  int numnewpasses; /* number of pass added to the code-blocks */
99  int numsegs; /* number of segments */
101 
105 typedef struct opj_tcd_precinct {
106  int x0, y0, x1, y1; /* dimension of the precinct : left upper corner (x0, y0) right low corner (x1,y1) */
107  int cw, ch; /* number of precinct in width and heigth */
108  union{ /* code-blocks informations */
111  } cblks;
112  opj_tgt_tree_t *incltree; /* inclusion tree */
113  opj_tgt_tree_t *imsbtree; /* IMSB tree */
115 
119 typedef struct opj_tcd_band {
120  int x0, y0, x1, y1; /* dimension of the subband : left upper corner (x0, y0) right low corner (x1,y1) */
121  int bandno;
122  opj_tcd_precinct_t *precincts; /* precinct information */
123  int numbps;
124  float stepsize;
126 
130 typedef struct opj_tcd_resolution {
131  int x0, y0, x1, y1; /* dimension of the resolution level : left upper corner (x0, y0) right low corner (x1,y1) */
132  int pw, ph;
133  int numbands; /* number sub-band for the resolution level */
134  opj_tcd_band_t bands[3]; /* subband information */
136 
140 typedef struct opj_tcd_tilecomp {
141  int x0, y0, x1, y1; /* dimension of component : left upper corner (x0, y0) right low corner (x1,y1) */
142  int numresolutions; /* number of resolutions level */
143  opj_tcd_resolution_t *resolutions; /* resolutions information */
144  int *data; /* data of the component */
145  int numpix; /* add fixed_quality */
147 
151 typedef struct opj_tcd_tile {
152  int x0, y0, x1, y1; /* dimension of the tile : left upper corner (x0, y0) right low corner (x1,y1) */
153  int numcomps; /* number of components in tile */
154  opj_tcd_tilecomp_t *comps; /* Components information */
155  int numpix; /* add fixed_quality */
156  double distotile; /* add fixed_quality */
157  double distolayer[100]; /* add fixed_quality */
159  int packno;
161 
165 typedef struct opj_tcd_image {
166  int tw, th; /* number of tiles in width and heigth */
167  opj_tcd_tile_t *tiles; /* Tiles information */
169 
173 typedef struct opj_tcd {
175  int tp_pos;
177  int tp_num;
183  int cur_pino;
186 
201 } opj_tcd_t;
202 
205 /* ----------------------------------------------------------------------- */
206 
210 void tcd_dump(FILE *fd, opj_tcd_t *tcd, opj_tcd_image_t *img);
221 void tcd_destroy(opj_tcd_t *tcd);
229 void tcd_malloc_encode(opj_tcd_t *tcd, opj_image_t * image, opj_cp_t * cp, int curtileno);
234 void tcd_free_encode(opj_tcd_t *tcd);
242 void tcd_init_encode(opj_tcd_t *tcd, opj_image_t * image, opj_cp_t * cp, int curtileno);
249 void tcd_malloc_decode(opj_tcd_t *tcd, opj_image_t * image, opj_cp_t * cp);
250 void tcd_malloc_decode_tile(opj_tcd_t *tcd, opj_image_t * image, opj_cp_t * cp, int tileno, opj_codestream_info_t *cstr_info);
251 void tcd_makelayer_fixed(opj_tcd_t *tcd, int layno, int final);
253 void tcd_makelayer(opj_tcd_t *tcd, int layno, double thresh, int final);
254 opj_bool tcd_rateallocate(opj_tcd_t *tcd, unsigned char *dest, int len, opj_codestream_info_t *cstr_info);
264 int tcd_encode_tile(opj_tcd_t *tcd, int tileno, unsigned char *dest, int len, opj_codestream_info_t *cstr_info);
273 opj_bool tcd_decode_tile(opj_tcd_t *tcd, unsigned char *src, int len, int tileno, opj_codestream_info_t *cstr_info);
278 void tcd_free_decode(opj_tcd_t *tcd);
279 void tcd_free_decode_tile(opj_tcd_t *tcd, int tileno);
280 
281 /* ----------------------------------------------------------------------- */
285 
286 #endif /* __TCD_H */
int numbps
Definition: tcd.h:95
int numpassesinlayers
Definition: tcd.h:87
opj_tgt_tree_t * imsbtree
Definition: tcd.h:113
opj_tcd_tile_t * tcd_tile
pointer to the current encoded/decoded tile
Definition: tcd.h:194
double distotile
Definition: tcd.h:156
int x0
Definition: tcd.h:152
opj_common_ptr cinfo
codec context
Definition: tcd.h:185
int y1
Definition: tcd.h:152
unsigned char * data
Definition: tcd.h:73
int numpasses
Definition: tcd.h:50
double distolayer[100]
Definition: tcd.h:157
int numnewpasses
Definition: tcd.h:98
Definition: tcd.h:91
opj_bool tcd_rateallocate(opj_tcd_t *tcd, unsigned char *dest, int len, opj_codestream_info_t *cstr_info)
Definition: tcd.c:1054
void tcd_makelayer_fixed(opj_tcd_t *tcd, int layno, int final)
Definition: tcd.c:888
int cur_totnum_tp
Total number of tileparts of the current tile.
Definition: tcd.h:181
int totalpasses
Definition: tcd.h:88
double encoding_time
Time taken to encode a tile.
Definition: tcd.h:200
opj_tcd_pass_t * passes
Definition: tcd.h:82
int tcd_encode_tile(opj_tcd_t *tcd, int tileno, unsigned char *dest, int len, opj_codestream_info_t *cstr_info)
Encode a tile from the raw image into a buffer.
Definition: tcd.c:1221
opj_tcd_layer_t * layers
Definition: tcd.h:81
Tile coder/decoder.
Definition: tcd.h:173
int tcd_tileno
current encoded/decoded tile
Definition: tcd.h:198
struct opj_tcd_precinct opj_tcd_precinct_t
FIXME: documentation.
int th
Definition: tcd.h:166
opj_image_t * image
image
Definition: tcd.h:190
int y1
Definition: tcd.h:131
struct opj_tcd_cblk_dec opj_tcd_cblk_dec_t
int newlen
Definition: tcd.h:54
struct opj_tcd_cblk_enc opj_tcd_cblk_enc_t
FIXME: documentation.
int len
Definition: tcd.h:71
int cur_pino
Current Packet iterator number.
Definition: tcd.h:183
opj_tcd_tile_t * tiles
Definition: tcd.h:167
FIXME: documentation.
Definition: tcd.h:47
int numpix
Definition: tcd.h:145
int len
Definition: tcd.h:63
int ph
Definition: tcd.h:132
int packno
packet number
Definition: tcd.h:159
int x0
Definition: tcd.h:106
void tcd_init_encode(opj_tcd_t *tcd, opj_image_t *image, opj_cp_t *cp, int curtileno)
Initialize the tile coder (reuses the memory allocated by tcd_malloc_encode)
Definition: tcd.c:401
int x1
Definition: tcd.h:120
int numlenbits
Definition: tcd.h:96
void tcd_malloc_encode(opj_tcd_t *tcd, opj_image_t *image, opj_cp_t *cp, int curtileno)
Initialize the tile coder (allocate the memory)
Definition: tcd.c:126
opj_tcd_tilecomp_t * comps
Definition: tcd.h:154
struct opj_tcd_pass opj_tcd_pass_t
FIXME: documentation.
FIXME: documentation.
Definition: tcd.h:60
Defines image data and characteristics.
Definition: openjpeg.h:533
opj_tcd_resolution_t * resolutions
Definition: tcd.h:143
int x0
Definition: tcd.h:141
int x0
Definition: tcd.h:131
opj_tcd_image_t * tcd_image
info on each image tile
Definition: tcd.h:188
int y0
Definition: tcd.h:131
void tcd_rateallocate_fixed(opj_tcd_t *tcd)
Definition: tcd.c:977
int dataindex
Definition: tcd.h:49
int cur_tp_num
Current tile part number.
Definition: tcd.h:179
void tcd_free_decode_tile(opj_tcd_t *tcd, int tileno)
Definition: tcd.c:1605
double disto
Definition: tcd.h:72
opj_tcd_band_t bands[3]
Definition: tcd.h:134
int term
Definition: tcd.h:63
union opj_tcd_precinct::@0 cblks
int cw
Definition: tcd.h:107
int x1
Definition: tcd.h:83
int tp_num
Tile part number.
Definition: tcd.h:177
int y0
Definition: tcd.h:106
int len
Definition: tcd.h:51
int y1
Definition: tcd.h:94
int pw
Definition: tcd.h:132
unsigned char * data
Definition: tcd.h:92
int numsegs
Definition: tcd.h:99
opj_tcd_precinct_t * precincts
Definition: tcd.h:122
int numbps
Definition: tcd.h:123
FIXME: documentation.
Definition: tcd.h:130
FIXME: documentation.
Definition: tcd.h:165
int ch
Definition: tcd.h:107
void tcd_destroy(opj_tcd_t *tcd)
Destroy a previously created TCD handle.
Definition: tcd.c:117
int x1
Definition: tcd.h:141
int numlenbits
Definition: tcd.h:85
int y1
Definition: tcd.h:141
int y1
Definition: tcd.h:106
int y0
Definition: tcd.h:120
Coding parameters.
Definition: j2k.h:204
struct opj_tcd_image opj_tcd_image_t
FIXME: documentation.
opj_tcd_seg_t * segs
Definition: tcd.h:93
void tcd_dump(FILE *fd, opj_tcd_t *tcd, opj_tcd_image_t *img)
Dump the content of a tcd structure.
Definition: tcd.c:36
FIXME: documentation.
Definition: tcd.h:119
int numpasses
Definition: tcd.h:86
int y0
Definition: tcd.h:83
int tw
Definition: tcd.h:166
void tcd_malloc_decode(opj_tcd_t *tcd, opj_image_t *image, opj_cp_t *cp)
Initialize the tile decoder.
Definition: tcd.c:615
opj_bool tcd_decode_tile(opj_tcd_t *tcd, unsigned char *src, int len, int tileno, opj_codestream_info_t *cstr_info)
Decode a tile from a buffer into a raw image.
Definition: tcd.c:1370
int y1
Definition: tcd.h:120
struct opj_tcd_tile opj_tcd_tile_t
FIXME: documentation.
int numpix
Definition: tcd.h:155
int y0
Definition: tcd.h:152
int len
Definition: tcd.h:97
void tcd_free_encode(opj_tcd_t *tcd)
Free the memory allocated for encoding.
Definition: tcd.c:354
int tp_pos
Position of the tilepart flag in Progression order.
Definition: tcd.h:175
FIXME: documentation.
Definition: tcd.h:79
int opj_bool
Definition: openjpeg.h:63
int numcomps
Definition: tcd.h:153
int numpasses
Definition: tcd.h:70
int x0
Definition: tcd.h:83
int x0
Definition: tcd.h:120
void tcd_free_decode(opj_tcd_t *tcd)
Free the memory allocated for decoding.
Definition: tcd.c:1594
int x1
Definition: tcd.h:152
int x0
Definition: tcd.h:94
opj_tcd_t * tcd_create(opj_common_ptr cinfo)
Create a new TCD handle.
Definition: tcd.c:100
opj_cp_t * cp
coding parameters
Definition: tcd.h:192
int y1
Definition: tcd.h:83
int numnewpasses
Definition: tcd.h:53
void tcd_makelayer(opj_tcd_t *tcd, int layno, double thresh, int final)
Definition: tcd.c:984
FIXME: documentation.
Definition: tcd.h:105
int y0
Definition: tcd.h:94
int numbands
Definition: tcd.h:133
int x1
Definition: tcd.h:106
opj_tgt_tree_t * incltree
Definition: tcd.h:112
FIXME: documentation.
Definition: tcd.h:69
Tile coding parameters : this structure is used to store coding/decoding parameters common to all til...
Definition: j2k.h:166
FIXME: documentation.
Definition: tcd.h:151
double distortiondec
Definition: tcd.h:62
int rate
Definition: tcd.h:61
int x1
Definition: tcd.h:94
float stepsize
Definition: tcd.h:124
FIXME: documentation.
Definition: tcd.h:140
void tcd_malloc_decode_tile(opj_tcd_t *tcd, opj_image_t *image, opj_cp_t *cp, int tileno, opj_codestream_info_t *cstr_info)
Definition: tcd.c:680
opj_tcd_cblk_dec_t * dec
Definition: tcd.h:110
struct opj_tcd_layer opj_tcd_layer_t
FIXME: documentation.
int * data
Definition: tcd.h:144
opj_tcd_cblk_enc_t * enc
Definition: tcd.h:109
unsigned char ** data
Definition: tcd.h:48
int numbps
Definition: tcd.h:84
struct opj_tcd opj_tcd_t
Tile coder/decoder.
opj_tcp_t * tcp
coding/decoding parameters common to all tiles
Definition: tcd.h:196
Index structure of the codestream.
Definition: openjpeg.h:672
struct opj_tcd_seg opj_tcd_seg_t
FIXME: documentation.
int maxpasses
Definition: tcd.h:52
int y0
Definition: tcd.h:141
Tag tree.
Definition: tgt.h:58
int numresolutions
Definition: tcd.h:142
int x1
Definition: tcd.h:131
struct opj_tcd_tilecomp opj_tcd_tilecomp_t
FIXME: documentation.
struct opj_tcd_band opj_tcd_band_t
FIXME: documentation.
Definition: openjpeg.h:430
unsigned char * data
Definition: tcd.h:80
int bandno
Definition: tcd.h:121
struct opj_tcd_resolution opj_tcd_resolution_t
FIXME: documentation.