OpenJPEG  1.5.1
jp2.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) 2002-2003, Yannick Verschueren
5  * Copyright (c) 2005, Herve Drolon, FreeImage Team
6  * All rights reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  * 1. Redistributions of source code must retain the above copyright
12  * notice, this list of conditions and the following disclaimer.
13  * 2. Redistributions in binary form must reproduce the above copyright
14  * notice, this list of conditions and the following disclaimer in the
15  * documentation and/or other materials provided with the distribution.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
18  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
21  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27  * POSSIBILITY OF SUCH DAMAGE.
28  */
29 #ifndef __JP2_H
30 #define __JP2_H
31 
39 
40 #define JPIP_JPIP 0x6a706970
41 
42 #define JP2_JP 0x6a502020
43 #define JP2_FTYP 0x66747970
44 #define JP2_JP2H 0x6a703268
45 #define JP2_IHDR 0x69686472
46 #define JP2_COLR 0x636f6c72
47 #define JP2_JP2C 0x6a703263
48 #define JP2_URL 0x75726c20
49 #define JP2_DTBL 0x6474626c
50 #define JP2_BPCC 0x62706363
51 #define JP2_JP2 0x6a703220
52 #define JP2_PCLR 0x70636c72
53 #define JP2_CMAP 0x636d6170
54 #define JP2_CDEF 0x63646566
56 /* ----------------------------------------------------------------------- */
57 
60 typedef struct opj_jp2_cdef_info
61 {
62  unsigned short cn, typ, asoc;
64 
68 typedef struct opj_jp2_cdef
69 {
71  unsigned short n;
73 
77 typedef struct opj_jp2_cmap_comp
78 {
79  unsigned short cmp;
80  unsigned char mtyp, pcol;
82 
86 typedef struct opj_jp2_pclr
87 {
88  unsigned int *entries;
89  unsigned char *channel_sign;
90  unsigned char *channel_size;
92  unsigned short nr_entries, nr_channels;
94 
98 typedef struct opj_jp2_color
99 {
100  unsigned char *icc_profile_buf;
102 
105  unsigned char jp2_has_colr;
107 
111 typedef struct opj_jp2_comps {
112  int depth;
113  int sgnd;
114  int bpcc;
116 
120 typedef struct opj_jp2 {
125  unsigned int w;
126  unsigned int h;
127  unsigned int numcomps;
128  unsigned int bpc;
129  unsigned int C;
130  unsigned int UnkC;
131  unsigned int IPR;
132  unsigned int meth;
133  unsigned int approx;
134  unsigned int enumcs;
135  unsigned int precedence;
136  unsigned int brand;
137  unsigned int minversion;
138  unsigned int numcl;
139  unsigned int *cl;
141  unsigned int j2k_codestream_offset;
142  unsigned int j2k_codestream_length;
145 } opj_jp2_t;
146 
150 typedef struct opj_jp2_box {
151  int length;
152  int type;
153  int init_pos;
154 } opj_jp2_box_t;
155 
158 /* ----------------------------------------------------------------------- */
164 void jp2_write_jp2h(opj_jp2_t *jp2, opj_cio_t *cio);
190 void jp2_setup_decoder(opj_jp2_t *jp2, opj_dparameters_t *parameters);
217 void jp2_setup_encoder(opj_jp2_t *jp2, opj_cparameters_t *parameters, opj_image_t *image);
227 
228 /* ----------------------------------------------------------------------- */
232 
233 #endif /* __JP2_H */
234 
JPEG-2000 file format reader/writer.
Definition: jp2.h:120
struct opj_jp2_cmap_comp opj_jp2_cmap_comp_t
Component mappings: channel index, mapping type, palette index.
unsigned int meth
Definition: jp2.h:132
opj_jp2_comps_t * comps
Definition: jp2.h:140
unsigned char * icc_profile_buf
Definition: jp2.h:100
void jp2_setup_encoder(opj_jp2_t *jp2, opj_cparameters_t *parameters, opj_image_t *image)
Setup the encoder parameters using the current image and using user parameters.
Definition: jp2.c:1156
struct opj_jp2_color opj_jp2_color_t
Collector for ICC profile, palette, component mapping, channel description.
opj_common_ptr cinfo
codec context
Definition: jp2.h:122
JPEG-2000 codestream reader/writer.
Definition: j2k.h:314
unsigned char * channel_sign
Definition: jp2.h:89
JP2 Box.
Definition: jp2.h:150
opj_jp2_cdef_info_t * info
Definition: jp2.h:70
unsigned int numcomps
Definition: jp2.h:127
unsigned char mtyp
Definition: jp2.h:80
struct opj_jp2_cdef opj_jp2_cdef_t
Channel descriptions and number of descriptions.
unsigned int j2k_codestream_offset
Definition: jp2.h:141
int init_pos
Definition: jp2.h:153
unsigned char pcol
Definition: jp2.h:80
struct opj_jp2_comps opj_jp2_comps_t
JP2 component.
unsigned int j2k_codestream_length
Definition: jp2.h:142
opj_jp2_cdef_t * jp2_cdef
Definition: jp2.h:103
opj_j2k_t * j2k
handle to the J2K codec
Definition: jp2.h:124
unsigned int brand
Definition: jp2.h:136
unsigned short typ
Definition: jp2.h:62
Defines image data and characteristics.
Definition: openjpeg.h:533
void jp2_destroy_compress(opj_jp2_t *jp2)
Destroy a JP2 compressor handle.
Definition: jp2.c:1141
int bpcc
Definition: jp2.h:114
unsigned short nr_channels
Definition: jp2.h:92
Decompression parameters.
Definition: openjpeg.h:363
Collector for ICC profile, palette, component mapping, channel description.
Definition: jp2.h:98
int length
Definition: jp2.h:151
unsigned int IPR
Definition: jp2.h:131
void jp2_setup_decoder(opj_jp2_t *jp2, opj_dparameters_t *parameters)
Setup the decoder decoding parameters using user parameters.
Definition: jp2.c:1116
Byte input-output stream (CIO)
Definition: openjpeg.h:475
unsigned short n
Definition: jp2.h:71
unsigned int precedence
Definition: jp2.h:135
unsigned short asoc
Definition: jp2.h:62
unsigned short cn
Definition: jp2.h:62
opj_bool jp2_read_jp2h(opj_jp2_t *jp2, opj_cio_t *cio, opj_jp2_color_t *color)
Read the JP2H box - JP2 Header box (used in MJ2)
Definition: jp2.c:659
struct opj_jp2 opj_jp2_t
JPEG-2000 file format reader/writer.
unsigned short cmp
Definition: jp2.h:79
unsigned int numcl
Definition: jp2.h:138
struct opj_jp2_pclr opj_jp2_pclr_t
Palette data: table entries, palette columns.
opj_image_t * opj_jp2_decode(opj_jp2_t *jp2, opj_cio_t *cio, opj_codestream_info_t *cstr_info)
Decode an image from a JPEG-2000 file stream.
Definition: jp2.c:766
opj_bool opj_jp2_encode(opj_jp2_t *jp2, opj_cio_t *cio, opj_image_t *image, opj_codestream_info_t *cstr_info)
Encode an image into a JPEG-2000 file stream.
Definition: jp2.c:1223
opj_bool jpip_on
Definition: jp2.h:143
struct opj_jp2_box opj_jp2_box_t
JP2 Box.
Component mappings: channel index, mapping type, palette index.
Definition: jp2.h:77
unsigned short nr_entries
Definition: jp2.h:92
unsigned int C
Definition: jp2.h:129
opj_bool ignore_pclr_cmap_cdef
Definition: jp2.h:144
opj_jp2_pclr_t * jp2_pclr
Definition: jp2.h:104
unsigned int h
Definition: jp2.h:126
int opj_bool
Definition: openjpeg.h:63
opj_jp2_t * jp2_create_decompress(opj_common_ptr cinfo)
Creates a JP2 decompression structure.
Definition: jp2.c:1087
unsigned int * cl
Definition: jp2.h:139
unsigned int bpc
Definition: jp2.h:128
int icc_profile_len
Definition: jp2.h:101
unsigned int enumcs
Definition: jp2.h:134
unsigned char * channel_size
Definition: jp2.h:90
Palette data: table entries, palette columns.
Definition: jp2.h:86
opj_jp2_cmap_comp_t * cmap
Definition: jp2.h:91
Compression parameters.
Definition: openjpeg.h:230
unsigned int UnkC
Definition: jp2.h:130
unsigned int w
Definition: jp2.h:125
unsigned int approx
Definition: jp2.h:133
void jp2_destroy_decompress(opj_jp2_t *jp2)
Destroy a JP2 decompressor handle.
Definition: jp2.c:1101
unsigned int * entries
Definition: jp2.h:88
struct opj_jp2_cdef_info opj_jp2_cdef_info_t
Channel description: channel index, type, assocation.
opj_jp2_t * jp2_create_compress(opj_common_ptr cinfo)
Creates a JP2 compression structure.
Definition: jp2.c:1127
int type
Definition: jp2.h:152
int sgnd
Definition: jp2.h:113
Index structure of the codestream.
Definition: openjpeg.h:672
unsigned int minversion
Definition: jp2.h:137
void jp2_write_jp2h(opj_jp2_t *jp2, opj_cio_t *cio)
Write the JP2H box - JP2 Header box (used in MJ2)
Definition: jp2.c:835
int depth
Definition: jp2.h:112
JP2 component.
Definition: jp2.h:111
Channel description: channel index, type, assocation.
Definition: jp2.h:60
unsigned char jp2_has_colr
Definition: jp2.h:105
Definition: openjpeg.h:430
Channel descriptions and number of descriptions.
Definition: jp2.h:68