OpenJPEG  2.5.3
j2k.h
Go to the documentation of this file.
1 /*
2  * The copyright in this software is being made available under the 2-clauses
3  * BSD License, included below. This software may be subject to other third
4  * party and contributor rights, including patent rights, and no such rights
5  * are granted under this license.
6  *
7  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
8  * Copyright (c) 2002-2014, Professor Benoit Macq
9  * Copyright (c) 2001-2003, David Janssens
10  * Copyright (c) 2002-2003, Yannick Verschueren
11  * Copyright (c) 2003-2007, Francois-Olivier Devaux
12  * Copyright (c) 2003-2014, Antonin Descampe
13  * Copyright (c) 2005, Herve Drolon, FreeImage Team
14  * Copyright (c) 2006-2007, Parvatha Elangovan
15  * Copyright (c) 2008, Jerome Fimes, Communications & Systemes <jerome.fimes@c-s.fr>
16  * Copyright (c) 2011-2012, Centre National d'Etudes Spatiales (CNES), France
17  * Copyright (c) 2012, CS Systemes d'Information, France
18  *
19  * All rights reserved.
20  *
21  * Redistribution and use in source and binary forms, with or without
22  * modification, are permitted provided that the following conditions
23  * are met:
24  * 1. Redistributions of source code must retain the above copyright
25  * notice, this list of conditions and the following disclaimer.
26  * 2. Redistributions in binary form must reproduce the above copyright
27  * notice, this list of conditions and the following disclaimer in the
28  * documentation and/or other materials provided with the distribution.
29  *
30  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
31  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
32  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
33  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
34  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
35  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
36  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
37  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
38  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
39  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
40  * POSSIBILITY OF SUCH DAMAGE.
41  */
42 #ifndef OPJ_J2K_H
43 #define OPJ_J2K_H
44 
53 
54 #define J2K_CP_CSTY_PRT 0x01
55 #define J2K_CP_CSTY_SOP 0x02
56 #define J2K_CP_CSTY_EPH 0x04
57 #define J2K_CCP_CSTY_PRT 0x01
58 #define J2K_CCP_CBLKSTY_LAZY 0x01
59 #define J2K_CCP_CBLKSTY_RESET 0x02
60 #define J2K_CCP_CBLKSTY_TERMALL 0x04
61 #define J2K_CCP_CBLKSTY_VSC 0x08
62 #define J2K_CCP_CBLKSTY_PTERM 0x10
63 #define J2K_CCP_CBLKSTY_SEGSYM 0x20
64 #define J2K_CCP_CBLKSTY_HT 0x40
65 #define J2K_CCP_CBLKSTY_HTMIXED 0x80
66 #define J2K_CCP_QNTSTY_NOQNT 0
67 #define J2K_CCP_QNTSTY_SIQNT 1
68 #define J2K_CCP_QNTSTY_SEQNT 2
69 
70 /* ----------------------------------------------------------------------- */
71 
72 #define J2K_MS_SOC 0xff4f
73 #define J2K_MS_SOT 0xff90
74 #define J2K_MS_SOD 0xff93
75 #define J2K_MS_EOC 0xffd9
76 #define J2K_MS_CAP 0xff50
77 #define J2K_MS_SIZ 0xff51
78 #define J2K_MS_COD 0xff52
79 #define J2K_MS_COC 0xff53
80 #define J2K_MS_CPF 0xff59
81 #define J2K_MS_RGN 0xff5e
82 #define J2K_MS_QCD 0xff5c
83 #define J2K_MS_QCC 0xff5d
84 #define J2K_MS_POC 0xff5f
85 #define J2K_MS_TLM 0xff55
86 #define J2K_MS_PLM 0xff57
87 #define J2K_MS_PLT 0xff58
88 #define J2K_MS_PPM 0xff60
89 #define J2K_MS_PPT 0xff61
90 #define J2K_MS_SOP 0xff91
91 #define J2K_MS_EPH 0xff92
92 #define J2K_MS_CRG 0xff63
93 #define J2K_MS_COM 0xff64
94 #define J2K_MS_CBD 0xff78
95 #define J2K_MS_MCC 0xff75
96 #define J2K_MS_MCT 0xff74
97 #define J2K_MS_MCO 0xff77
99 #define J2K_MS_UNK 0
101 /* UniPG>> */
102 #ifdef USE_JPWL
103 #define J2K_MS_EPC 0xff68
104 #define J2K_MS_EPB 0xff66
105 #define J2K_MS_ESD 0xff67
106 #define J2K_MS_RED 0xff69
107 #endif /* USE_JPWL */
108 #ifdef USE_JPSEC
109 #define J2K_MS_SEC 0xff65
110 #define J2K_MS_INSEC 0xff94
111 #endif /* USE_JPSEC */
112 /* <<UniPG */
113 
114 #define J2K_MAX_POCS 32
116 #define J2K_TCD_MATRIX_MAX_LAYER_COUNT 10
117 #define J2K_TCD_MATRIX_MAX_RESOLUTION_COUNT 10
118 
119 /* ----------------------------------------------------------------------- */
120 
125 typedef enum J2K_STATUS {
126  J2K_STATE_NONE = 0x0000,
127  J2K_STATE_MHSOC = 0x0001,
128  J2K_STATE_MHSIZ = 0x0002,
129  J2K_STATE_MH = 0x0004,
130  J2K_STATE_TPHSOT = 0x0008,
131  J2K_STATE_TPH = 0x0010,
132  J2K_STATE_MT = 0x0020,
133  J2K_STATE_NEOC = 0x0040,
134  J2K_STATE_DATA = 0x0080,
136  J2K_STATE_EOC = 0x0100,
137  J2K_STATE_ERR = 0x8000
138 } J2K_STATUS;
139 
143 typedef enum MCT_ELEMENT_TYPE {
149 
153 typedef enum MCT_ARRAY_TYPE {
158 
159 /* ----------------------------------------------------------------------- */
160 
164 typedef enum T2_MODE {
167 } J2K_T2_MODE;
168 
172 typedef struct opj_stepsize {
178 
182 typedef struct opj_tccp {
209 }
210 opj_tccp_t;
211 
212 
213 
217 typedef struct opj_mct_data {
223 }
225 
235 }
237 
238 typedef struct opj_ppx_struct {
239  OPJ_BYTE* m_data; /* m_data == NULL => Zppx not read yet */
241 } opj_ppx;
242 
248 typedef struct opj_tcp {
264 
269 
308 
309 
310  /***** FLAGS *******/
317 } opj_tcp_t;
318 
319 
323 typedef enum {
328 
329 
330 typedef struct opj_encoding_param {
343 }
345 
346 typedef struct opj_decoding_param {
351 }
353 
354 
358 typedef struct opj_cp {
360  /*int img_size;*/
364  OPJ_UINT32 tx0; /* MSD see norm */
366  OPJ_UINT32 ty0; /* MSD see norm */
377 
382 
389 
391 
402 
405 
406  union {
409  }
411 
414 
415  /* UniPG>> */
416 #ifdef USE_JPWL
417 
428  int hprot_MH;
446  int sens_MH;
457 #endif /* USE_JPWL */
458 
459  /******** FLAGS *********/
466  /* <<UniPG */
467 } opj_cp_t;
468 
477 
479 typedef struct opj_j2k_tlm_info {
484 
487 
488 typedef struct opj_j2k_dec {
504 
509 
516 
519 
521 
525  /* Current index in m_intersecting_tile_parts_offset[] to seek to */
527  /* Number of elements of m_intersecting_tile_parts_offset[] */
529  /* Start offset of contributing tile parts */
531 
539 
540 } opj_j2k_dec_t;
541 
542 typedef struct opj_j2k_enc {
545 
548 
549  /* whether to generate TLM markers */
551 
552  /* whether the Ttlmi field in a TLM marker is a byte (otherwise a uint16) */
554 
568 
572 
573  /* encoded data for a tile */
575 
576  /* size of the encoded_data */
578 
579  /* encoded data for a tile */
581 
582  /* size of the encoded_data */
583 
585 
586  /* whether to generate PLT markers */
588 
589  /* reserved bytes in m_encoded_tile_size for PLT markers */
591 
594 
595 } opj_j2k_enc_t;
596 
597 
598 
599 struct opj_tcd;
603 typedef struct opj_j2k {
604  /* J2K codestream is decoded*/
606 
607  /* FIXME DOC*/
608  union {
611  }
613 
616 
617  /* pointer to the output image (decoded)*/
619 
622 
625 
628 
631 
634 
636  struct opj_tcd * m_tcd;
637 
640 
643 
646 
648  unsigned int dump_state;
649 }
650 opj_j2k_t;
651 
652 
653 
654 
657 /* ----------------------------------------------------------------------- */
658 
665 void opj_j2k_setup_decoder(opj_j2k_t *j2k, opj_dparameters_t *parameters);
666 
668 
670 
677 
678 
680  opj_cparameters_t *parameters,
682  opj_event_mgr_t * p_manager);
683 
688 
689 /* ----------------------------------------------------------------------- */
693 
699  opj_stream_private_t *p_stream,
700  opj_event_mgr_t * p_manager);
701 
713  opj_j2k_t* p_j2k,
714  opj_image_t** p_image,
715  opj_event_mgr_t* p_manager);
716 
717 
723 void opj_j2k_destroy(opj_j2k_t *p_j2k);
724 
731 
742  OPJ_UINT32 p_tile_index,
743  OPJ_BYTE * p_data,
744  OPJ_UINT32 p_data_size,
745  opj_stream_private_t *p_stream,
746  opj_event_mgr_t * p_manager);
747 
763  OPJ_UINT32 * p_tile_index,
764  OPJ_UINT32 * p_data_size,
765  OPJ_INT32 * p_tile_x0,
766  OPJ_INT32 * p_tile_y0,
767  OPJ_INT32 * p_tile_x1,
768  OPJ_INT32 * p_tile_y1,
769  OPJ_UINT32 * p_nb_comps,
770  OPJ_BOOL * p_go_on,
771  opj_stream_private_t *p_stream,
772  opj_event_mgr_t * p_manager);
773 
774 
786  OPJ_UINT32 numcomps,
787  const OPJ_UINT32* comps_indices,
788  opj_event_mgr_t * p_manager);
789 
804  opj_image_t* p_image,
805  OPJ_INT32 p_start_x, OPJ_INT32 p_start_y,
806  OPJ_INT32 p_end_x, OPJ_INT32 p_end_y,
807  opj_event_mgr_t * p_manager);
808 
815 
816 
825 void j2k_dump(opj_j2k_t* p_j2k, OPJ_INT32 flag, FILE* out_stream);
826 
827 
828 
836 void j2k_dump_image_header(opj_image_t* image, OPJ_BOOL dev_dump_flag,
837  FILE* out_stream);
838 
846 void j2k_dump_image_comp_header(opj_image_comp_t* comp, OPJ_BOOL dev_dump_flag,
847  FILE* out_stream);
848 
857 
866 
876  opj_stream_private_t *p_stream,
877  opj_image_t *p_image,
878  opj_event_mgr_t *p_manager);
879 
880 
882  opj_stream_private_t *p_stream,
883  opj_image_t* p_image,
884  opj_event_mgr_t * p_manager,
885  OPJ_UINT32 tile_index);
886 
888  OPJ_UINT32 res_factor,
889  opj_event_mgr_t * p_manager);
890 
901  opj_j2k_t *p_j2k,
902  const char* const* p_options,
903  opj_event_mgr_t * p_manager);
904 
915  OPJ_UINT32 p_tile_index,
916  OPJ_BYTE * p_data,
917  OPJ_UINT32 p_data_size,
918  opj_stream_private_t *p_stream,
919  opj_event_mgr_t * p_manager);
920 
926  opj_event_mgr_t * p_manager);
927 
939  opj_stream_private_t *p_stream,
940  opj_image_t * p_image,
941  opj_event_mgr_t * p_manager);
942 
949  opj_event_mgr_t * p_manager);
950 
952 
953 
954 #endif /* OPJ_J2K_H */
OPJ_BOOL opj_j2k_end_decompress(opj_j2k_t *j2k, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
Ends the decompression procedures and possibiliy add data to be read after the codestream.
Definition: j2k.c:8477
MCT data is stored as floats.
Definition: j2k.h:147
the decoding process has encountered the EOC marker
Definition: j2k.h:136
OPJ_BOOL opj_j2k_setup_mct_encoding(opj_tcp_t *p_tcp, opj_image_t *p_image)
Definition: j2k.c:8620
struct opj_cp opj_cp_t
Coding parameters.
OPJ_INT32 m_dc_level_shift
the dc_level_shift
Definition: j2k.h:208
OPJ_BOOL esd_on
enables writing of ESD, in case of activated JPWL
Definition: j2k.h:422
OPJ_BOOL red_on
enables writing of RED, in case of activated JPWL
Definition: j2k.h:426
int64_t OPJ_OFF_T
Definition: openjpeg.h:136
enum T2_MODE J2K_T2_MODE
T2 encoding mode
#define JPWL_MAX_NO_TILESPECS
Maximum number of tile parts expected by JPWL: increase at your will.
Definition: openjpeg.h:164
#define OPJ_J2K_MAXRLVLS
Number of maximum resolution level authorized.
Definition: openjpeg.h:154
double OPJ_FLOAT64
Definition: openjpeg.h:122
OPJ_UINT32 m_numcomps_to_decode
Definition: j2k.h:517
T2_MODE
T2 encoding mode
Definition: j2k.h:164
OPJ_INT32 roishift
Region Of Interest shift.
Definition: j2k.h:202
enum MCT_ARRAY_TYPE J2K_MCT_ARRAY_TYPE
Type of MCT array.
OPJ_UINT32 max_tiles
maximum number of tiles at the decoder
Definition: j2k.h:456
struct opj_tcd * m_tcd
the current tile coder/decoder
Definition: j2k.h:636
OPJ_UINT32 m_num_intersecting_tile_parts
Definition: j2k.h:528
OPJ_UINT32 ppt_data_size
Number of bytes stored inside ppt_data.
Definition: j2k.h:275
OPJ_BOOL opj_j2k_read_header(opj_stream_private_t *p_stream, opj_j2k_t *p_j2k, opj_image_t **p_image, opj_event_mgr_t *p_manager)
Reads a jpeg2000 codestream header structure.
Definition: j2k.c:8488
struct opj_j2k_tlm_info opj_j2k_tlm_info_t
Information got from the concatenation of TLM marker semgnets.
Definition: j2k.h:542
OPJ_UINT32 tdy
YTsiz.
Definition: j2k.h:370
struct opj_j2k_enc opj_j2k_enc_t
Message handler object used for
Definition: event.h:50
OPJ_BOOL opj_j2k_end_compress(opj_j2k_t *p_j2k, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
Ends the compression procedures and possibiliy add data to be read after the codestream.
Definition: j2k.c:12752
OPJ_BYTE * ppm_data_current
Definition: j2k.h:390
OPJ_BOOL opj_j2k_set_threads(opj_j2k_t *j2k, OPJ_UINT32 num_threads)
Definition: j2k.c:6773
Progression order changes.
Definition: openjpeg.h:367
OPJ_UINT32 ihdr_w
Image width coming from JP2 IHDR box.
Definition: j2k.h:642
opj_tcp_t * m_default_tcp
store decoding parameters common to all tiles (information like COD, COC in main header) ...
Definition: j2k.h:494
OPJ_BITFIELD m_is_irreversible
Definition: j2k.h:234
OPJ_OFF_T * m_intersecting_tile_parts_offset
Definition: j2k.h:530
Entry of a TLM marker segment.
Definition: j2k.h:470
Tile coder/decoder
Definition: tcd.h:257
OPJ_BOOL epc_on
enables writing of EPC in MH, thus activating JPWL
Definition: j2k.h:418
int OPJ_BOOL
Definition: openjpeg.h:116
OPJ_BOOL info_on
enables writing of informative techniques of ESD, in case of activated JPWL
Definition: j2k.h:424
opj_j2k_enc_t m_encoder
Definition: j2k.h:610
allocation by rate/distortion
Definition: j2k.h:325
OPJ_UINT32 numpocs
number of progression order changes
Definition: j2k.h:261
OPJ_UINT32 mct
multi-component transform identifier
Definition: j2k.h:257
OPJ_UINT32 numresolutions
number of resolutions
Definition: j2k.h:186
void j2k_dump_image_header(opj_image_t *image, OPJ_BOOL dev_dump_flag, FILE *out_stream)
Dump an image header structure.
Definition: j2k.c:11630
JPEG-2000 codestream reader/writer
Definition: j2k.h:603
OPJ_UINT32 m_nb_mcc_records
the number of mct records.
Definition: j2k.h:305
OPJ_UINT16 rsiz
Size of the image in bits.
Definition: j2k.h:362
opj_procedure_list_t * m_procedure_list
the list of procedures to exec
Definition: j2k.h:624
OPJ_BOOL epb_on
enables writing of EPB, in case of activated JPWL
Definition: j2k.h:420
OPJ_OFF_T m_tlm_start
locate the start position of the TLM marker after encoding the tilepart, a jump (in j2k_write_sod) i...
Definition: j2k.h:559
Byte input-output stream.
Definition: cio.h:81
OPJ_UINT32 m_encoded_tile_size
Definition: j2k.h:577
opj_j2k_t * opj_j2k_create_compress(void)
Creates a J2K compression structure.
Definition: j2k.c:6821
OPJ_UINT32 m_end_tile_y
Definition: j2k.h:503
opj_tccp_t * tccps
tile-component coding parameters
Definition: j2k.h:281
unsigned char OPJ_BYTE
Definition: openjpeg.h:123
opj_image_t * image
image header
Definition: tcd.h:271
OPJ_BYTE * m_data
data for the tile
Definition: j2k.h:287
J2K_MCT_ELEMENT_TYPE m_element_type
Definition: j2k.h:218
const char * opj_j2k_convert_progression_order(OPJ_PROG_ORDER prg_order)
Converts an enum type progression order to string type
Definition: j2k.c:1651
Tile-component coding parameters
Definition: j2k.h:182
OPJ_BOOL opj_j2k_read_tile_header(opj_j2k_t *p_j2k, OPJ_UINT32 *p_tile_index, OPJ_UINT32 *p_data_size, OPJ_INT32 *p_tile_x0, OPJ_INT32 *p_tile_y0, OPJ_INT32 *p_tile_x1, OPJ_INT32 *p_tile_y1, OPJ_UINT32 *p_nb_comps, OPJ_BOOL *p_go_on, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
Reads a tile header.
Definition: j2k.c:9699
OPJ_UINT32 m_nb_max_mct_records
the max number of mct records.
Definition: j2k.h:301
struct opj_j2k opj_j2k_t
JPEG-2000 codestream reader/writer
struct opj_tccp opj_tccp_t
Tile-component coding parameters
opj_mct_data_t * m_offset_array
Definition: j2k.h:233
OPJ_BOOL opj_j2k_encode(opj_j2k_t *p_j2k, opj_stream_private_t *cio, opj_event_mgr_t *p_manager)
Encodes an image into a JPEG-2000 codestream.
Definition: j2k.c:12644
OPJ_BITFIELD m_nb_tile_parts_correction_checked
TNsot correction : see issue 254.
Definition: j2k.h:537
OPJ_UINT32 m_nb_max_mcc_records
the max number of mct records.
Definition: j2k.h:307
the EOC marker has just been read
Definition: j2k.h:132
int sens_TPH[JPWL_MAX_NO_TILESPECS]
sensitivity methods for TPHs (-1,0-7)
Definition: j2k.h:450
uint16_t OPJ_UINT16
Definition: openjpeg.h:130
int hprot_TPH[JPWL_MAX_NO_TILESPECS]
error protection methods for TPHs (0,1,16,32,37-128)
Definition: j2k.h:432
the decoding process is in the main header
Definition: j2k.h:129
OPJ_UINT32 m_reduce
if != 0, then original dimension divided by 2^(reduce); if == 0 or not used, image is decoded to the ...
Definition: j2k.h:348
OPJ_BOOL opj_j2k_write_tile(opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
Writes a tile.
Definition: j2k.c:13558
OPJ_BYTE * m_tlm_sot_offsets_current
The current offset of the tlm buffer.
Definition: j2k.h:567
int32_t OPJ_INT32
Definition: openjpeg.h:131
OPJ_CHAR * comment
comment
Definition: j2k.h:372
Information structure about the codestream (FIXME should be expand and enhance)
Definition: openjpeg.h:964
union opj_cp::@0 m_specific_param
OPJ_BITFIELD m_can_decode
to tell that a tile can be decoded.
Definition: j2k.h:533
the decoding process must not expect a EOC marker because the codestream is truncated ...
Definition: j2k.h:133
OPJ_UINT32 ty0
YTOsiz.
Definition: j2k.h:366
OPJ_UINT16 m_tile_index
Tile index of the tile part.
Definition: j2k.h:472
OPJ_UINT32 m_nb_tile_parts
number of tile parts for the tile.
Definition: j2k.h:285
Definition: j2k.h:155
OPJ_BOOL m_PLT
Definition: j2k.h:587
Definition: j2k.h:156
struct opj_mct_data opj_mct_data_t
FIXME DOC.
OPJ_BOOL m_last_tile_part
Indicate that the current tile-part is assume as the last tile part of the codestream.
Definition: j2k.h:515
OPJ_INT32 ppm_previous
use in case of multiple marker PPM (case on non-finished previous info)
Definition: j2k.h:401
union opj_j2k::@1 m_specific_param
OPJ_UINT32 m_index
Definition: j2k.h:230
Definition: j2k.h:154
OPJ_UINT32 prch[OPJ_J2K_MAXRLVLS]
precinct height
Definition: j2k.h:206
MCT_ELEMENT_TYPE
Type of elements storing in the MCT data.
Definition: j2k.h:143
OPJ_INT32 m_tp_pos
Position of tile part flag in progression order.
Definition: j2k.h:334
OPJ_BOOL opj_j2k_set_decoded_components(opj_j2k_t *p_j2k, OPJ_UINT32 numcomps, const OPJ_UINT32 *comps_indices, opj_event_mgr_t *p_manager)
Sets the indices of the components to decode.
Definition: j2k.c:10478
OPJ_BOOL opj_j2k_decode(opj_j2k_t *j2k, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
Decode an image from a JPEG-2000 codestream.
Definition: j2k.c:12377
OPJ_UINT32 m_layer
if != 0, then only the first "layer" layers are decoded; if == 0 or not used, all the quality layers ...
Definition: j2k.h:350
OPJ_FLOAT32 rates[100]
rates of layers
Definition: j2k.h:259
the decoding process has encountered an error (FIXME warning V1 = 0x0080)
Definition: j2k.h:137
OPJ_UINT32 tx0
XTOsiz.
Definition: j2k.h:364
opj_codestream_index_t * cstr_index
helper used to write the index file
Definition: j2k.h:630
Definition: j2k.h:324
a SOC marker is expected
Definition: j2k.h:127
OPJ_BYTE * ppm_data_first
pointer remaining on the first byte of the first header if ppm is used
Definition: j2k.h:395
void opj_j2k_setup_decoder(opj_j2k_t *j2k, opj_dparameters_t *parameters)
Setup the decoder decoding parameters using user parameters.
Definition: j2k.c:6748
OPJ_FLOAT32 * m_mct_coding_matrix
the mct coding matrix
Definition: j2k.h:295
Defines image data and characteristics.
Definition: openjpeg.h:711
float OPJ_FLOAT32
Definition: openjpeg.h:121
void opj_j2k_destroy(opj_j2k_t *p_j2k)
Destroys a jpeg2000 codec.
Definition: j2k.c:9353
OPJ_UINT32 m_entries_count
Number of entries in m_tile_part_infos.
Definition: j2k.h:481
the decoding process is in a tile part header
Definition: j2k.h:131
OPJ_BOOL strict
OPJ_TRUE if entire bit stream must be decoded, OPJ_FALSE if partial bitstream decoding allowed...
Definition: j2k.h:413
opj_codestream_index_t * j2k_get_cstr_index(opj_j2k_t *p_j2k)
Get the codestream index from a JPEG2000 codec.
Definition: j2k.c:11761
Definition: j2k.h:144
opj_codestream_info_v2_t * j2k_get_cstr_info(opj_j2k_t *p_j2k)
Get the codestream info from a JPEG2000 codec.
Definition: j2k.c:11685
struct opj_j2k_dec opj_j2k_dec_t
Definition: j2k.h:346
OPJ_UINT32 m_index
Definition: j2k.h:220
opj_image_t * m_private_image
pointer to the internal/private encoded / decoded image
Definition: j2k.h:615
struct opj_encoding_param opj_encoding_param_t
struct opj_decoding_param opj_decoding_param_t
int exp_comps
expected number of components at the decoder
Definition: j2k.h:454
OPJ_UINT32 m_start_tile_x
Only tiles index in the correct range will be decoded.
Definition: j2k.h:500
OPJ_BOOL m_is_decoder
Definition: j2k.h:605
Decompression parameters.
Definition: openjpeg.h:554
opj_j2k_tlm_info_t m_tlm
Definition: j2k.h:520
OPJ_UINT32 csty
coding style
Definition: j2k.h:250
OPJ_BITFIELD cod
If cod == 1 –> there was a COD marker for the present tile.
Definition: j2k.h:312
J2K_QUALITY_LAYER_ALLOCATION_STRATEGY
Rate allocation strategy
Definition: j2k.h:323
OPJ_BITFIELD m_discard_tiles
Definition: j2k.h:534
OPJ_FLOAT32 distoratio[100]
PSNR values.
Definition: j2k.h:279
opj_procedure_list_t * m_validation_list
the list of validation procedures to follow to make sure the code is valid
Definition: j2k.h:627
void opj_j2k_decoder_set_strict_mode(opj_j2k_t *j2k, OPJ_BOOL strict)
Definition: j2k.c:6763
OPJ_BOOL opj_j2k_set_decoded_resolution_factor(opj_j2k_t *p_j2k, OPJ_UINT32 res_factor, opj_event_mgr_t *p_manager)
Definition: j2k.c:12548
a tile header has been successfully read and codestream is expected
Definition: j2k.h:134
OPJ_UINT32 m_reserved_bytes_for_PLT
Definition: j2k.h:590
OPJ_UINT32 m_nb_mct_records
the number of mct records.
Definition: j2k.h:299
struct opj_stepsize opj_stepsize_t
Quantization stepsize.
A list of procedures.
Definition: function_list.h:57
OPJ_UINT32 m_nb_comps
Definition: j2k.h:231
Definition: j2k.h:330
Definition: j2k.h:165
OPJ_BOOL opj_j2k_start_compress(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager)
Starts a compression scheme, i.e.
Definition: j2k.c:12768
OPJ_UINT32 m_idx_intersecting_tile_parts
Below if used when there&#39;s TLM information available and we use opj_set_decoded_area() to a subset of...
Definition: j2k.h:526
OPJ_UINT32 m_current_tile_number
number of the tile currently concern by coding/decoding
Definition: j2k.h:633
OPJ_UINT32 m_current_poc_tile_part_number
Tile part number, regardless of poc, for each new poc, tp is reset to 1.
Definition: j2k.h:544
OPJ_BITFIELD POC
indicates if a POC marker has been used O:NO, 1:YES
Definition: j2k.h:316
OPJ_UINT32 m_sot_length
to tell the tile part length
Definition: j2k.h:498
opj_j2k_t * opj_j2k_create_decompress(void)
Creates a J2K decompression structure.
Definition: j2k.c:10693
OPJ_BOOL opj_j2k_decode_tile(opj_j2k_t *p_j2k, OPJ_UINT32 p_tile_index, OPJ_BYTE *p_data, OPJ_UINT32 p_data_size, opj_stream_private_t *p_stream, opj_event_mgr_t *p_manager)
Decode tile data.
Definition: j2k.c:10111
opj_stepsize_t stepsizes[OPJ_J2K_MAXBANDS]
stepsizes used for quantization
Definition: j2k.h:198
void j2k_destroy_cstr_index(opj_codestream_index_t *p_cstr_ind)
Destroys a codestream index structure.
Definition: j2k.c:9429
OPJ_BITFIELD m_is_decoder
tells if the parameter is a coding or decoding one
Definition: j2k.h:463
enum PROG_ORDER OPJ_PROG_ORDER
Progression order.
OPJ_UINT32 cblkw
code-blocks width
Definition: j2k.h:188
OPJ_BYTE * ppt_buffer
used to keep a track of the allocated memory
Definition: j2k.h:273
opj_j2k_tlm_tile_part_info_t * m_tile_part_infos
Array of m_entries_count values.
Definition: j2k.h:483
OPJ_BOOL opj_j2k_encoder_set_extra_options(opj_j2k_t *p_j2k, const char *const *p_options, opj_event_mgr_t *p_manager)
Specify extra options for the encoder.
Definition: j2k.c:12581
MCT_ARRAY_TYPE
Type of MCT array.
Definition: j2k.h:153
OPJ_UINT32 numgbits
number of guard bits
Definition: j2k.h:200
unsigned int dump_state
Set to 1 by the decoder initialization if OPJ_DPARAMETERS_DUMP_FLAG is set.
Definition: j2k.h:648
OPJ_UINT32 * m_comps_indices_to_decode
Definition: j2k.h:518
int sens_TPH_tileno[JPWL_MAX_NO_TILESPECS]
tile number of sensitivity specification (>=0)
Definition: j2k.h:448
OPJ_FLOAT64 * mct_norms
encoding norms
Definition: j2k.h:291
OPJ_UINT32 ppt_len
size of ppt_data
Definition: j2k.h:277
OPJ_UINT32 ppt_markers_count
number of ppt markers (reserved size)
Definition: j2k.h:266
OPJ_UINT32 m_max_comp_size
Maximum rate for each component.
Definition: j2k.h:332
#define J2K_MAX_POCS
Maximum number of POCs.
Definition: j2k.h:114
opj_simple_mcc_decorrelation_data_t * m_mcc_records
mcc records
Definition: j2k.h:303
OPJ_BOOL opj_j2k_set_decode_area(opj_j2k_t *p_j2k, opj_image_t *p_image, OPJ_INT32 p_start_x, OPJ_INT32 p_start_y, OPJ_INT32 p_end_x, OPJ_INT32 p_end_y, opj_event_mgr_t *p_manager)
Sets the given area to be decoded.
Definition: j2k.c:10538
opj_ppx * ppt_markers
ppt markers data (table indexed by Zppt)
Definition: j2k.h:268
J2K_MCT_ARRAY_TYPE m_array_type
Definition: j2k.h:219
OPJ_INT32 * m_matrice
fixed layer
Definition: j2k.h:336
OPJ_UINT32 m_data_size
Definition: j2k.h:240
OPJ_UINT32 qntsty
quantisation style
Definition: j2k.h:196
OPJ_PROG_ORDER prg
progression order
Definition: j2k.h:252
Coding parameters.
Definition: j2k.h:358
struct opj_simple_mcc_decorrelation_data opj_simple_mcc_decorrelation_data_t
FIXME DOC.
Definition: j2k.h:238
OPJ_BITFIELD m_nb_tile_parts_correction
Definition: j2k.h:538
opj_poc_t pocs[J2K_MAX_POCS]
progression order changes
Definition: j2k.h:263
Defines a single image component.
Definition: openjpeg.h:679
OPJ_UINT32 prcw[OPJ_J2K_MAXRLVLS]
precinct width
Definition: j2k.h:204
OPJ_UINT32 ppm_markers_count
number of ppm markers (reserved size)
Definition: j2k.h:379
opj_mct_data_t * m_decorrelation_array
Definition: j2k.h:232
enum MCT_ELEMENT_TYPE J2K_MCT_ELEMENT_TYPE
Type of elements storing in the MCT data.
OPJ_UINT32 m_header_tile_data_size
Definition: j2k.h:584
struct opj_ppx_struct opj_ppx
Quantization stepsize.
Definition: j2k.h:172
OPJ_UINT32 tdx
XTsiz.
Definition: j2k.h:368
OPJ_UINT32 cblkh
code-blocks height
Definition: j2k.h:190
FIXME DOC.
Definition: j2k.h:229
int hprot_TPH_tileno[JPWL_MAX_NO_TILESPECS]
tile number of header protection specification (>=0)
Definition: j2k.h:430
Definition: j2k.h:488
OPJ_INT32 m_current_tile_part_number
current tile part number or -1 if first time into this tile
Definition: j2k.h:283
FIXME DOC.
Definition: j2k.h:217
MCT data is stored as signed shorts.
Definition: j2k.h:145
OPJ_UINT32 num_layers_to_decode
Definition: j2k.h:255
OPJ_BOOL correct
enables JPWL correction at the decoder
Definition: j2k.h:452
OPJ_UINT32 th
number of tiles in height
Definition: j2k.h:376
OPJ_BYTE * m_header_data
Definition: j2k.h:495
J2K_STATUS
Values that specify the status of the decoding process when decoding the main header.
Definition: j2k.h:125
OPJ_BITFIELD m_tp_on
Enabling Tile part generation.
Definition: j2k.h:342
int sens_MH
sensitivity method for MH (-1,0-7)
Definition: j2k.h:446
MCT data is stored as signed integers.
Definition: j2k.h:146
opj_mct_data_t * m_mct_records
mct records
Definition: j2k.h:297
OPJ_BYTE * m_header_tile_data
Definition: j2k.h:580
unsigned int OPJ_BITFIELD
Definition: opj_includes.h:219
OPJ_BOOL opj_j2k_get_tile(opj_j2k_t *p_j2k, opj_stream_private_t *p_stream, opj_image_t *p_image, opj_event_mgr_t *p_manager, OPJ_UINT32 tile_index)
Definition: j2k.c:12435
OPJ_UINT32 qmfbid
discrete wavelet transform identifier
Definition: j2k.h:194
OPJ_OFF_T m_last_sot_read_pos
Position of the last SOT marker read.
Definition: j2k.h:508
OPJ_UINT32 m_nb_comps
Number of components.
Definition: j2k.h:593
OPJ_UINT32 m_end_tile_x
Definition: j2k.h:502
OPJ_UINT32 ppm_len
size of the ppm_data
Definition: j2k.h:386
int sens_addr
sensitivity addressing size (0=auto/2/4 bytes)
Definition: j2k.h:442
OPJ_BOOL opj_j2k_setup_encoder(opj_j2k_t *p_j2k, opj_cparameters_t *parameters, opj_image_t *image, opj_event_mgr_t *p_manager)
Definition: j2k.c:7679
OPJ_BYTE * m_tlm_sot_offsets_buffer
Stores the sizes of the tlm.
Definition: j2k.h:563
int sens_size
enables writing of ESD, (0/2/4 bytes)
Definition: j2k.h:440
Function called in Rate allocation process.
Definition: j2k.h:166
OPJ_BYTE * ppm_data
packet header store there for future use in t2_decode_packet
Definition: j2k.h:384
Index structure of the codestream (FIXME should be expand and enhance)
Definition: openjpeg.h:1039
struct opj_j2k_tlm_tile_part_info opj_j2k_tlm_tile_part_info_t
Entry of a TLM marker segment.
Definition: thread.c:605
OPJ_FLOAT32 * m_mct_decoding_matrix
the mct decoding matrix
Definition: j2k.h:293
OPJ_UINT32 m_data_size
size of data
Definition: j2k.h:289
int sens_range
sensitivity range (0-3)
Definition: j2k.h:444
uint32_t OPJ_UINT32
Definition: openjpeg.h:132
OPJ_UINT32 m_start_tile_y
Definition: j2k.h:501
OPJ_INT32 expn
exponent
Definition: j2k.h:174
allocation by fixed distortion ratio (PSNR) (fixed quality)
Definition: j2k.h:326
opj_ppx * ppm_markers
ppm markers data (table indexed by Zppm)
Definition: j2k.h:381
OPJ_UINT32 ihdr_h
Image height coming from JP2 IHDR box.
Definition: j2k.h:645
char OPJ_CHAR
Definition: openjpeg.h:120
OPJ_BITFIELD m_skip_data
Definition: j2k.h:535
opj_thread_pool_t * m_tp
Thread pool.
Definition: j2k.h:639
OPJ_UINT32 m_header_data_size
Definition: j2k.h:496
int pprot_tileno[JPWL_MAX_NO_PACKSPECS]
tile number of packet protection specification (>=0)
Definition: j2k.h:434
OPJ_BYTE * ppt_data
packet header store there for future use in t2_decode_packet
Definition: j2k.h:271
struct opj_tcp opj_tcp_t
Tile coding parameters : this structure is used to store coding/decoding parameters common to all ti...
OPJ_BOOL m_is_invalid
Definition: j2k.h:485
OPJ_BYTE m_tp_flag
Flag determining tile part generation.
Definition: j2k.h:338
Tile coding parameters : this structure is used to store coding/decoding parameters common to all ti...
Definition: j2k.h:248
OPJ_INT32 m_tile_ind_to_dec
Index of the tile to decode (used in get_tile)
Definition: j2k.h:506
Compression parameters.
Definition: openjpeg.h:395
int hprot_MH
error protection method for MH (0,1,16,32,37-128)
Definition: j2k.h:428
J2K_QUALITY_LAYER_ALLOCATION_STRATEGY m_quality_layer_alloc_strategy
Quality layer allocation strategy.
Definition: j2k.h:340
OPJ_BYTE * ppm_buffer
packet header storage original buffer
Definition: j2k.h:393
OPJ_UINT32 tw
number of tiles in width
Definition: j2k.h:374
OPJ_UINT32 m_current_tile_part_number
Tile part number currently coding, taking into account POC.
Definition: j2k.h:547
OPJ_BYTE * m_data
Definition: j2k.h:221
#define OPJ_J2K_MAXBANDS
Number of maximum sub-band linked to number of resolution level.
Definition: openjpeg.h:155
OPJ_BYTE * m_encoded_tile_data
Definition: j2k.h:574
opj_encoding_param_t m_enc
Definition: j2k.h:408
OPJ_UINT32 m_length
Length in bytes, from the beginning of the SOT marker to the end of the bit stream data for that tile...
Definition: j2k.h:475
opj_decoding_param_t m_dec
Definition: j2k.h:407
OPJ_BYTE * m_data
Definition: j2k.h:239
OPJ_BOOL m_Ttlmi_is_byte
Definition: j2k.h:553
OPJ_UINT32 m_state
locate in which part of the codestream the decoder is (main header, tile header, end) ...
Definition: j2k.h:490
OPJ_UINT32 csty
coding style
Definition: j2k.h:184
OPJ_BITFIELD ppt
If ppt == 1 –> there was a PPT marker for the present tile.
Definition: j2k.h:314
#define JPWL_MAX_NO_PACKSPECS
Maximum number of packet parts expected by JPWL: increase at your will.
Definition: openjpeg.h:165
int pprot_packno[JPWL_MAX_NO_PACKSPECS]
packet number of packet protection specification (>=0)
Definition: j2k.h:436
a SOC marker is expected
Definition: j2k.h:126
a SIZ marker is expected
Definition: j2k.h:128
the decoding process is in a tile part header and expects a SOT marker
Definition: j2k.h:130
OPJ_INT32 ppm_store
use in case of multiple marker PPM (number of info already store)
Definition: j2k.h:399
opj_cp_t m_cp
Coding parameters.
Definition: j2k.h:621
OPJ_INT32 mant
mantissa
Definition: j2k.h:176
int pprot[JPWL_MAX_NO_PACKSPECS]
error protection methods for packets (0,1,16,32,37-128)
Definition: j2k.h:438
OPJ_BOOL m_TLM
Definition: j2k.h:550
OPJ_UINT32 m_data_size
Definition: j2k.h:222
OPJ_BITFIELD ppm
if ppm == 1 –> there was a PPM marker
Definition: j2k.h:461
OPJ_UINT32 m_total_tile_parts
Total num of tile parts in whole image = num tiles* num tileparts in each tile.
Definition: j2k.h:571
OPJ_UINT32 cblksty
code-block coding style
Definition: j2k.h:192
OPJ_UINT32 ppm_data_size
Number of bytes actually stored inside the ppm_data.
Definition: j2k.h:397
opj_tcp_t * tcps
tile coding parameters
Definition: j2k.h:404
opj_image_t * m_output_image
Definition: j2k.h:618
void j2k_dump(opj_j2k_t *p_j2k, OPJ_INT32 flag, FILE *out_stream)
Dump some elements from the J2K decompression structure .
Definition: j2k.c:11480
OPJ_UINT32 numlayers
number of layers
Definition: j2k.h:254
OPJ_UINT32 ppm_data_read
size of the ppm_data
Definition: j2k.h:388
OPJ_BITFIELD allow_different_bit_depth_sign
whether different bit depth or sign per component is allowed.
Definition: j2k.h:465
opj_j2k_dec_t m_decoder
Definition: j2k.h:609
Information got from the concatenation of TLM marker semgnets.
Definition: j2k.h:479
void j2k_dump_image_comp_header(opj_image_comp_t *comp, OPJ_BOOL dev_dump_flag, FILE *out_stream)
Dump a component image header structure.
Definition: j2k.c:11662