OpenJPEG
2.0.0
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
home
makerpm
rpmbuild
BUILD
openjp2-2.0.0.2354
src
lib
openjp2
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
* Copyright (c) 2008;2011-2012, Centre National d'Etudes Spatiales (CNES), France
9
* Copyright (c) 2012, CS Systemes d'Information, France
10
* All rights reserved.
11
*
12
* Redistribution and use in source and binary forms, with or without
13
* modification, are permitted provided that the following conditions
14
* are met:
15
* 1. Redistributions of source code must retain the above copyright
16
* notice, this list of conditions and the following disclaimer.
17
* 2. Redistributions in binary form must reproduce the above copyright
18
* notice, this list of conditions and the following disclaimer in the
19
* documentation and/or other materials provided with the distribution.
20
*
21
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
22
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
25
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31
* POSSIBILITY OF SUCH DAMAGE.
32
*/
33
#ifndef __TCD_H
34
#define __TCD_H
35
45
49
typedef
struct
opj_tcd_seg
{
50
OPJ_BYTE
**
data
;
51
OPJ_UINT32
dataindex
;
52
OPJ_UINT32
numpasses
;
53
OPJ_UINT32
real_num_passes
;
54
OPJ_UINT32
len
;
55
OPJ_UINT32
maxpasses
;
56
OPJ_UINT32
numnewpasses
;
57
OPJ_UINT32
newlen
;
58
}
opj_tcd_seg_t
;
59
63
typedef
struct
opj_tcd_pass
{
64
OPJ_UINT32
rate
;
65
OPJ_FLOAT64
distortiondec
;
66
OPJ_UINT32
len
;
67
OPJ_UINT32
term
: 1;
68
}
opj_tcd_pass_t
;
69
73
typedef
struct
opj_tcd_layer
{
74
OPJ_UINT32
numpasses
;
/* Number of passes in the layer */
75
OPJ_UINT32
len
;
/* len of information */
76
OPJ_FLOAT64
disto
;
/* add for index (Cfr. Marcela) */
77
OPJ_BYTE
*
data
;
/* data */
78
}
opj_tcd_layer_t
;
79
83
typedef
struct
opj_tcd_cblk_enc
{
84
OPJ_BYTE
*
data
;
/* Data */
85
opj_tcd_layer_t
*
layers
;
/* layer information */
86
opj_tcd_pass_t
*
passes
;
/* information about the passes */
87
OPJ_INT32
x0
,
y0
,
x1
,
y1
;
/* dimension of the code-blocks : left upper corner (x0, y0) right low corner (x1,y1) */
88
OPJ_UINT32
numbps
;
89
OPJ_UINT32
numlenbits
;
90
OPJ_UINT32
numpasses
;
/* number of pass already done for the code-blocks */
91
OPJ_UINT32
numpassesinlayers
;
/* number of passes in the layer */
92
OPJ_UINT32
totalpasses
;
/* total number of passes */
93
}
opj_tcd_cblk_enc_t
;
94
95
96
typedef
struct
opj_tcd_cblk_dec
{
97
OPJ_BYTE
*
data
;
/* Data */
98
opj_tcd_seg_t
*
segs
;
/* segments information */
99
OPJ_INT32
x0
,
y0
,
x1
,
y1
;
/* position of the code-blocks : left upper corner (x0, y0) right low corner (x1,y1) */
100
OPJ_UINT32
numbps
;
101
OPJ_UINT32
numlenbits
;
102
OPJ_UINT32
data_max_size
;
/* Size of allocated data buffer */
103
OPJ_UINT32
data_current_size
;
/* Size of used data buffer */
104
OPJ_UINT32
numnewpasses
;
/* number of pass added to the code-blocks */
105
OPJ_UINT32
numsegs
;
/* number of segments */
106
OPJ_UINT32
real_num_segs
;
107
OPJ_UINT32
m_current_max_segs
;
108
}
opj_tcd_cblk_dec_t
;
109
113
typedef
struct
opj_tcd_precinct
{
114
OPJ_INT32
x0
,
y0
,
x1
,
y1
;
/* dimension of the precinct : left upper corner (x0, y0) right low corner (x1,y1) */
115
OPJ_UINT32
cw
,
ch
;
/* number of precinct in width and height */
116
union
{
/* code-blocks information */
117
opj_tcd_cblk_enc_t
*
enc
;
118
opj_tcd_cblk_dec_t
*
dec
;
119
}
cblks
;
120
OPJ_UINT32
block_size
;
/* size taken by cblks (in bytes) */
121
opj_tgt_tree_t
*
incltree
;
/* inclusion tree */
122
opj_tgt_tree_t
*
imsbtree
;
/* IMSB tree */
123
}
opj_tcd_precinct_t
;
124
128
typedef
struct
opj_tcd_band
{
129
OPJ_INT32
x0
,
y0
,
x1
,
y1
;
/* dimension of the subband : left upper corner (x0, y0) right low corner (x1,y1) */
130
OPJ_UINT32
bandno
;
131
opj_tcd_precinct_t
*
precincts
;
/* precinct information */
132
OPJ_UINT32
precincts_data_size
;
/* size of data taken by precincts */
133
OPJ_INT32
numbps
;
134
OPJ_FLOAT32
stepsize
;
135
}
opj_tcd_band_t
;
136
140
typedef
struct
opj_tcd_resolution
{
141
OPJ_INT32
x0
,
y0
,
x1
,
y1
;
/* dimension of the resolution level : left upper corner (x0, y0) right low corner (x1,y1) */
142
OPJ_UINT32
pw
,
ph
;
143
OPJ_UINT32
numbands
;
/* number sub-band for the resolution level */
144
opj_tcd_band_t
bands
[3];
/* subband information */
145
}
opj_tcd_resolution_t
;
146
150
typedef
struct
opj_tcd_tilecomp
151
{
152
OPJ_INT32
x0
,
y0
,
x1
,
y1
;
/* dimension of component : left upper corner (x0, y0) right low corner (x1,y1) */
153
OPJ_UINT32
numresolutions
;
/* number of resolutions level */
154
OPJ_UINT32
minimum_num_resolutions
;
/* number of resolutions level to decode (at max)*/
155
opj_tcd_resolution_t
*
resolutions
;
/* resolutions information */
156
OPJ_UINT32
resolutions_size
;
/* size of data for resolutions (in bytes) */
157
OPJ_INT32
*
data
;
/* data of the component */
158
OPJ_UINT32
data_size
;
/* size of the data of the component */
159
OPJ_INT32
numpix
;
/* add fixed_quality */
160
}
opj_tcd_tilecomp_t
;
161
162
166
typedef
struct
opj_tcd_tile
{
167
OPJ_INT32
x0
,
y0
,
x1
,
y1
;
/* dimension of the tile : left upper corner (x0, y0) right low corner (x1,y1) */
168
OPJ_UINT32
numcomps
;
/* number of components in tile */
169
opj_tcd_tilecomp_t
*
comps
;
/* Components information */
170
OPJ_INT32
numpix
;
/* add fixed_quality */
171
OPJ_FLOAT64
distotile
;
/* add fixed_quality */
172
OPJ_FLOAT64
distolayer
[100];
/* add fixed_quality */
173
OPJ_UINT32
packno
;
/* packet number */
174
}
opj_tcd_tile_t
;
175
179
typedef
struct
opj_tcd_image
180
{
181
opj_tcd_tile_t
*
tiles
;
/* Tiles information */
182
}
183
opj_tcd_image_t
;
184
185
189
typedef
struct
opj_tcd
190
{
192
OPJ_INT32
tp_pos
;
194
OPJ_UINT32
tp_num
;
196
OPJ_UINT32
cur_tp_num
;
198
OPJ_UINT32
cur_totnum_tp
;
200
OPJ_UINT32
cur_pino
;
202
opj_tcd_image_t
*
tcd_image
;
204
opj_image_t
*
image
;
206
opj_cp_t
*
cp
;
208
opj_tcp_t
*
tcp
;
210
OPJ_UINT32
tcd_tileno
;
212
OPJ_UINT32
m_is_decoder
: 1;
213
}
opj_tcd_t
;
214
217
/* ----------------------------------------------------------------------- */
218
222
/*void tcd_dump(FILE *fd, opj_tcd_t *tcd, opj_tcd_image_t *img);*/
/* TODO MSD shoul use the new v2 structures */
223
229
opj_tcd_t
*
opj_tcd_create
(
OPJ_BOOL
p_is_decoder);
230
235
void
opj_tcd_destroy
(
opj_tcd_t
*tcd);
236
245
OPJ_BOOL
opj_tcd_init
(
opj_tcd_t
*p_tcd,
246
opj_image_t
* p_image,
247
opj_cp_t
* p_cp );
248
258
OPJ_BOOL
opj_tcd_init_decode_tile
(
opj_tcd_t
*p_tcd,
OPJ_UINT32
p_tile_no);
259
260
void
opj_tcd_makelayer_fixed
(
opj_tcd_t
*tcd,
OPJ_UINT32
layno,
OPJ_UINT32
final
);
261
262
void
opj_tcd_rateallocate_fixed
(
opj_tcd_t
*tcd);
263
264
void
opj_tcd_makelayer
(
opj_tcd_t
*tcd,
265
OPJ_UINT32
layno,
266
OPJ_FLOAT64
thresh,
267
OPJ_UINT32
final
);
268
269
OPJ_BOOL
opj_tcd_rateallocate
(
opj_tcd_t
*tcd,
270
OPJ_BYTE
*dest,
271
OPJ_UINT32
* p_data_written,
272
OPJ_UINT32
len,
273
opj_codestream_info_t
*cstr_info);
274
278
OPJ_UINT32
opj_tcd_get_decoded_tile_size
(
opj_tcd_t
*p_tcd );
279
290
OPJ_BOOL
opj_tcd_encode_tile
(
opj_tcd_t
*p_tcd,
291
OPJ_UINT32
p_tile_no,
292
OPJ_BYTE
*p_dest,
293
OPJ_UINT32
* p_data_written,
294
OPJ_UINT32
p_len,
295
struct
opj_codestream_info
*p_cstr_info);
296
297
306
OPJ_BOOL
opj_tcd_decode_tile
(
opj_tcd_t
*tcd,
307
OPJ_BYTE
*src,
308
OPJ_UINT32
len,
309
OPJ_UINT32
tileno,
310
opj_codestream_index_t
*cstr_info);
311
312
316
OPJ_BOOL
opj_tcd_update_tile_data
(
opj_tcd_t
*p_tcd,
317
OPJ_BYTE
* p_dest,
318
OPJ_UINT32
p_dest_length );
319
323
OPJ_UINT32
opj_tcd_get_encoded_tile_size
(
opj_tcd_t
*p_tcd );
324
333
OPJ_BOOL
opj_tcd_init_encode_tile
(
opj_tcd_t
*p_tcd,
334
OPJ_UINT32
p_tile_no );
335
339
OPJ_BOOL
opj_tcd_copy_tile_data
(
opj_tcd_t
*p_tcd,
340
OPJ_BYTE
* p_src,
341
OPJ_UINT32
p_src_length );
342
343
/* ----------------------------------------------------------------------- */
347
348
#endif
/* __TCD_H */
Generated by
1.8.3.1