OpenJPEG  2.0.0
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 {
136 
140 typedef enum MCT_ARRAY_TYPE
141 {
146 
147 /* ----------------------------------------------------------------------- */
148 
152 typedef enum T2_MODE {
155 }J2K_T2_MODE;
156 
160 typedef struct opj_stepsize {
166 
170 typedef struct opj_tccp
171 {
198 }
199 opj_tccp_t;
200 
201 
202 
206 typedef struct opj_mct_data
207 {
213 }
215 
220 {
226 }
228 
234 typedef struct opj_tcp
235 {
287 
288 
289  /***** FLAGS *******/
294 } opj_tcp_t;
295 
296 
297 
298 
299 typedef struct opj_encoding_param
300 {
319 }
321 
322 typedef struct opj_decoding_param
323 {
328 }
330 
331 
335 typedef struct opj_cp
336 {
338  /*int img_size;*/
342  OPJ_UINT32 tx0; /* MSD see norm */
344  OPJ_UINT32 ty0; /* MSD see norm */
355 
362 
364 
375 
378 
379  union
380  {
383  }
385 
386 
387 /* UniPG>> */
388 #ifdef USE_JPWL
389 
400  int hprot_MH;
418  int sens_MH;
429 #endif /* USE_JPWL */
430 
431  /******** FLAGS *********/
436 /* <<UniPG */
437 } opj_cp_t;
438 
439 
440 typedef struct opj_j2k_dec
441 {
464 
469 
480 
481 } opj_j2k_dec_t;
482 
483 typedef struct opj_j2k_enc
484 {
487 
490 
504 
508 
509  /* encoded data for a tile */
511 
512  /* size of the encoded_data */
514 
515  /* encoded data for a tile */
517 
518  /* size of the encoded_data */
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*/
534 
535  /* FIXME DOC*/
536  union
537  {
540  }
542 
545 
546  /* pointer to the output image (decoded)*/
548 
551 
554 
557 
560 
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 
591 
592 
593 void opj_j2k_setup_encoder( opj_j2k_t *p_j2k,
594  opj_cparameters_t *parameters,
596  opj_event_mgr_t * p_manager);
597 
602 
603 /* ----------------------------------------------------------------------- */
607 
613  opj_stream_private_t *p_stream,
614  opj_event_mgr_t * p_manager);
615 
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 
645 
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 
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 
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 
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 
754 
763 
773  opj_stream_private_t *p_stream,
774  opj_image_t *p_image,
775  opj_event_mgr_t *p_manager);
776 
777 
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 
785  OPJ_UINT32 res_factor,
786  opj_event_mgr_t * p_manager);
787 
788 
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 
810  opj_event_mgr_t * p_manager );
811 
823  opj_stream_private_t *p_stream,
824  opj_image_t * p_image,
825  opj_event_mgr_t * p_manager);
826 
833  opj_event_mgr_t * p_manager);
834 
836 
837 
838 #endif /* __J2K_H */