Grok  7.6.3
FileFormat.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2016-2021 Grok Image Compression Inc.
3  *
4  * This source code is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU Affero General Public License, version 3,
6  * as published by the Free Software Foundation.
7  *
8  * This source code is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU Affero General Public License for more details.
12  *
13  * You should have received a copy of the GNU Affero General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  *
16  *
17  * This source code incorporates work covered by the BSD 2-clause license.
18  * Please see the LICENSE file in the root directory for details.
19  *
20  */
21 
22 
23 #pragma once
24 
25 #include <string>
26 
27 namespace grk {
28 
37 
38 #define JP2_JP 0x6a502020
39 #define JP2_FTYP 0x66747970
40 #define JP2_JP2H 0x6a703268
41 #define JP2_IHDR 0x69686472
42 #define JP2_COLR 0x636f6c72
43 #define JP2_JP2C 0x6a703263
44 #define JP2_PCLR 0x70636c72
45 #define JP2_CMAP 0x636d6170
46 #define JP2_CDEF 0x63646566
47 #define JP2_DTBL 0x6474626c
48 #define JP2_BPCC 0x62706363
49 #define JP2_JP2 0x6a703220
51 #define JP2_RES 0x72657320
52 #define JP2_CAPTURE_RES 0x72657363
53 #define JP2_DISPLAY_RES 0x72657364
55 #define JP2_JP2I 0x6a703269
56 #define JP2_XML 0x786d6c20
57 #define JP2_UUID 0x75756964
58 #define JP2_UINF 0x75696e66
59 #define JP2_ULST 0x756c7374
60 #define JP2_URL 0x75726c20
61 #define JP2_ASOC 0x61736f63
62 #define JP2_LBL 0x6c626c20
65 /* ----------------------------------------------------------------------- */
66 
67 #define JP2_MAX_NUM_UUIDS 128
68 
69 const uint8_t IPTC_UUID[16] = { 0x33, 0xC7, 0xA4, 0xD2, 0xB8, 0x1D, 0x47, 0x23,
70  0xA0, 0xBA, 0xF1, 0xA3, 0xE0, 0x97, 0xAD, 0x38 };
71 const uint8_t XMP_UUID[16] = { 0xBE, 0x7A, 0xCF, 0xCB, 0x97, 0xA9, 0x42, 0xE8,
72  0x9C, 0x71, 0x99, 0x94, 0x91, 0xE3, 0xAF, 0xAC };
73 
74 enum JP2_STATE {
81  JP2_STATE_UNKNOWN = 0x7fffffff /* ISO C restricts enumerator values to range of 'int' */
82 };
83 
86 };
87 
91 struct grk_jp2_comps {
93  {}
94  uint8_t bpc;
95 };
96 
98  grk_jp2_buffer(uint8_t *buf, size_t size, bool owns) :
99  buffer(buf), len(size), ownsData(owns) {
100  }
102  grk_jp2_buffer(nullptr, 0, false) {
103  }
104  void alloc(size_t length) {
105  dealloc();
106  buffer = new uint8_t[length];
107  len = length;
108  ownsData = true;
109  }
110  void dealloc() {
111  if (ownsData)
112  delete[] buffer;
113  buffer = nullptr;
114  ownsData = false;
115  len = 0;
116  }
117  uint8_t *buffer;
118  size_t len;
119  bool ownsData;
120 };
121 
130  grk_jp2_asoc(uint32_t lev, std::string lbl) : grk_jp2_buffer(),
131  level(lev),
132  label(lbl)
133  {}
135  dealloc();
136  }
137  uint32_t level;
138  std::string label;
139 };
140 
141 
142 struct grk_jp2_uuid: public grk_jp2_buffer {
144  grk_jp2_uuid(const uint8_t myuuid[16], uint8_t *buf, size_t size, bool owns) :
145  grk_jp2_buffer(buf, size, owns) {
146  for (int i = 0; i < 16; ++i)
147  uuid[i] = myuuid[i];
148  }
149  uint8_t uuid[16];
150 };
151 
152 struct FileFormat;
153 typedef bool (*jp2_procedure)(FileFormat *fileFormat);
154 
158 struct FileFormat : public ICodeStream {
159  FileFormat(bool isDecoder, BufferedStream *stream);
160  ~FileFormat();
161 
162 
164  bool read_header(grk_header_info *header_info, grk_image **p_image);
165 
167  void init_decompress(grk_dparameters *p_param);
168 
182  bool set_decompress_window(grk_image *p_image,
183  uint32_t start_x,
184  uint32_t start_y,
185  uint32_t end_x,
186  uint32_t end_y);
187 
188 
189  bool decompress( grk_plugin_tile *tile, grk_image *p_image);
190 
191  bool end_decompress(void);
192 
193  bool init_compress(grk_cparameters *p_param,grk_image *p_image);
194 
195  bool start_compress(void);
196 
197  bool compress(grk_plugin_tile* tile);
198 
199  bool compress_tile(uint16_t tile_index, uint8_t *p_data, uint64_t data_size);
200 
201  bool end_compress(void);
202 
203  bool decompress_tile(grk_image *p_image,uint16_t tile_index);
204 
205  void dump(uint32_t flag, FILE *out_stream);
206 
208 
210 
211  static void free_color(grk_jp2_color *color);
212  static void alloc_palette(grk_jp2_color *color, uint8_t num_channels, uint16_t num_entries);
213 
214  uint32_t read_asoc(uint8_t **header_data, uint32_t *header_data_size, uint32_t asocSize, uint32_t level);
215 
219  std::vector<jp2_procedure> *m_validation_list;
221  std::vector<jp2_procedure> *m_procedure_list;
222 
223  /* width of image */
224  uint32_t w;
225  /* height of image */
226  uint32_t h;
227  /* number of components in the image */
228  uint16_t numcomps;
229  uint8_t bpc;
230  uint8_t C;
231  uint8_t UnkC;
232  uint8_t IPR;
233  uint8_t meth;
234  uint8_t approx;
236  uint8_t precedence;
237  uint32_t brand;
238  uint32_t minversion;
239  uint32_t numcl;
240  uint32_t *cl;
244  uint32_t jp2_state;
245  uint32_t jp2_img_state;
247 
250 
253 
256  uint32_t numUuids;
257 
258  std::vector<grk_jp2_asoc*> asocs;
259 private:
260  bool postDecompress( grk_image *p_image);
261 };
262 
266 struct grk_jp2_box {
267  uint64_t length;
268  uint32_t type;
269 };
270 
272  /* marker value */
273  uint32_t id;
274  /* action linked to the marker */
275  bool (*handler)(FileFormat *fileFormat, uint8_t *p_header_data, uint32_t header_size);
276 };
277 
279  /* action to perform */
280  uint8_t* (*handler)(FileFormat *fileFormat, uint32_t *data_size);
281  /* result of the action : data */
282  uint8_t *m_data;
283  /* size of data */
284  uint32_t m_size;
285 };
286 
289 /* ----------------------------------------------------------------------- */
290 
294 
295 }
296 
GRK_COMPONENT_ASSOC_WHOLE_IMAGE
@ GRK_COMPONENT_ASSOC_WHOLE_IMAGE
Definition: grok.h:848
_grk_codestream_index
Code stream index info.
Definition: grok.h:1158
grk_image_single_component_data_free
void GRK_CALLCONV grk_image_single_component_data_free(grk_image_comp *comp)
Deallocate data for single image component.
Definition: grok.cpp:569
grk::jp2_read_ftyp
static bool jp2_read_ftyp(FileFormat *fileFormat, uint8_t *p_header_data, uint32_t header_size)
Reads a a FTYP box - File type box.
Definition: FileFormat.cpp:2246
grk::CodeStream::set_decompress_window
bool set_decompress_window(grk_image *p_image, uint32_t start_x, uint32_t start_y, uint32_t end_x, uint32_t end_y)
Sets the given area to be decompressed.
Definition: CodeStream.cpp:1819
JP2_PCLR
#define JP2_PCLR
Palette box.
Definition: FileFormat.h:44
GRK_ENUM_CLRSPC_SYCC
@ GRK_ENUM_CLRSPC_SYCC
Definition: grok.h:337
GRK_ENUM_CLRSPC_SRGB
@ GRK_ENUM_CLRSPC_SRGB
Definition: grok.h:335
grk::FileFormat::w
uint32_t w
Definition: FileFormat.h:224
grk::FileFormat::enumcs
GRK_ENUM_COLOUR_SPACE enumcs
Definition: FileFormat.h:235
grk::jp2_read_channel_definition
static bool jp2_read_channel_definition(FileFormat *fileFormat, uint8_t *p_cdef_header_data, uint32_t cdef_header_size)
Definition: FileFormat.cpp:1060
grk::FileFormat::jp2_img_state
uint32_t jp2_img_state
Definition: FileFormat.h:245
GRK_RESOLUTION_BOX_SIZE
#define GRK_RESOLUTION_BOX_SIZE
Definition: FileFormat.cpp:31
grk::j2k_get_cstr_info
grk_codestream_info_v2 * j2k_get_cstr_info(CodeStream *codeStream)
Get the code stream info from a JPEG2000 codec.
Definition: Dump.cpp:282
grk::grk_aligned_free
void grk_aligned_free(void *ptr)
Definition: MemManager.cpp:123
grk::FileFormat::set_decompress_window
bool set_decompress_window(grk_image *p_image, uint32_t start_x, uint32_t start_y, uint32_t end_x, uint32_t end_y)
Sets the given area to be decompressed.
Definition: FileFormat.cpp:2720
JP2_FTYP
#define JP2_FTYP
File type box.
Definition: FileFormat.h:39
grk::grk_jp2_uuid::uuid
uint8_t uuid[16]
Definition: FileFormat.h:149
grk::CodeStream::decompress
bool decompress(grk_plugin_tile *tile, grk_image *p_image)
Definition: CodeStream.cpp:1113
_grk_jp2_color::palette
grk_palette_data * palette
Definition: grok.h:609
grk::IPTC_UUID
const uint8_t IPTC_UUID[16]
Definition: FileFormat.h:69
grk::FileFormat::capture_resolution
double capture_resolution[2]
Definition: FileFormat.h:249
JP2_JP2C
#define JP2_JP2C
Contiguous code stream box.
Definition: FileFormat.h:43
grk::grk_read
void grk_read(const uint8_t *p_buffer, TYPE *value, uint32_t nb_bytes)
Definition: BufferedStream.h:238
grk::FileFormat::brand
uint32_t brand
Definition: FileFormat.h:237
_grk_jp2_color::has_colour_specification_box
bool has_colour_specification_box
Definition: grok.h:610
_grk_cparameters::display_resolution
double display_resolution[2]
Definition: grok.h:550
grk::grk_jp2_comps::bpc
uint8_t bpc
Definition: FileFormat.h:94
grk::jp2_write_jp2c
static bool jp2_write_jp2c(FileFormat *fileFormat)
Writes the Jpeg2000 code stream Header box - JP2C Header box.
Definition: FileFormat.cpp:1899
grk::CodeStream::getStream
BufferedStream * getStream()
Definition: CodeStream.cpp:999
grk::FileFormat::~FileFormat
~FileFormat()
Definition: FileFormat.cpp:2498
GRK_CLRSPC_CMYK
@ GRK_CLRSPC_CMYK
CMYK.
Definition: grok.h:324
grk::jp2_read_header_procedure
static bool jp2_read_header_procedure(FileFormat *fileFormat)
Reads a JPEG 2000 file header structure.
Definition: FileFormat.cpp:2017
grk::FileFormat::bpc
uint8_t bpc
Definition: FileFormat.h:229
_grk_cparameters::write_capture_resolution_from_file
bool write_capture_resolution_from_file
Definition: grok.h:543
grk::grk_jp2_img_header_writer_handler::m_data
uint8_t * m_data
Definition: FileFormat.h:282
grk::FileFormat::free_color
static void free_color(grk_jp2_color *color)
Definition: FileFormat.cpp:2971
grk::grk_jp2_header_handler
Definition: FileFormat.h:271
grk::jp2_read_xml
static bool jp2_read_xml(FileFormat *fileFormat, uint8_t *p_xml_data, uint32_t xml_size)
Read XML box.
Definition: FileFormat.cpp:670
grk::grk_jp2_asoc::level
uint32_t level
Definition: FileFormat.h:137
_grk_image::color
grk_jp2_color color
Definition: grok.h:907
JP2_CDEF
#define JP2_CDEF
Channel Definition box.
Definition: FileFormat.h:46
GRK_COMPONENT_TYPE
GRK_COMPONENT_TYPE
Definition: grok.h:836
_grk_header_info::asocs
grk_asoc asocs[GRK_NUM_ASOC_BOXES_SUPPORTED]
Definition: grok.h:673
GRK_ENUM_CLRSPC_CIE
@ GRK_ENUM_CLRSPC_CIE
Definition: grok.h:334
JP2_BPCC
#define JP2_BPCC
Bits per component box.
Definition: FileFormat.h:48
GRK_CLRSPC_SRGB
@ GRK_CLRSPC_SRGB
sRGB
Definition: grok.h:320
grk::BufferedStream
Byte input-output stream.
Definition: BufferedStream.h:38
JP2_ASOC
#define JP2_ASOC
Associated data.
Definition: FileFormat.h:61
_grk_image::comps
grk_image_comp * comps
image components
Definition: grok.h:906
grk::CodeStream::init_decompress
void init_decompress(grk_dparameters *p_param)
Set up decompressor function handler.
Definition: CodeStream.cpp:1204
grk::jp2_init_end_header_reading
static bool jp2_init_end_header_reading(FileFormat *fileFormat)
Sets up the procedures to do on reading header after the code stream.
Definition: FileFormat.cpp:1966
grk::grk_write
void grk_write(uint8_t *p_buffer, TYPE value, uint32_t nb_bytes)
Definition: BufferedStream.h:217
GRK_BOX_SIZE
#define GRK_BOX_SIZE
Definition: FileFormat.cpp:30
_grk_cparameters::write_capture_resolution
bool write_capture_resolution
Definition: grok.h:546
grk::jp2_init_header_reading
static bool jp2_init_header_reading(FileFormat *fileFormat)
Sets up the procedures to do on reading header.
Definition: FileFormat.cpp:2448
grk::FileFormat::postDecompress
bool postDecompress(grk_image *p_image)
Definition: FileFormat.cpp:2665
GRK_DEFAULT_CIELAB_SPACE
#define GRK_DEFAULT_CIELAB_SPACE
Definition: grok.h:304
grk::FileFormat::decompress_tile
bool decompress_tile(grk_image *p_image, uint16_t tile_index)
decompress tile
Definition: FileFormat.cpp:2653
_grk_channel_description::typ
uint16_t typ
Definition: grok.h:569
grk::GRK_WARN
void GRK_WARN(const char *fmt,...)
Definition: logger.cpp:49
_grk_image::xmp_buf
uint8_t * xmp_buf
Definition: grok.h:914
grk::JP2_STATE_CODESTREAM
@ JP2_STATE_CODESTREAM
Definition: FileFormat.h:79
grk::CodeStream::end_compress
bool end_compress(void)
Definition: CodeStream.cpp:1807
grk::grk_calloc
void * grk_calloc(size_t num, size_t size)
Allocate a memory block with elements initialized to 0.
Definition: MemManager.cpp:111
grk::JP2_STATE_SIGNATURE
@ JP2_STATE_SIGNATURE
Definition: FileFormat.h:76
grk::calc_res
double calc_res(uint16_t num, uint16_t den, uint8_t exponent)
Definition: FileFormat.cpp:712
GRK_CLRSPC_GRAY
@ GRK_CLRSPC_GRAY
grayscale
Definition: grok.h:321
grk::jp2_write_channel_definition
static uint8_t * jp2_write_channel_definition(FileFormat *fileFormat, uint32_t *p_nb_bytes_written)
Writes the Channel Definition box.
Definition: FileFormat.cpp:956
grk::FileFormat::xml
grk_jp2_buffer xml
Definition: FileFormat.h:254
GRK_NUM_ASOC_BOXES_SUPPORTED
#define GRK_NUM_ASOC_BOXES_SUPPORTED
Definition: grok.h:351
_grk_cparameters::capture_resolution_from_file
double capture_resolution_from_file[2]
Definition: grok.h:544
GRK_CLRSPC_SYCC
@ GRK_CLRSPC_SYCC
standard YCC (YUV)
Definition: grok.h:322
grk::grk_jp2_buffer::grk_jp2_buffer
grk_jp2_buffer()
Definition: FileFormat.h:101
grk::grk_image_single_component_data_alloc
bool grk_image_single_component_data_alloc(grk_image_comp *comp)
Allocate data for single image component.
Definition: CodeStream.cpp:200
grk::FileFormat
JPEG 2000 file format reader/writer.
Definition: FileFormat.h:158
grk::jp2_write_xml
static uint8_t * jp2_write_xml(FileFormat *fileFormat, uint32_t *p_nb_bytes_written)
Write XML box.
Definition: FileFormat.cpp:683
GRK_ENUM_CLRSPC_CMYK
@ GRK_ENUM_CLRSPC_CMYK
Definition: grok.h:333
grk::grk_free
void grk_free(void *ptr)
Deallocates or frees a memory block.
Definition: MemManager.cpp:141
grk::FileFormat::start_compress
bool start_compress(void)
Definition: FileFormat.cpp:2728
_grk_palette_data::channel_sign
bool * channel_sign
Definition: grok.h:598
grk::CodeStream::m_input_image
grk_image * m_input_image
internal/private encoded / decompressed image
Definition: CodeStream.h:303
grk::FileFormat::IPR
uint8_t IPR
Definition: FileFormat.h:232
grk::jp2_write_uuids
static bool jp2_write_uuids(FileFormat *fileFormat)
Definition: FileFormat.cpp:1834
grk::jp2_free_palette_clr
static void jp2_free_palette_clr(grk_jp2_color *color)
Definition: FileFormat.cpp:1737
_grk_image::numcomps
uint16_t numcomps
number of components in the image
Definition: grok.h:902
_grk_jp2_color::channel_definition
grk_channel_definition * channel_definition
Definition: grok.h:608
grk::jp2_write_component_mapping
static uint8_t * jp2_write_component_mapping(FileFormat *fileFormat, uint32_t *p_nb_bytes_written)
Definition: FileFormat.cpp:1594
_grk_plugin_tile
Plugin tile.
Definition: grok.h:1251
grk::grk_jp2_buffer
Definition: FileFormat.h:97
grk::grk_jp2_uuid
Definition: FileFormat.h:142
_grk_jp2_color::icc_profile_len
uint32_t icc_profile_len
Definition: grok.h:607
grk::CodeStream::compress_tile
bool compress_tile(uint16_t tile_index, uint8_t *p_data, uint64_t data_size)
Definition: CodeStream.cpp:1773
grk::jp2_write_res
static uint8_t * jp2_write_res(FileFormat *fileFormat, uint32_t *p_nb_bytes_written)
Writes the Resolution box.
Definition: FileFormat.cpp:855
_grk_image_comp::w
uint32_t w
data width
Definition: grok.h:865
grk::JP2_STATE_UNKNOWN
@ JP2_STATE_UNKNOWN
Definition: FileFormat.h:81
grk::JP2_STATE_END_CODESTREAM
@ JP2_STATE_END_CODESTREAM
Definition: FileFormat.h:80
grk::FileFormat::m_procedure_list
std::vector< jp2_procedure > * m_procedure_list
list of execution procedures
Definition: FileFormat.h:221
grk::grk_jp2_box
JP2 Box.
Definition: FileFormat.h:266
grk::grk_jp2_asoc
Association box (ASOC data) struct, defined by level, label and optionally XML data.
Definition: FileFormat.h:129
GRK_CLRSPC_CUSTOM_CIE
@ GRK_CLRSPC_CUSTOM_CIE
custom CIE LAB
Definition: grok.h:326
grk::FileFormat::UnkC
uint8_t UnkC
Definition: FileFormat.h:231
MAX
#define MAX
JP2_CAPTURE_RES
#define JP2_CAPTURE_RES
Capture resolution box.
Definition: FileFormat.h:52
grk::FileFormat::decompress
bool decompress(grk_plugin_tile *tile, grk_image *p_image)
Definition: FileFormat.cpp:2684
grk::FileFormat::codeStream
CodeStream * codeStream
handle to the J2K codec
Definition: FileFormat.h:217
grk::jp2_write_jp
static bool jp2_write_jp(FileFormat *fileFormat)
Writes a JPEG 2000 file signature box.
Definition: FileFormat.cpp:1940
grk::grk_jp2_img_header_writer_handler
Definition: FileFormat.h:278
_grk_cparameters::capture_resolution
double capture_resolution[2]
Definition: grok.h:547
grk::FileFormat::numcomps
uint16_t numcomps
Definition: FileFormat.h:228
_grk_header_info::xml_data
uint8_t * xml_data
Definition: grok.h:666
GRK_COMPONENT_TYPE_COLOUR
@ GRK_COMPONENT_TYPE_COLOUR
Definition: grok.h:838
grk::FileFormat::end_compress
bool end_compress(void)
Definition: FileFormat.cpp:2960
grk::jp2_read_jp2h
static bool jp2_read_jp2h(FileFormat *fileFormat, uint8_t *p_header_data, uint32_t header_size)
Reads the Jpeg2000 file Header box - JP2 Header box (warning, this is a super box).
Definition: FileFormat.cpp:2316
grk::JP2_STATE_HEADER
@ JP2_STATE_HEADER
Definition: FileFormat.h:78
_grk_palette_data::num_entries
uint16_t num_entries
Definition: grok.h:595
grk::FileFormat::color
grk_jp2_color color
Definition: FileFormat.h:246
_grk_image_comp::association
GRK_COMPONENT_ASSOC association
Definition: grok.h:884
grk::jp2_write_bpc
static uint8_t * jp2_write_bpc(FileFormat *fileFormat, uint32_t *p_nb_bytes_written)
Writes the Bit per Component box.
Definition: FileFormat.cpp:902
_grk_image_comp::type
GRK_COMPONENT_TYPE type
Definition: grok.h:883
grk::CodeStream::init_compress
bool init_compress(grk_cparameters *p_param, grk_image *p_image)
Definition: CodeStream.cpp:1230
grk::FileFormat::uuids
grk_jp2_uuid uuids[JP2_MAX_NUM_UUIDS]
Definition: FileFormat.h:255
grk::grk_jp2_buffer::ownsData
bool ownsData
Definition: FileFormat.h:119
grk::FileFormat::display_resolution
double display_resolution[2]
Definition: FileFormat.h:252
JP2_IHDR
#define JP2_IHDR
Image header box.
Definition: FileFormat.h:41
grk::FileFormat::needs_xl_jp2c_box_length
bool needs_xl_jp2c_box_length
Definition: FileFormat.h:243
grk::FileFormat::init_decompress
void init_decompress(grk_dparameters *p_param)
Set up decompressor function handler.
Definition: FileFormat.cpp:2712
grk::FileFormat::cl
uint32_t * cl
Definition: FileFormat.h:240
grk::jp2_img_header
static const grk_jp2_header_handler jp2_img_header[]
Definition: FileFormat.cpp:403
GRK_CLRSPC_UNKNOWN
@ GRK_CLRSPC_UNKNOWN
unknown
Definition: grok.h:319
_grk_palette_data::channel_prec
uint8_t * channel_prec
Definition: grok.h:599
grk::jp2_apply_palette_clr
static bool jp2_apply_palette_clr(grk_image *image, grk_jp2_color *color)
Apply collected palette data.
Definition: FileFormat.cpp:1455
grk::BufferedStream::get_number_byte_left
uint64_t get_number_byte_left(void)
Get the number of bytes left before end of stream.
Definition: BufferedStream.cpp:333
grk::max_num_components
const uint32_t max_num_components
Definition: CodeStream.h:47
grk::CodeStream
Definition: CodeStream.h:164
grk::grk_jp2_comps
JP2 component.
Definition: FileFormat.h:91
grk::FileFormat::compress
bool compress(grk_plugin_tile *tile)
Definition: FileFormat.cpp:2950
_grk_image_comp
Image component.
Definition: grok.h:859
grk::FileFormat::jp2_state
uint32_t jp2_state
Definition: FileFormat.h:244
grk_asoc::label
const char * label
Definition: grok.h:615
grk::jp2_write_ftyp
static bool jp2_write_ftyp(FileFormat *fileFormat)
Writes a FTYP box - File type box.
Definition: FileFormat.cpp:1859
_grk_image::iptc_buf
uint8_t * iptc_buf
Definition: grok.h:912
JP2_LBL
#define JP2_LBL
Association label.
Definition: FileFormat.h:62
grk::FileFormat::has_display_resolution
bool has_display_resolution
Definition: FileFormat.h:251
_grk_dparameters
Core decompress parameters.
Definition: grok.h:681
GRK_COMPONENT_TYPE_UNSPECIFIED
@ GRK_COMPONENT_TYPE_UNSPECIFIED
Definition: grok.h:841
_grk_component_mapping_comp
Component mappings: component index, mapping type, palette column.
Definition: grok.h:584
grk::jp2_exec
static bool jp2_exec(FileFormat *fileFormat, std::vector< jp2_procedure > *procs)
Executes the given procedures on the given codec.
Definition: FileFormat.cpp:2153
_grk_codestream_info_v2
Code stream info v2.
Definition: grok.h:1101
JP2_UUID
#define JP2_UUID
UUID box.
Definition: FileFormat.h:57
grk::FileFormat::approx
uint8_t approx
Definition: FileFormat.h:234
grk::jp2_procedure
bool(* jp2_procedure)(FileFormat *fileFormat)
Definition: FileFormat.h:153
grk::jp2_read_box_hdr
static bool jp2_read_box_hdr(grk_jp2_box *box, uint32_t *p_number_bytes_read, BufferedStream *stream)
Reads a box header.
Definition: FileFormat.cpp:447
grk::FileFormat::end_decompress
bool end_decompress(void)
Reading function used after code stream if necessary.
Definition: FileFormat.cpp:2699
_grk_image_comp::sgnd
bool sgnd
Definition: grok.h:878
grk::jp2_read_uuid
static bool jp2_read_uuid(FileFormat *fileFormat, uint8_t *p_header_data, uint32_t header_data_size)
Read a UUID box.
Definition: FileFormat.cpp:688
grk::jp2_read_jp
static bool jp2_read_jp(FileFormat *fileFormat, uint8_t *p_header_data, uint32_t header_size)
Reads a JPEG 2000 file signature box.
Definition: FileFormat.cpp:2208
grk_palette_data
struct _grk_palette_data grk_palette_data
Palette data.
_grk_palette_data::component_mapping
grk_component_mapping_comp * component_mapping
Definition: grok.h:596
grk::CodeStream::decompress_tile
bool decompress_tile(grk_image *p_image, uint16_t tile_index)
decompress tile
Definition: CodeStream.cpp:1132
_grk_header_info::xml_data_len
size_t xml_data_len
Definition: grok.h:667
grk::JP2_IMG_STATE_NONE
@ JP2_IMG_STATE_NONE
Definition: FileFormat.h:85
_grk_image::y0
uint32_t y0
YOsiz: vertical offset from the origin of the reference grid to the top side of the image area.
Definition: grok.h:896
grk::grk_jp2_uuid::grk_jp2_uuid
grk_jp2_uuid(const uint8_t myuuid[16], uint8_t *buf, size_t size, bool owns)
Definition: FileFormat.h:144
GRK_ENUM_CLRSPC_GRAY
@ GRK_ENUM_CLRSPC_GRAY
Definition: grok.h:336
grk::FileFormat::get_cstr_index
grk_codestream_index * get_cstr_index(void)
Definition: FileFormat.cpp:3101
grk::find_cf
void find_cf(double x, uint32_t *num, uint32_t *den)
Definition: FileFormat.cpp:788
grk::grk_jp2_buffer::len
size_t len
Definition: FileFormat.h:118
GRK_CLRSPC_DEFAULT_CIE
@ GRK_CLRSPC_DEFAULT_CIE
default CIE LAB
Definition: grok.h:325
grk
Copyright (C) 2016-2021 Grok Image Compression Inc.
Definition: BitIO.cpp:23
grk::jp2_write_ihdr
static uint8_t * jp2_write_ihdr(FileFormat *fileFormat, uint32_t *p_nb_bytes_written)
Writes the Image Header box - Image Header box.
Definition: FileFormat.cpp:573
grk::FileFormat::read_asoc
uint32_t read_asoc(uint8_t **header_data, uint32_t *header_data_size, uint32_t asocSize, uint32_t level)
Definition: FileFormat.cpp:2999
JP2_COLR
#define JP2_COLR
Colour specification box.
Definition: FileFormat.h:42
grk::FileFormat::m_validation_list
std::vector< jp2_procedure > * m_validation_list
list of validation procedures
Definition: FileFormat.h:219
grk::FileFormat::asocs
std::vector< grk_jp2_asoc * > asocs
Definition: FileFormat.h:258
GRK_CUSTOM_CIELAB_SPACE
#define GRK_CUSTOM_CIELAB_SPACE
Definition: grok.h:303
grk::jp2_write_res_box
static void jp2_write_res_box(double resx, double resy, uint32_t box_id, uint8_t **current_res_ptr)
Definition: FileFormat.cpp:816
grk::jp2_read_palette_clr
static bool jp2_read_palette_clr(FileFormat *fileFormat, uint8_t *p_pclr_header_data, uint32_t pclr_header_size)
Collect palette data.
Definition: FileFormat.cpp:1672
grk::jp2_write_buffer
static uint8_t * jp2_write_buffer(uint32_t boxId, grk_jp2_buffer *buffer, uint32_t *p_nb_bytes_written)
Write buffer box.
Definition: FileFormat.cpp:622
grk::FileFormat::get_cstr_info
grk_codestream_info_v2 * get_cstr_info(void)
Definition: FileFormat.cpp:3096
JP2_JP
#define JP2_JP
JPEG 2000 signature box.
Definition: FileFormat.h:38
_grk_image::has_capture_resolution
bool has_capture_resolution
Definition: grok.h:908
GRK_ENUM_CLRSPC_UNKNOWN
@ GRK_ENUM_CLRSPC_UNKNOWN
Definition: grok.h:332
grk::jp2_read_bpc
static bool jp2_read_bpc(FileFormat *fileFormat, uint8_t *p_bpc_header_data, uint32_t bpc_header_size)
Reads a Bit per Component box.
Definition: FileFormat.cpp:931
grk::grk_jp2_box::length
uint64_t length
Definition: FileFormat.h:267
grk::grk_jp2_img_header_writer_handler::m_size
uint32_t m_size
Definition: FileFormat.h:284
grk::BufferedStream::read
size_t read(uint8_t *p_buffer, size_t p_size)
Reads some bytes from the stream.
Definition: BufferedStream.cpp:51
grk::jp2_read_colr
static bool jp2_read_colr(FileFormat *fileFormat, uint8_t *p_colr_header_data, uint32_t colr_header_size)
Reads the Color Specification box.
Definition: FileFormat.cpp:1211
grk::grk_malloc
void * grk_malloc(size_t size)
Allocate an uninitialized memory block.
Definition: MemManager.cpp:105
grk_includes.h
grk::jp2_read_ihdr
static bool jp2_read_ihdr(FileFormat *fileFormat, uint8_t *p_image_header_data, uint32_t image_header_size)
Reads a IHDR box - Image Header box.
Definition: FileFormat.cpp:488
grk::jp2_init_header_writing
static bool jp2_init_header_writing(FileFormat *fileFormat)
Sets up the procedures to do on writing header.
Definition: FileFormat.cpp:2434
grk::jp2_read_res_box
static bool jp2_read_res_box(uint32_t *id, uint32_t *num, uint32_t *den, uint32_t *exponent, uint8_t **p_resolution_data)
Definition: FileFormat.cpp:717
grk::jp2_skip_jp2c
static bool jp2_skip_jp2c(FileFormat *fileFormat)
Definition: FileFormat.cpp:2296
_grk_palette_data::num_channels
uint8_t num_channels
Definition: grok.h:597
grk::JP2_STATE_NONE
@ JP2_STATE_NONE
Definition: FileFormat.h:75
GRK_CLRSPC_EYCC
@ GRK_CLRSPC_EYCC
extended YCC
Definition: grok.h:323
grk::jp2_write_jp2h
static bool jp2_write_jp2h(FileFormat *fileFormat)
Definition: FileFormat.cpp:1750
_grk_header_info
Header info.
Definition: grok.h:623
grk::FileFormat::minversion
uint32_t minversion
Definition: FileFormat.h:238
grk::grk_jp2_buffer::grk_jp2_buffer
grk_jp2_buffer(uint8_t *buf, size_t size, bool owns)
Definition: FileFormat.h:98
grk::jp2_read_asoc
static bool jp2_read_asoc(FileFormat *fileFormat, uint8_t *header_data, uint32_t header_data_size)
Read Associated data.
Definition: FileFormat.cpp:650
grk::grk_jp2_buffer::alloc
void alloc(size_t length)
Definition: FileFormat.h:104
_grk_image_comp::data
int32_t * data
image component data
Definition: grok.h:880
grk::j2k_get_cstr_index
grk_codestream_index * j2k_get_cstr_index(CodeStream *codeStream)
Get the code stream index from a JPEG2000 codec.
Definition: Dump.cpp:352
grk::j2k_dump
void j2k_dump(CodeStream *codeStream, uint32_t flag, FILE *out_stream)
Dump some elements from the J2K decompression structure .
Definition: Dump.cpp:87
grk::jp2_read_box
static bool jp2_read_box(grk_jp2_box *box, uint8_t *p_data, uint32_t *p_number_bytes_read, uint64_t p_box_max_size)
Reads a box header.
Definition: FileFormat.cpp:2367
grk::max_supported_precision
const uint32_t max_supported_precision
Definition: CodeStream.h:56
grk::FileFormat::FileFormat
FileFormat(bool isDecoder, BufferedStream *stream)
Definition: FileFormat.cpp:2457
_grk_image::iptc_len
size_t iptc_len
Definition: grok.h:913
grk::grk_jp2_buffer::buffer
uint8_t * buffer
Definition: FileFormat.h:117
grk::jp2_header
static const grk_jp2_header_handler jp2_header[]
Definition: FileFormat.cpp:395
grk::jp2_init_compress_validation
static bool jp2_init_compress_validation(FileFormat *fileFormat)
Sets up the validation ,i.e.
Definition: FileFormat.cpp:2418
grk::XMP_UUID
const uint8_t XMP_UUID[16]
Definition: FileFormat.h:71
grk::CorruptJP2BoxException
Definition: grk_exceptions.h:26
JP2_DISPLAY_RES
#define JP2_DISPLAY_RES
Display resolution box.
Definition: FileFormat.h:53
grk::FileFormat::compress_tile
bool compress_tile(uint16_t tile_index, uint8_t *p_data, uint64_t data_size)
Definition: FileFormat.cpp:2955
_grk_channel_description
Channel definition: channel index, type, association.
Definition: grok.h:567
grk::FileFormat::comps
grk_jp2_comps * comps
Definition: FileFormat.h:241
grk::grk_realloc
void * grk_realloc(void *ptr, size_t new_size)
Reallocate memory blocks.
Definition: MemManager.cpp:135
grk::JP2_IMG_STATE_UNKNOWN
@ JP2_IMG_STATE_UNKNOWN
Definition: FileFormat.h:85
grk::grk_jp2_asoc::~grk_jp2_asoc
~grk_jp2_asoc()
Definition: FileFormat.h:134
_grk_image::xmp_len
size_t xmp_len
Definition: grok.h:915
grk::jp2_check_color
static bool jp2_check_color(grk_image *image, grk_jp2_color *color)
Definition: FileFormat.cpp:1324
grk::FileFormat::j2k_codestream_offset
uint64_t j2k_codestream_offset
Definition: FileFormat.h:242
_grk_image::color_space
GRK_COLOR_SPACE color_space
color space: sRGB, Greyscale or YUV
Definition: grok.h:904
grk_channel_definition
struct _grk_channel_definition grk_channel_definition
Channel definitions and number of definitions.
grk::jp2_read_component_mapping
static bool jp2_read_component_mapping(FileFormat *fileFormat, uint8_t *component_mapping_header_data, uint32_t component_mapping_header_size)
Collect component mapping data.
Definition: FileFormat.cpp:1554
grk::jp2_read_res
static bool jp2_read_res(FileFormat *fileFormat, uint8_t *p_resolution_data, uint32_t resolution_size)
Reads a Resolution box.
Definition: FileFormat.cpp:747
grk::grk_jp2_asoc::grk_jp2_asoc
grk_jp2_asoc(uint32_t lev, std::string lbl)
Definition: FileFormat.h:130
grk::FileFormat::numcl
uint32_t numcl
Definition: FileFormat.h:239
GRK_COMPONENT_ASSOC_UNASSOCIATED
@ GRK_COMPONENT_ASSOC_UNASSOCIATED
Definition: grok.h:852
grk::jp2_apply_channel_definition
static void jp2_apply_channel_definition(grk_image *image, grk_jp2_color *color)
Definition: FileFormat.cpp:1002
grk::grk_jp2_uuid::grk_jp2_uuid
grk_jp2_uuid()
Definition: FileFormat.h:143
grk::jp2_write_colr
static uint8_t * jp2_write_colr(FileFormat *fileFormat, uint32_t *p_nb_bytes_written)
Writes the Colour Specification box.
Definition: FileFormat.cpp:1154
grk::grk_jp2_img_header_writer_handler::handler
uint8_t *(* handler)(FileFormat *fileFormat, uint32_t *data_size)
Definition: FileFormat.h:280
grk::FileFormat::meth
uint8_t meth
Definition: FileFormat.h:233
grk::JP2_STATE
JP2_STATE
Definition: FileFormat.h:74
grk::jp2_init_end_header_writing
static bool jp2_init_end_header_writing(FileFormat *fileFormat)
Sets up the procedures to do on writing header after the code stream.
Definition: FileFormat.cpp:1957
JP2_CMAP
#define JP2_CMAP
Component Mapping box.
Definition: FileFormat.h:45
grk::grk_jp2_header_handler::handler
bool(* handler)(FileFormat *fileFormat, uint8_t *p_header_data, uint32_t header_size)
Definition: FileFormat.h:275
JP2_MAX_NUM_UUIDS
#define JP2_MAX_NUM_UUIDS
Definition: FileFormat.h:67
grk::FileFormat::precedence
uint8_t precedence
Definition: FileFormat.h:236
grk::jp2_write_palette_clr
static uint8_t * jp2_write_palette_clr(FileFormat *fileFormat, uint32_t *p_nb_bytes_written)
Definition: FileFormat.cpp:1624
grk::CodeStream::start_compress
bool start_compress(void)
Definition: CodeStream.cpp:1211
grk::grk_jp2_buffer::dealloc
void dealloc()
Definition: FileFormat.h:110
grk::jp2_img_find_handler
static const grk_jp2_header_handler * jp2_img_find_handler(uint32_t id)
Finds the image execution function related to the given box id.
Definition: FileFormat.cpp:2187
grk::ICodeStream
Definition: CodeStream.h:125
grk::CodeStream::read_header
bool read_header(grk_header_info *header_info, grk_image **p_image)
Main header reading function handler.
Definition: CodeStream.cpp:1023
_grk_image::x1
uint32_t x1
Xsiz: width of the reference grid.
Definition: grok.h:898
GRK_CLRSPC_ICC
@ GRK_CLRSPC_ICC
ICC profile.
Definition: grok.h:327
_grk_channel_definition::descriptions
grk_channel_description * descriptions
Definition: grok.h:577
_grk_channel_definition::num_channel_descriptions
uint16_t num_channel_descriptions
Definition: grok.h:578
_grk_jp2_color::icc_profile_buf
uint8_t * icc_profile_buf
Definition: grok.h:606
grk::FileFormat::read_header
bool read_header(grk_header_info *header_info, grk_image **p_image)
Main header reading function handler.
Definition: FileFormat.cpp:2514
grk::jp2_init_decompress_validation
static bool jp2_init_decompress_validation(FileFormat *fileFormat)
Sets up the validation ,i.e.
Definition: FileFormat.cpp:2425
grk::BadAsocException
Definition: grk_exceptions.h:37
_grk_jp2_color
ICC profile, palette, channel definition.
Definition: grok.h:605
grk::grk_jp2_box::type
uint32_t type
Definition: FileFormat.h:268
JP2_JP2H
#define JP2_JP2H
JP2 header box (super-box)
Definition: FileFormat.h:40
grk::jp2_default_validation
static bool jp2_default_validation(FileFormat *fileFormat)
Definition: FileFormat.cpp:1975
_grk_image
Image.
Definition: grok.h:890
grk::FileFormat::C
uint8_t C
Definition: FileFormat.h:230
grk::grk_jp2_asoc::label
std::string label
Definition: FileFormat.h:138
_grk_palette_data::lut
uint32_t * lut
Definition: grok.h:594
_grk_cparameters
Compress parameters.
Definition: grok.h:440
GRK_ENUM_CLRSPC_EYCC
@ GRK_ENUM_CLRSPC_EYCC
Definition: grok.h:338
_grk_channel_description::cn
uint16_t cn
Definition: grok.h:568
grk::grk_jp2_header_handler::id
uint32_t id
Definition: FileFormat.h:273
_grk_image::y1
uint32_t y1
Ysiz: height of the reference grid.
Definition: grok.h:900
_grk_image_comp::prec
uint8_t prec
precision
Definition: grok.h:877
grk::FileFormat::h
uint32_t h
Definition: FileFormat.h:226
grk::jp2_find_handler
static const grk_jp2_header_handler * jp2_find_handler(uint32_t id)
Finds the execution function related to the given box id.
Definition: FileFormat.cpp:2168
grk::JP2_IMG_STATE
JP2_IMG_STATE
Definition: FileFormat.h:84
grk::JP2_STATE_FILE_TYPE
@ JP2_STATE_FILE_TYPE
Definition: FileFormat.h:77
JP2_XML
#define JP2_XML
XML box.
Definition: FileFormat.h:56
JP2_RES
#define JP2_RES
Resolution box (super-box)
Definition: FileFormat.h:51
_grk_cparameters::write_display_resolution
bool write_display_resolution
Definition: grok.h:549
grk::GRK_ERROR
void GRK_ERROR(const char *fmt,...)
Definition: logger.cpp:57
grk::grk_jp2_comps::grk_jp2_comps
grk_jp2_comps()
Definition: FileFormat.h:92
ojph::info
message_info info
Definition: ojph_message.cpp:50
grk::CodeStream::compress
bool compress(grk_plugin_tile *tile)
Definition: CodeStream.cpp:1688
_grk_channel_description::asoc
uint16_t asoc
Definition: grok.h:570
GRK_ENUM_COLOUR_SPACE
GRK_ENUM_COLOUR_SPACE
Definition: grok.h:331
JP2_JP2
#define JP2_JP2
File type fields.
Definition: FileFormat.h:49
grk::FileFormat::numUuids
uint32_t numUuids
Definition: FileFormat.h:256
grk::FileFormat::alloc_palette
static void alloc_palette(grk_jp2_color *color, uint8_t num_channels, uint16_t num_entries)
Definition: FileFormat.cpp:2984
grk::FileFormat::has_capture_resolution
bool has_capture_resolution
Definition: FileFormat.h:248
grk::FileFormat::dump
void dump(uint32_t flag, FILE *out_stream)
Definition: FileFormat.cpp:3092
grk::CodeStream::end_decompress
bool end_decompress(void)
Reading function used after code stream if necessary.
Definition: CodeStream.cpp:1199
_grk_image::x0
uint32_t x0
XOsiz: horizontal offset from the origin of the reference grid to the left side of the image area.
Definition: grok.h:893
grk::FileFormat::init_compress
bool init_compress(grk_cparameters *p_param, grk_image *p_image)
Definition: FileFormat.cpp:2758