Grok  7.6.2
FileFormat.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2016-2020 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 namespace grk {
25 
34 
35 #define JP2_JP 0x6a502020
36 #define JP2_FTYP 0x66747970
37 #define JP2_JP2H 0x6a703268
38 #define JP2_IHDR 0x69686472
39 #define JP2_COLR 0x636f6c72
40 #define JP2_JP2C 0x6a703263
41 #define JP2_PCLR 0x70636c72
42 #define JP2_CMAP 0x636d6170
43 #define JP2_CDEF 0x63646566
44 #define JP2_DTBL 0x6474626c
45 #define JP2_BPCC 0x62706363
46 #define JP2_JP2 0x6a703220
48 #define JP2_RES 0x72657320
49 #define JP2_CAPTURE_RES 0x72657363
50 #define JP2_DISPLAY_RES 0x72657364
52 #define JP2_JP2I 0x6a703269
53 #define JP2_XML 0x786d6c20
54 #define JP2_UUID 0x75756964
55 #define JP2_UINF 0x75696e66
56 #define JP2_ULST 0x756c7374
57 #define JP2_URL 0x75726c20
59 /* ----------------------------------------------------------------------- */
60 
61 #define JP2_MAX_NUM_UUIDS 128
62 
63 const uint8_t IPTC_UUID[16] = { 0x33, 0xC7, 0xA4, 0xD2, 0xB8, 0x1D, 0x47, 0x23,
64  0xA0, 0xBA, 0xF1, 0xA3, 0xE0, 0x97, 0xAD, 0x38 };
65 const uint8_t XMP_UUID[16] = { 0xBE, 0x7A, 0xCF, 0xCB, 0x97, 0xA9, 0x42, 0xE8,
66  0x9C, 0x71, 0x99, 0x94, 0x91, 0xE3, 0xAF, 0xAC };
67 
68 enum JP2_STATE {
75  JP2_STATE_UNKNOWN = 0x7fffffff /* ISO C restricts enumerator values to range of 'int' */
76 };
77 
80 };
81 
85 struct grk_jp2_comps {
87  {}
88  uint8_t bpc;
89 };
90 
92  grk_jp2_buffer(uint8_t *buf, size_t size, bool owns) :
93  buffer(buf), len(size), ownsData(owns) {
94  }
96  grk_jp2_buffer(nullptr, 0, false) {
97  }
98  void alloc(size_t length) {
99  dealloc();
100  buffer = new uint8_t[length];
101  len = length;
102  ownsData = true;
103  }
104  void dealloc() {
105  if (ownsData)
106  delete[] buffer;
107  buffer = nullptr;
108  ownsData = false;
109  len = 0;
110  }
111  uint8_t *buffer;
112  size_t len;
113  bool ownsData;
114 };
115 
116 struct grk_jp2_uuid: public grk_jp2_buffer {
118  grk_jp2_uuid(const uint8_t myuuid[16], uint8_t *buf, size_t size, bool owns) :
119  grk_jp2_buffer(buf, size, owns) {
120  for (int i = 0; i < 16; ++i)
121  uuid[i] = myuuid[i];
122  }
123  uint8_t uuid[16];
124 };
125 
126 struct FileFormat;
127 typedef bool (*jp2_procedure)(FileFormat *fileFormat);
128 
132 struct FileFormat : public ICodeStream {
133  FileFormat(bool isDecoder, BufferedStream *stream);
134  ~FileFormat();
135 
136 
138  bool read_header(grk_header_info *header_info, grk_image **p_image);
139 
141  void init_decompress(grk_dparameters *p_param);
142 
156  bool set_decompress_window(grk_image *p_image,
157  uint32_t start_x,
158  uint32_t start_y,
159  uint32_t end_x,
160  uint32_t end_y);
161 
162 
163  bool decompress( grk_plugin_tile *tile, grk_image *p_image);
164 
165  bool end_decompress(void);
166 
167  bool init_compress(grk_cparameters *p_param,grk_image *p_image);
168 
169  bool start_compress(void);
170 
171  bool compress(grk_plugin_tile* tile);
172 
173  bool compress_tile(uint16_t tile_index, uint8_t *p_data, uint64_t data_size);
174 
175  bool end_compress(void);
176 
177  bool decompress_tile(grk_image *p_image,uint16_t tile_index);
178 
179  void dump(int32_t flag, FILE *out_stream);
180 
182 
184 
185  static void free_color(grk_jp2_color *color);
186  static void alloc_palette(grk_jp2_color *color, uint8_t num_channels, uint16_t num_entries);
187 
191  std::vector<jp2_procedure> *m_validation_list;
193  std::vector<jp2_procedure> *m_procedure_list;
194 
195  /* width of image */
196  uint32_t w;
197  /* height of image */
198  uint32_t h;
199  /* number of components in the image */
200  uint16_t numcomps;
201  uint8_t bpc;
202  uint8_t C;
203  uint8_t UnkC;
204  uint8_t IPR;
205  uint8_t meth;
206  uint8_t approx;
208  uint8_t precedence;
209  uint32_t brand;
210  uint32_t minversion;
211  uint32_t numcl;
212  uint32_t *cl;
216  uint32_t jp2_state;
217  uint32_t jp2_img_state;
219 
222 
225 
228  uint32_t numUuids;
229 private:
230 
232 
233  bool postDecompress( grk_image *p_image);
234 };
235 
239 struct grk_jp2_box {
240  uint64_t length;
241  uint32_t type;
242 };
243 
245  /* marker value */
246  uint32_t id;
247  /* action linked to the marker */
248  bool (*handler)(FileFormat *fileFormat, uint8_t *p_header_data, uint32_t header_size);
249 };
250 
252  /* action to perform */
253  uint8_t* (*handler)(FileFormat *fileFormat, uint32_t *data_size);
254  /* result of the action : data */
255  uint8_t *m_data;
256  /* size of data */
257  uint32_t m_size;
258 };
259 
262 /* ----------------------------------------------------------------------- */
263 
267 
268 }
269 
GRK_COMPONENT_ASSOC_WHOLE_IMAGE
@ GRK_COMPONENT_ASSOC_WHOLE_IMAGE
Definition: grok.h:837
_grk_codestream_index
Code stream index info.
Definition: grok.h:1147
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:2211
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:1846
JP2_PCLR
#define JP2_PCLR
Palette box.
Definition: FileFormat.h:41
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:196
grk::FileFormat::enumcs
GRK_ENUM_COLOUR_SPACE enumcs
Definition: FileFormat.h:207
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:1025
grk::FileFormat::jp2_img_state
uint32_t jp2_img_state
Definition: FileFormat.h:217
GRK_RESOLUTION_BOX_SIZE
#define GRK_RESOLUTION_BOX_SIZE
Definition: FileFormat.cpp:29
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:2664
JP2_FTYP
#define JP2_FTYP
File type box.
Definition: FileFormat.h:36
grk::grk_jp2_uuid::uuid
uint8_t uuid[16]
Definition: FileFormat.h:123
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:608
grk::IPTC_UUID
const uint8_t IPTC_UUID[16]
Definition: FileFormat.h:63
grk::FileFormat::capture_resolution
double capture_resolution[2]
Definition: FileFormat.h:221
JP2_JP2C
#define JP2_JP2C
Contiguous code stream box.
Definition: FileFormat.h:40
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:209
_grk_jp2_color::has_colour_specification_box
bool has_colour_specification_box
Definition: grok.h:609
_grk_cparameters::display_resolution
double display_resolution[2]
Definition: grok.h:549
grk::grk_jp2_comps::bpc
uint8_t bpc
Definition: FileFormat.h:88
grk::jp2_write_jp2c
static bool jp2_write_jp2c(FileFormat *fileFormat)
Writes the Jpeg2000 code stream Header box - JP2C Header box.
Definition: FileFormat.cpp:1864
grk::CodeStream::getStream
BufferedStream * getStream()
Definition: CodeStream.cpp:999
grk::FileFormat::~FileFormat
~FileFormat()
Definition: FileFormat.cpp:2464
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:1982
grk::FileFormat::bpc
uint8_t bpc
Definition: FileFormat.h:201
_grk_cparameters::write_capture_resolution_from_file
bool write_capture_resolution_from_file
Definition: grok.h:542
grk::grk_jp2_img_header_writer_handler::m_data
uint8_t * m_data
Definition: FileFormat.h:255
grk::FileFormat::free_color
static void free_color(grk_jp2_color *color)
Definition: FileFormat.cpp:2915
grk::grk_jp2_header_handler
Definition: FileFormat.h:244
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:635
_grk_image::color
grk_jp2_color color
Definition: grok.h:896
JP2_CDEF
#define JP2_CDEF
Channel Definition box.
Definition: FileFormat.h:43
GRK_COMPONENT_TYPE
GRK_COMPONENT_TYPE
Definition: grok.h:825
GRK_ENUM_CLRSPC_CIE
@ GRK_ENUM_CLRSPC_CIE
Definition: grok.h:334
JP2_BPCC
#define JP2_BPCC
Bits per component box.
Definition: FileFormat.h:45
GRK_CLRSPC_SRGB
@ GRK_CLRSPC_SRGB
sRGB
Definition: grok.h:320
grk::BufferedStream
Byte input-output stream.
Definition: BufferedStream.h:38
_grk_image::comps
grk_image_comp * comps
image components
Definition: grok.h:895
grk::CodeStream::init_decompress
void init_decompress(grk_dparameters *p_param)
Set up decompressor function handler.
Definition: CodeStream.cpp:1229
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:1931
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:28
_grk_cparameters::write_capture_resolution
bool write_capture_resolution
Definition: grok.h:545
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:2413
grk::FileFormat::postDecompress
bool postDecompress(grk_image *p_image)
Definition: FileFormat.cpp:2609
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:2597
_grk_channel_description::typ
uint16_t typ
Definition: grok.h:568
grk::GRK_WARN
void GRK_WARN(const char *fmt,...)
Definition: logger.cpp:49
_grk_image::xmp_buf
uint8_t * xmp_buf
Definition: grok.h:903
grk::JP2_STATE_CODESTREAM
@ JP2_STATE_CODESTREAM
Definition: FileFormat.h:73
grk::CodeStream::end_compress
bool end_compress(void)
Definition: CodeStream.cpp:1834
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:70
grk::calc_res
double calc_res(uint16_t num, uint16_t den, uint8_t exponent)
Definition: FileFormat.cpp:677
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:921
grk::FileFormat::xml
grk_jp2_buffer xml
Definition: FileFormat.h:226
_grk_cparameters::capture_resolution_from_file
double capture_resolution_from_file[2]
Definition: grok.h:543
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:95
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:132
grk::jp2_write_xml
static uint8_t * jp2_write_xml(FileFormat *fileFormat, uint32_t *p_nb_bytes_written)
Write XML box.
Definition: FileFormat.cpp:648
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:2672
_grk_palette_data::channel_sign
bool * channel_sign
Definition: grok.h:597
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:204
grk::jp2_write_uuids
static bool jp2_write_uuids(FileFormat *fileFormat)
Definition: FileFormat.cpp:1799
grk::jp2_free_palette_clr
static void jp2_free_palette_clr(grk_jp2_color *color)
Definition: FileFormat.cpp:1702
_grk_image::numcomps
uint16_t numcomps
number of components in the image
Definition: grok.h:891
_grk_jp2_color::channel_definition
grk_channel_definition * channel_definition
Definition: grok.h:607
grk::jp2_write_component_mapping
static uint8_t * jp2_write_component_mapping(FileFormat *fileFormat, uint32_t *p_nb_bytes_written)
Definition: FileFormat.cpp:1559
_grk_plugin_tile
Plugin tile.
Definition: grok.h:1240
grk::grk_jp2_buffer
Definition: FileFormat.h:91
grk::grk_jp2_uuid
Definition: FileFormat.h:116
_grk_jp2_color::icc_profile_len
uint32_t icc_profile_len
Definition: grok.h:606
grk::CodeStream::compress_tile
bool compress_tile(uint16_t tile_index, uint8_t *p_data, uint64_t data_size)
Definition: CodeStream.cpp:1800
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:820
grk::FileFormat::m_stream
BufferedStream * m_stream
Definition: FileFormat.h:231
_grk_image_comp::w
uint32_t w
data width
Definition: grok.h:854
grk::JP2_STATE_UNKNOWN
@ JP2_STATE_UNKNOWN
Definition: FileFormat.h:75
grk::JP2_STATE_END_CODESTREAM
@ JP2_STATE_END_CODESTREAM
Definition: FileFormat.h:74
grk::FileFormat::m_procedure_list
std::vector< jp2_procedure > * m_procedure_list
list of execution procedures
Definition: FileFormat.h:193
grk::grk_jp2_box
JP2 Box.
Definition: FileFormat.h:239
GRK_CLRSPC_CUSTOM_CIE
@ GRK_CLRSPC_CUSTOM_CIE
custom CIE LAB
Definition: grok.h:326
grk::FileFormat::UnkC
uint8_t UnkC
Definition: FileFormat.h:203
MAX
#define MAX
JP2_CAPTURE_RES
#define JP2_CAPTURE_RES
Capture resolution box.
Definition: FileFormat.h:49
grk::j2k_dump
void j2k_dump(CodeStream *codeStream, int32_t flag, FILE *out_stream)
Dump some elements from the J2K decompression structure .
Definition: Dump.cpp:87
grk::FileFormat::decompress
bool decompress(grk_plugin_tile *tile, grk_image *p_image)
Definition: FileFormat.cpp:2628
grk::FileFormat::codeStream
CodeStream * codeStream
handle to the J2K codec
Definition: FileFormat.h:189
grk::jp2_write_jp
static bool jp2_write_jp(FileFormat *fileFormat)
Writes a JPEG 2000 file signature box.
Definition: FileFormat.cpp:1905
grk::grk_jp2_img_header_writer_handler
Definition: FileFormat.h:251
_grk_cparameters::capture_resolution
double capture_resolution[2]
Definition: grok.h:546
grk::FileFormat::numcomps
uint16_t numcomps
Definition: FileFormat.h:200
_grk_header_info::xml_data
uint8_t * xml_data
Definition: grok.h:658
GRK_COMPONENT_TYPE_COLOUR
@ GRK_COMPONENT_TYPE_COLOUR
Definition: grok.h:827
grk::FileFormat::end_compress
bool end_compress(void)
Definition: FileFormat.cpp:2904
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:2281
grk::JP2_STATE_HEADER
@ JP2_STATE_HEADER
Definition: FileFormat.h:72
_grk_palette_data::num_entries
uint16_t num_entries
Definition: grok.h:594
grk::FileFormat::color
grk_jp2_color color
Definition: FileFormat.h:218
_grk_image_comp::association
GRK_COMPONENT_ASSOC association
Definition: grok.h:873
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:867
_grk_image_comp::type
GRK_COMPONENT_TYPE type
Definition: grok.h:872
grk::CodeStream::init_compress
bool init_compress(grk_cparameters *p_param, grk_image *p_image)
Definition: CodeStream.cpp:1255
grk::FileFormat::uuids
grk_jp2_uuid uuids[JP2_MAX_NUM_UUIDS]
Definition: FileFormat.h:227
grk::grk_jp2_buffer::ownsData
bool ownsData
Definition: FileFormat.h:113
grk::FileFormat::display_resolution
double display_resolution[2]
Definition: FileFormat.h:224
JP2_IHDR
#define JP2_IHDR
Image header box.
Definition: FileFormat.h:38
grk::FileFormat::needs_xl_jp2c_box_length
bool needs_xl_jp2c_box_length
Definition: FileFormat.h:215
grk::FileFormat::init_decompress
void init_decompress(grk_dparameters *p_param)
Set up decompressor function handler.
Definition: FileFormat.cpp:2656
grk::FileFormat::cl
uint32_t * cl
Definition: FileFormat.h:212
grk::jp2_img_header
static const grk_jp2_header_handler jp2_img_header[]
Definition: FileFormat.cpp:388
GRK_CLRSPC_UNKNOWN
@ GRK_CLRSPC_UNKNOWN
unknown
Definition: grok.h:319
_grk_palette_data::channel_prec
uint8_t * channel_prec
Definition: grok.h:598
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:1420
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:85
grk::FileFormat::compress
bool compress(grk_plugin_tile *tile)
Definition: FileFormat.cpp:2894
_grk_image_comp
Image component.
Definition: grok.h:848
grk::FileFormat::jp2_state
uint32_t jp2_state
Definition: FileFormat.h:216
grk::jp2_write_ftyp
static bool jp2_write_ftyp(FileFormat *fileFormat)
Writes a FTYP box - File type box.
Definition: FileFormat.cpp:1824
_grk_image::iptc_buf
uint8_t * iptc_buf
Definition: grok.h:901
grk::FileFormat::has_display_resolution
bool has_display_resolution
Definition: FileFormat.h:223
_grk_dparameters
Core decompress parameters.
Definition: grok.h:670
GRK_COMPONENT_TYPE_UNSPECIFIED
@ GRK_COMPONENT_TYPE_UNSPECIFIED
Definition: grok.h:830
_grk_component_mapping_comp
Component mappings: component index, mapping type, palette column.
Definition: grok.h:583
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:2118
_grk_codestream_info_v2
Code stream info v2.
Definition: grok.h:1090
JP2_UUID
#define JP2_UUID
UUID box.
Definition: FileFormat.h:54
grk::FileFormat::approx
uint8_t approx
Definition: FileFormat.h:206
grk::jp2_procedure
bool(* jp2_procedure)(FileFormat *fileFormat)
Definition: FileFormat.h:127
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:432
grk::FileFormat::end_decompress
bool end_decompress(void)
Reading function used after code stream if necessary.
Definition: FileFormat.cpp:2643
_grk_image_comp::sgnd
bool sgnd
Definition: grok.h:867
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:653
grk::FileFormat::dump
void dump(int32_t flag, FILE *out_stream)
Definition: FileFormat.cpp:2945
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:2173
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:595
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:659
grk::JP2_IMG_STATE_NONE
@ JP2_IMG_STATE_NONE
Definition: FileFormat.h:79
_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:885
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:118
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:2954
grk::find_cf
void find_cf(double x, uint32_t *num, uint32_t *den)
Definition: FileFormat.cpp:753
grk::grk_jp2_buffer::len
size_t len
Definition: FileFormat.h:112
GRK_CLRSPC_DEFAULT_CIE
@ GRK_CLRSPC_DEFAULT_CIE
default CIE LAB
Definition: grok.h:325
grk
Copyright (C) 2016-2020 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:558
JP2_COLR
#define JP2_COLR
Colour specification box.
Definition: FileFormat.h:39
grk::FileFormat::m_validation_list
std::vector< jp2_procedure > * m_validation_list
list of validation procedures
Definition: FileFormat.h:191
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:781
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:1637
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:607
grk::FileFormat::get_cstr_info
grk_codestream_info_v2 * get_cstr_info(void)
Definition: FileFormat.cpp:2949
JP2_JP
#define JP2_JP
JPEG 2000 signature box.
Definition: FileFormat.h:35
_grk_image::has_capture_resolution
bool has_capture_resolution
Definition: grok.h:897
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:896
grk::grk_jp2_box::length
uint64_t length
Definition: FileFormat.h:240
grk::grk_jp2_img_header_writer_handler::m_size
uint32_t m_size
Definition: FileFormat.h:257
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:1176
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:473
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:2399
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:682
grk::jp2_skip_jp2c
static bool jp2_skip_jp2c(FileFormat *fileFormat)
Definition: FileFormat.cpp:2261
_grk_palette_data::num_channels
uint8_t num_channels
Definition: grok.h:596
grk::JP2_STATE_NONE
@ JP2_STATE_NONE
Definition: FileFormat.h:69
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:1715
_grk_header_info
Header info.
Definition: grok.h:615
grk::FileFormat::minversion
uint32_t minversion
Definition: FileFormat.h:210
grk::grk_jp2_buffer::grk_jp2_buffer
grk_jp2_buffer(uint8_t *buf, size_t size, bool owns)
Definition: FileFormat.h:92
grk::grk_jp2_buffer::alloc
void alloc(size_t length)
Definition: FileFormat.h:98
_grk_image_comp::data
int32_t * data
image component data
Definition: grok.h:869
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::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:2332
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:2422
_grk_image::iptc_len
size_t iptc_len
Definition: grok.h:902
grk::grk_jp2_buffer::buffer
uint8_t * buffer
Definition: FileFormat.h:111
grk::jp2_header
static const grk_jp2_header_handler jp2_header[]
Definition: FileFormat.cpp:381
grk::jp2_init_compress_validation
static bool jp2_init_compress_validation(FileFormat *fileFormat)
Sets up the validation ,i.e.
Definition: FileFormat.cpp:2383
grk::XMP_UUID
const uint8_t XMP_UUID[16]
Definition: FileFormat.h:65
grk::CorruptJP2BoxException
Definition: grk_exceptions.h:26
JP2_DISPLAY_RES
#define JP2_DISPLAY_RES
Display resolution box.
Definition: FileFormat.h:50
grk::FileFormat::compress_tile
bool compress_tile(uint16_t tile_index, uint8_t *p_data, uint64_t data_size)
Definition: FileFormat.cpp:2899
_grk_channel_description
Channel definition: channel index, type, association.
Definition: grok.h:566
grk::FileFormat::comps
grk_jp2_comps * comps
Definition: FileFormat.h:213
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:79
_grk_image::xmp_len
size_t xmp_len
Definition: grok.h:904
grk::jp2_check_color
static bool jp2_check_color(grk_image *image, grk_jp2_color *color)
Definition: FileFormat.cpp:1289
grk::FileFormat::j2k_codestream_offset
uint64_t j2k_codestream_offset
Definition: FileFormat.h:214
_grk_image::color_space
GRK_COLOR_SPACE color_space
color space: sRGB, Greyscale or YUV
Definition: grok.h:893
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:1519
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:712
grk::FileFormat::numcl
uint32_t numcl
Definition: FileFormat.h:211
GRK_COMPONENT_ASSOC_UNASSOCIATED
@ GRK_COMPONENT_ASSOC_UNASSOCIATED
Definition: grok.h:841
grk::jp2_apply_channel_definition
static void jp2_apply_channel_definition(grk_image *image, grk_jp2_color *color)
Definition: FileFormat.cpp:967
grk::grk_jp2_uuid::grk_jp2_uuid
grk_jp2_uuid()
Definition: FileFormat.h:117
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:1119
grk::grk_jp2_img_header_writer_handler::handler
uint8_t *(* handler)(FileFormat *fileFormat, uint32_t *data_size)
Definition: FileFormat.h:253
grk::FileFormat::meth
uint8_t meth
Definition: FileFormat.h:205
grk::JP2_STATE
JP2_STATE
Definition: FileFormat.h:68
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:1922
JP2_CMAP
#define JP2_CMAP
Component Mapping box.
Definition: FileFormat.h:42
grk::grk_jp2_header_handler::handler
bool(* handler)(FileFormat *fileFormat, uint8_t *p_header_data, uint32_t header_size)
Definition: FileFormat.h:248
JP2_MAX_NUM_UUIDS
#define JP2_MAX_NUM_UUIDS
Definition: FileFormat.h:61
grk::FileFormat::precedence
uint8_t precedence
Definition: FileFormat.h:208
grk::jp2_write_palette_clr
static uint8_t * jp2_write_palette_clr(FileFormat *fileFormat, uint32_t *p_nb_bytes_written)
Definition: FileFormat.cpp:1589
grk::CodeStream::start_compress
bool start_compress(void)
Definition: CodeStream.cpp:1236
grk::grk_jp2_buffer::dealloc
void dealloc()
Definition: FileFormat.h:104
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:2152
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:887
GRK_CLRSPC_ICC
@ GRK_CLRSPC_ICC
ICC profile.
Definition: grok.h:327
_grk_channel_definition::descriptions
grk_channel_description * descriptions
Definition: grok.h:576
_grk_channel_definition::num_channel_descriptions
uint16_t num_channel_descriptions
Definition: grok.h:577
_grk_jp2_color::icc_profile_buf
uint8_t * icc_profile_buf
Definition: grok.h:605
grk::FileFormat::read_header
bool read_header(grk_header_info *header_info, grk_image **p_image)
Main header reading function handler.
Definition: FileFormat.cpp:2477
grk::jp2_init_decompress_validation
static bool jp2_init_decompress_validation(FileFormat *fileFormat)
Sets up the validation ,i.e.
Definition: FileFormat.cpp:2390
_grk_jp2_color
ICC profile, palette, channel definition.
Definition: grok.h:604
grk::grk_jp2_box::type
uint32_t type
Definition: FileFormat.h:241
JP2_JP2H
#define JP2_JP2H
JP2 header box (super-box)
Definition: FileFormat.h:37
grk::jp2_default_validation
static bool jp2_default_validation(FileFormat *fileFormat)
Definition: FileFormat.cpp:1940
_grk_image
Image.
Definition: grok.h:879
grk::FileFormat::C
uint8_t C
Definition: FileFormat.h:202
_grk_palette_data::lut
uint32_t * lut
Definition: grok.h:593
_grk_cparameters
Compress parameters.
Definition: grok.h:439
GRK_ENUM_CLRSPC_EYCC
@ GRK_ENUM_CLRSPC_EYCC
Definition: grok.h:338
_grk_channel_description::cn
uint16_t cn
Definition: grok.h:567
grk::grk_jp2_header_handler::id
uint32_t id
Definition: FileFormat.h:246
_grk_image::y1
uint32_t y1
Ysiz: height of the reference grid.
Definition: grok.h:889
_grk_image_comp::prec
uint8_t prec
precision
Definition: grok.h:866
grk::FileFormat::h
uint32_t h
Definition: FileFormat.h:198
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:2133
grk::JP2_IMG_STATE
JP2_IMG_STATE
Definition: FileFormat.h:78
grk::JP2_STATE_FILE_TYPE
@ JP2_STATE_FILE_TYPE
Definition: FileFormat.h:71
JP2_XML
#define JP2_XML
XML box.
Definition: FileFormat.h:53
JP2_RES
#define JP2_RES
Resolution box (super-box)
Definition: FileFormat.h:48
_grk_cparameters::write_display_resolution
bool write_display_resolution
Definition: grok.h:548
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:86
ojph::info
message_info info
Definition: ojph_message.cpp:50
grk::CodeStream::compress
bool compress(grk_plugin_tile *tile)
Definition: CodeStream.cpp:1715
_grk_channel_description::asoc
uint16_t asoc
Definition: grok.h:569
GRK_ENUM_COLOUR_SPACE
GRK_ENUM_COLOUR_SPACE
Definition: grok.h:331
JP2_JP2
#define JP2_JP2
File type fields.
Definition: FileFormat.h:46
grk::FileFormat::numUuids
uint32_t numUuids
Definition: FileFormat.h:228
grk::FileFormat::alloc_palette
static void alloc_palette(grk_jp2_color *color, uint8_t num_channels, uint16_t num_entries)
Definition: FileFormat.cpp:2928
grk::FileFormat::has_capture_resolution
bool has_capture_resolution
Definition: FileFormat.h:220
grk::CodeStream::end_decompress
bool end_decompress(void)
Reading function used after code stream if necessary.
Definition: CodeStream.cpp:1224
_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:882
grk::FileFormat::init_compress
bool init_compress(grk_cparameters *p_param, grk_image *p_image)
Definition: FileFormat.cpp:2702