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
j2k.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) 2006-2007, Parvatha Elangovan
9
* Copyright (c) 2008, Jerome Fimes, Communications & Systemes <jerome.fimes@c-s.fr>
10
* Copyright (c) 2011-2012, Centre National d'Etudes Spatiales (CNES), France
11
* Copyright (c) 2012, CS Systemes d'Information, France
12
*
13
* All rights reserved.
14
*
15
* Redistribution and use in source and binary forms, with or without
16
* modification, are permitted provided that the following conditions
17
* are met:
18
* 1. Redistributions of source code must retain the above copyright
19
* notice, this list of conditions and the following disclaimer.
20
* 2. Redistributions in binary form must reproduce the above copyright
21
* notice, this list of conditions and the following disclaimer in the
22
* documentation and/or other materials provided with the distribution.
23
*
24
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
25
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
28
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
29
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
30
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
31
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
32
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
33
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34
* POSSIBILITY OF SUCH DAMAGE.
35
*/
36
#ifndef __J2K_H
37
#define __J2K_H
38
47
48
#define J2K_CP_CSTY_PRT 0x01
49
#define J2K_CP_CSTY_SOP 0x02
50
#define J2K_CP_CSTY_EPH 0x04
51
#define J2K_CCP_CSTY_PRT 0x01
52
#define J2K_CCP_CBLKSTY_LAZY 0x01
53
#define J2K_CCP_CBLKSTY_RESET 0x02
54
#define J2K_CCP_CBLKSTY_TERMALL 0x04
55
#define J2K_CCP_CBLKSTY_VSC 0x08
56
#define J2K_CCP_CBLKSTY_PTERM 0x10
57
#define J2K_CCP_CBLKSTY_SEGSYM 0x20
58
#define J2K_CCP_QNTSTY_NOQNT 0
59
#define J2K_CCP_QNTSTY_SIQNT 1
60
#define J2K_CCP_QNTSTY_SEQNT 2
61
62
#define OPJ_J2K_DEFAULT_CBLK_DATA_SIZE 8192
63
64
/* ----------------------------------------------------------------------- */
65
66
#define J2K_MS_SOC 0xff4f
67
#define J2K_MS_SOT 0xff90
68
#define J2K_MS_SOD 0xff93
69
#define J2K_MS_EOC 0xffd9
70
#define J2K_MS_SIZ 0xff51
71
#define J2K_MS_COD 0xff52
72
#define J2K_MS_COC 0xff53
73
#define J2K_MS_RGN 0xff5e
74
#define J2K_MS_QCD 0xff5c
75
#define J2K_MS_QCC 0xff5d
76
#define J2K_MS_POC 0xff5f
77
#define J2K_MS_TLM 0xff55
78
#define J2K_MS_PLM 0xff57
79
#define J2K_MS_PLT 0xff58
80
#define J2K_MS_PPM 0xff60
81
#define J2K_MS_PPT 0xff61
82
#define J2K_MS_SOP 0xff91
83
#define J2K_MS_EPH 0xff92
84
#define J2K_MS_CRG 0xff63
85
#define J2K_MS_COM 0xff64
86
#define J2K_MS_CBD 0xff78
87
#define J2K_MS_MCC 0xff75
88
#define J2K_MS_MCT 0xff74
89
#define J2K_MS_MCO 0xff77
91
#define J2K_MS_UNK 0
93
/* UniPG>> */
94
#ifdef USE_JPWL
95
#define J2K_MS_EPC 0xff68
96
#define J2K_MS_EPB 0xff66
97
#define J2K_MS_ESD 0xff67
98
#define J2K_MS_RED 0xff69
99
#endif
/* USE_JPWL */
100
#ifdef USE_JPSEC
101
#define J2K_MS_SEC 0xff65
102
#define J2K_MS_INSEC 0xff94
103
#endif
/* USE_JPSEC */
104
/* <<UniPG */
105
106
/* ----------------------------------------------------------------------- */
107
112
typedef
enum
J2K_STATUS
{
113
J2K_STATE_NONE
= 0x0000,
114
J2K_STATE_MHSOC
= 0x0001,
115
J2K_STATE_MHSIZ
= 0x0002,
116
J2K_STATE_MH
= 0x0004,
117
J2K_STATE_TPHSOT
= 0x0008,
118
J2K_STATE_TPH
= 0x0010,
119
J2K_STATE_MT
= 0x0020,
120
J2K_STATE_NEOC
= 0x0040,
122
J2K_STATE_EOC
= 0x0100,
123
J2K_STATE_ERR
= 0x8000
124
}
J2K_STATUS
;
125
129
typedef
enum
MCT_ELEMENT_TYPE
130
{
131
MCT_TYPE_INT16
= 0,
132
MCT_TYPE_INT32
= 1,
133
MCT_TYPE_FLOAT
= 2,
134
MCT_TYPE_DOUBLE
= 3
135
}
J2K_MCT_ELEMENT_TYPE
;
136
140
typedef
enum
MCT_ARRAY_TYPE
141
{
142
MCT_TYPE_DEPENDENCY
= 0,
143
MCT_TYPE_DECORRELATION
= 1,
144
MCT_TYPE_OFFSET
= 2
145
}
J2K_MCT_ARRAY_TYPE
;
146
147
/* ----------------------------------------------------------------------- */
148
152
typedef
enum
T2_MODE
{
153
THRESH_CALC
= 0,
154
FINAL_PASS
= 1
155
}
J2K_T2_MODE
;
156
160
typedef
struct
opj_stepsize
{
162
OPJ_INT32
expn
;
164
OPJ_INT32
mant
;
165
}
opj_stepsize_t
;
166
170
typedef
struct
opj_tccp
171
{
173
OPJ_UINT32
csty
;
175
OPJ_UINT32
numresolutions
;
177
OPJ_UINT32
cblkw
;
179
OPJ_UINT32
cblkh
;
181
OPJ_UINT32
cblksty
;
183
OPJ_UINT32
qmfbid
;
185
OPJ_UINT32
qntsty
;
187
opj_stepsize_t
stepsizes
[
OPJ_J2K_MAXBANDS
];
189
OPJ_UINT32
numgbits
;
191
OPJ_INT32
roishift
;
193
OPJ_UINT32
prcw
[
OPJ_J2K_MAXRLVLS
];
195
OPJ_UINT32
prch
[
OPJ_J2K_MAXRLVLS
];
197
OPJ_INT32
m_dc_level_shift
;
198
}
199
opj_tccp_t
;
200
201
202
206
typedef
struct
opj_mct_data
207
{
208
J2K_MCT_ELEMENT_TYPE
m_element_type
;
209
J2K_MCT_ARRAY_TYPE
m_array_type
;
210
OPJ_UINT32
m_index
;
211
OPJ_BYTE
*
m_data
;
212
OPJ_UINT32
m_data_size
;
213
}
214
opj_mct_data_t
;
215
219
typedef
struct
opj_simple_mcc_decorrelation_data
220
{
221
OPJ_UINT32
m_index
;
222
OPJ_UINT32
m_nb_comps
;
223
opj_mct_data_t
*
m_decorrelation_array
;
224
opj_mct_data_t
*
m_offset_array
;
225
OPJ_UINT32
m_is_irreversible
: 1;
226
}
227
opj_simple_mcc_decorrelation_data_t
;
228
234
typedef
struct
opj_tcp
235
{
237
OPJ_UINT32
csty
;
239
OPJ_PROG_ORDER
prg
;
241
OPJ_UINT32
numlayers
;
242
OPJ_UINT32
num_layers_to_decode
;
244
OPJ_UINT32
mct
;
246
OPJ_FLOAT32
rates
[100];
248
OPJ_UINT32
numpocs
;
250
opj_poc_t
pocs
[32];
252
OPJ_BYTE
*
ppt_data
;
254
OPJ_BYTE
*
ppt_buffer
;
256
OPJ_UINT32
ppt_data_size
;
258
OPJ_UINT32
ppt_len
;
260
OPJ_FLOAT32
distoratio
[100];
262
opj_tccp_t
*
tccps
;
264
OPJ_UINT32
m_nb_tile_parts
;
266
OPJ_BYTE
*
m_data
;
268
OPJ_UINT32
m_data_size
;
270
OPJ_FLOAT64
*
mct_norms
;
272
OPJ_FLOAT32
*
m_mct_decoding_matrix
;
274
OPJ_FLOAT32
*
m_mct_coding_matrix
;
276
opj_mct_data_t
*
m_mct_records
;
278
OPJ_UINT32
m_nb_mct_records
;
280
OPJ_UINT32
m_nb_max_mct_records
;
282
opj_simple_mcc_decorrelation_data_t
*
m_mcc_records
;
284
OPJ_UINT32
m_nb_mcc_records
;
286
OPJ_UINT32
m_nb_max_mcc_records
;
287
288
289
/***** FLAGS *******/
291
OPJ_UINT32
ppt
: 1;
293
OPJ_UINT32
POC
: 1;
294
}
opj_tcp_t
;
295
296
297
298
299
typedef
struct
opj_encoding_param
300
{
302
OPJ_CINEMA_MODE
m_cinema
;
304
OPJ_UINT32
m_max_comp_size
;
306
OPJ_INT32
m_tp_pos
;
308
OPJ_INT32
*
m_matrice
;
310
OPJ_BYTE
m_tp_flag
;
312
OPJ_UINT32
m_disto_alloc
: 1;
314
OPJ_UINT32
m_fixed_alloc
: 1;
316
OPJ_UINT32
m_fixed_quality
: 1;
318
OPJ_UINT32
m_tp_on
: 1;
319
}
320
opj_encoding_param_t
;
321
322
typedef
struct
opj_decoding_param
323
{
325
OPJ_UINT32
m_reduce
;
327
OPJ_UINT32
m_layer
;
328
}
329
opj_decoding_param_t
;
330
331
335
typedef
struct
opj_cp
336
{
338
/*int img_size;*/
340
OPJ_RSIZ_CAPABILITIES
rsiz
;
342
OPJ_UINT32
tx0
;
/* MSD see norm */
344
OPJ_UINT32
ty0
;
/* MSD see norm */
346
OPJ_UINT32
tdx
;
348
OPJ_UINT32
tdy
;
350
OPJ_CHAR
*
comment
;
352
OPJ_UINT32
tw
;
354
OPJ_UINT32
th
;
355
357
OPJ_BYTE
*
ppm_data
;
359
OPJ_UINT32
ppm_len
;
361
OPJ_UINT32
ppm_data_read
;
362
363
OPJ_BYTE
*
ppm_data_current
;
364
366
OPJ_BYTE
*
ppm_buffer
;
368
OPJ_BYTE
*
ppm_data_first
;
370
OPJ_UINT32
ppm_data_size
;
372
OPJ_INT32
ppm_store
;
374
OPJ_INT32
ppm_previous
;
375
377
opj_tcp_t
*
tcps
;
378
379
union
380
{
381
opj_decoding_param_t
m_dec
;
382
opj_encoding_param_t
m_enc
;
383
}
384
m_specific_param
;
385
386
387
/* UniPG>> */
388
#ifdef USE_JPWL
389
390
OPJ_BOOL
epc_on
;
392
OPJ_BOOL
epb_on
;
394
OPJ_BOOL
esd_on
;
396
OPJ_BOOL
info_on
;
398
OPJ_BOOL
red_on
;
400
int
hprot_MH
;
402
int
hprot_TPH_tileno
[
JPWL_MAX_NO_TILESPECS
];
404
int
hprot_TPH
[
JPWL_MAX_NO_TILESPECS
];
406
int
pprot_tileno
[
JPWL_MAX_NO_PACKSPECS
];
408
int
pprot_packno
[
JPWL_MAX_NO_PACKSPECS
];
410
int
pprot
[
JPWL_MAX_NO_PACKSPECS
];
412
int
sens_size
;
414
int
sens_addr
;
416
int
sens_range
;
418
int
sens_MH
;
420
int
sens_TPH_tileno
[
JPWL_MAX_NO_TILESPECS
];
422
int
sens_TPH
[
JPWL_MAX_NO_TILESPECS
];
424
OPJ_BOOL
correct
;
426
int
exp_comps
;
428
OPJ_UINT32
max_tiles
;
429
#endif
/* USE_JPWL */
430
431
/******** FLAGS *********/
433
OPJ_UINT32
ppm
: 1;
435
OPJ_UINT32
m_is_decoder
: 1;
436
/* <<UniPG */
437
}
opj_cp_t
;
438
439
440
typedef
struct
opj_j2k_dec
441
{
443
OPJ_UINT32
m_state
;
447
opj_tcp_t
*
m_default_tcp
;
448
OPJ_BYTE
*
m_header_data
;
449
OPJ_UINT32
m_header_data_size
;
451
OPJ_UINT32
m_sot_length
;
453
OPJ_UINT32
m_start_tile_x
;
454
OPJ_UINT32
m_start_tile_y
;
455
OPJ_UINT32
m_end_tile_x
;
456
OPJ_UINT32
m_end_tile_y
;
460
OPJ_UINT32
m_DA_x0
;
461
OPJ_UINT32
m_DA_y0
;
462
OPJ_UINT32
m_DA_x1
;
463
OPJ_UINT32
m_DA_y1
;
464
466
OPJ_INT32
m_tile_ind_to_dec
;
468
OPJ_OFF_T
m_last_sot_read_pos
;
469
475
OPJ_BOOL
m_last_tile_part
;
477
OPJ_UINT32
m_can_decode
: 1;
478
OPJ_UINT32
m_discard_tiles
: 1;
479
OPJ_UINT32
m_skip_data
: 1;
480
481
}
opj_j2k_dec_t
;
482
483
typedef
struct
opj_j2k_enc
484
{
486
OPJ_UINT32
m_current_poc_tile_part_number
;
/* tp_num */
487
489
OPJ_UINT32
m_current_tile_part_number
;
/*cur_tp_num */
490
495
OPJ_OFF_T
m_tlm_start
;
499
OPJ_BYTE
*
m_tlm_sot_offsets_buffer
;
503
OPJ_BYTE
*
m_tlm_sot_offsets_current
;
504
507
OPJ_UINT32
m_total_tile_parts
;
/* totnum_tp */
508
509
/* encoded data for a tile */
510
OPJ_BYTE
*
m_encoded_tile_data
;
511
512
/* size of the encoded_data */
513
OPJ_UINT32
m_encoded_tile_size
;
514
515
/* encoded data for a tile */
516
OPJ_BYTE
*
m_header_tile_data
;
517
518
/* size of the encoded_data */
519
OPJ_UINT32
m_header_tile_data_size
;
520
521
522
}
opj_j2k_enc_t
;
523
524
525
526
struct
opj_tcd
;
530
typedef
struct
opj_j2k
531
{
532
/* J2K codestream is decoded*/
533
OPJ_BOOL
m_is_decoder
;
534
535
/* FIXME DOC*/
536
union
537
{
538
opj_j2k_dec_t
m_decoder
;
539
opj_j2k_enc_t
m_encoder
;
540
}
541
m_specific_param
;
542
544
opj_image_t
*
m_private_image
;
545
546
/* pointer to the output image (decoded)*/
547
opj_image_t
*
m_output_image
;
548
550
opj_cp_t
m_cp
;
551
553
opj_procedure_list_t
*
m_procedure_list
;
554
556
opj_procedure_list_t
*
m_validation_list
;
557
559
opj_codestream_index_t
*
cstr_index
;
560
562
OPJ_UINT32
m_current_tile_number
;
563
565
struct
opj_tcd
*
m_tcd
;
566
567
}
568
opj_j2k_t
;
569
570
571
572
575
/* ----------------------------------------------------------------------- */
576
583
void
opj_j2k_setup_decoder
(
opj_j2k_t
*j2k,
opj_dparameters_t
*parameters);
584
590
opj_j2k_t
*
opj_j2k_create_compress
(
void
);
591
592
593
void
opj_j2k_setup_encoder
(
opj_j2k_t
*p_j2k,
594
opj_cparameters_t
*parameters,
595
opj_image_t
*
image
,
596
opj_event_mgr_t
* p_manager);
597
601
char
*
opj_j2k_convert_progression_order
(
OPJ_PROG_ORDER
prg_order);
602
603
/* ----------------------------------------------------------------------- */
607
612
OPJ_BOOL
opj_j2k_end_decompress
(
opj_j2k_t
*j2k,
613
opj_stream_private_t
*p_stream,
614
opj_event_mgr_t
* p_manager);
615
626
OPJ_BOOL
opj_j2k_read_header
(
opj_stream_private_t
*p_stream,
627
opj_j2k_t
* p_j2k,
628
opj_image_t
** p_image,
629
opj_event_mgr_t
* p_manager );
630
631
637
void
opj_j2k_destroy
(
opj_j2k_t
*p_j2k);
638
644
void
j2k_destroy_cstr_index
(
opj_codestream_index_t
*p_cstr_ind);
645
655
OPJ_BOOL
opj_j2k_decode_tile
(
opj_j2k_t
* p_j2k,
656
OPJ_UINT32
p_tile_index,
657
OPJ_BYTE
* p_data,
658
OPJ_UINT32
p_data_size,
659
opj_stream_private_t
*p_stream,
660
opj_event_mgr_t
* p_manager );
661
676
OPJ_BOOL
opj_j2k_read_tile_header
(
opj_j2k_t
* p_j2k,
677
OPJ_UINT32
* p_tile_index,
678
OPJ_UINT32
* p_data_size,
679
OPJ_INT32
* p_tile_x0,
680
OPJ_INT32
* p_tile_y0,
681
OPJ_INT32
* p_tile_x1,
682
OPJ_INT32
* p_tile_y1,
683
OPJ_UINT32
* p_nb_comps,
684
OPJ_BOOL
* p_go_on,
685
opj_stream_private_t
*p_stream,
686
opj_event_mgr_t
* p_manager );
687
688
702
OPJ_BOOL
opj_j2k_set_decode_area
(
opj_j2k_t
*p_j2k,
703
opj_image_t
* p_image,
704
OPJ_INT32
p_start_x,
OPJ_INT32
p_start_y,
705
OPJ_INT32
p_end_x,
OPJ_INT32
p_end_y,
706
opj_event_mgr_t
* p_manager );
707
713
opj_j2k_t
*
opj_j2k_create_decompress
(
void
);
714
715
724
void
j2k_dump
(
opj_j2k_t
* p_j2k,
OPJ_INT32
flag, FILE* out_stream);
725
726
727
735
void
j2k_dump_image_header
(
opj_image_t
*
image
,
OPJ_BOOL
dev_dump_flag, FILE* out_stream);
736
744
void
j2k_dump_image_comp_header
(
opj_image_comp_t
* comp,
OPJ_BOOL
dev_dump_flag, FILE* out_stream);
745
753
opj_codestream_info_v2_t
*
j2k_get_cstr_info
(
opj_j2k_t
* p_j2k);
754
762
opj_codestream_index_t
*
j2k_get_cstr_index
(
opj_j2k_t
* p_j2k);
763
772
OPJ_BOOL
opj_j2k_decode
(
opj_j2k_t
*j2k,
773
opj_stream_private_t
*p_stream,
774
opj_image_t
*p_image,
775
opj_event_mgr_t
*p_manager);
776
777
778
OPJ_BOOL
opj_j2k_get_tile
(
opj_j2k_t
*p_j2k,
779
opj_stream_private_t
*p_stream,
780
opj_image_t
* p_image,
781
opj_event_mgr_t
* p_manager,
782
OPJ_UINT32
tile_index );
783
784
OPJ_BOOL
opj_j2k_set_decoded_resolution_factor
(
opj_j2k_t
*p_j2k,
785
OPJ_UINT32
res_factor,
786
opj_event_mgr_t
* p_manager);
787
788
798
OPJ_BOOL
opj_j2k_write_tile
(
opj_j2k_t
* p_j2k,
799
OPJ_UINT32
p_tile_index,
800
OPJ_BYTE
* p_data,
801
OPJ_UINT32
p_data_size,
802
opj_stream_private_t
*p_stream,
803
opj_event_mgr_t
* p_manager );
804
808
OPJ_BOOL
opj_j2k_encode
(
opj_j2k_t
* p_j2k,
809
opj_stream_private_t
*cio,
810
opj_event_mgr_t
* p_manager );
811
822
OPJ_BOOL
opj_j2k_start_compress
(
opj_j2k_t
*p_j2k,
823
opj_stream_private_t
*p_stream,
824
opj_image_t
* p_image,
825
opj_event_mgr_t
* p_manager);
826
831
OPJ_BOOL
opj_j2k_end_compress
(
opj_j2k_t
*p_j2k,
832
opj_stream_private_t
*cio,
833
opj_event_mgr_t
* p_manager);
834
835
OPJ_BOOL
opj_j2k_setup_mct_encoding
(
opj_tcp_t
* p_tcp,
opj_image_t
* p_image);
836
837
838
#endif
/* __J2K_H */
Generated by
1.8.3.1