Go to the documentation of this file.
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
67 #define JP2_MAX_NUM_UUIDS 128
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 };
106 buffer =
new uint8_t[length];
144 grk_jp2_uuid(
const uint8_t myuuid[16], uint8_t *buf,
size_t size,
bool owns) :
146 for (
int i = 0; i < 16; ++i)
199 bool compress_tile(uint16_t tile_index, uint8_t *p_data, uint64_t data_size);
205 void dump(uint32_t flag, FILE *out_stream);
214 uint32_t
read_asoc(uint8_t **header_data, uint32_t *header_data_size, uint32_t asocSize, uint32_t level);
280 uint8_t* (*handler)(
FileFormat *fileFormat, uint32_t *data_size);
@ GRK_COMPONENT_ASSOC_WHOLE_IMAGE
Definition: grok.h:848
Code stream index info.
Definition: grok.h:1158
void GRK_CALLCONV grk_image_single_component_data_free(grk_image_comp *comp)
Deallocate data for single image component.
Definition: grok.cpp:569
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
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
@ GRK_ENUM_CLRSPC_SYCC
Definition: grok.h:337
@ GRK_ENUM_CLRSPC_SRGB
Definition: grok.h:335
static bool jp2_read_channel_definition(FileFormat *fileFormat, uint8_t *p_cdef_header_data, uint32_t cdef_header_size)
Definition: FileFormat.cpp:1060
grk_codestream_info_v2 * j2k_get_cstr_info(CodeStream *codeStream)
Get the code stream info from a JPEG2000 codec.
Definition: Dump.cpp:282
void grk_aligned_free(void *ptr)
Definition: MemManager.cpp:123
uint8_t uuid[16]
Definition: FileFormat.h:149
bool decompress(grk_plugin_tile *tile, grk_image *p_image)
Definition: CodeStream.cpp:1113
grk_palette_data * palette
Definition: grok.h:609
const uint8_t IPTC_UUID[16]
Definition: FileFormat.h:69
void grk_read(const uint8_t *p_buffer, TYPE *value, uint32_t nb_bytes)
Definition: BufferedStream.h:238
bool has_colour_specification_box
Definition: grok.h:610
double display_resolution[2]
Definition: grok.h:550
uint8_t bpc
Definition: FileFormat.h:94
static bool jp2_write_jp2c(FileFormat *fileFormat)
Writes the Jpeg2000 code stream Header box - JP2C Header box.
Definition: FileFormat.cpp:1899
BufferedStream * getStream()
Definition: CodeStream.cpp:999
@ GRK_CLRSPC_CMYK
CMYK.
Definition: grok.h:324
static bool jp2_read_header_procedure(FileFormat *fileFormat)
Reads a JPEG 2000 file header structure.
Definition: FileFormat.cpp:2017
bool write_capture_resolution_from_file
Definition: grok.h:543
uint8_t * m_data
Definition: FileFormat.h:282
Definition: FileFormat.h:271
static bool jp2_read_xml(FileFormat *fileFormat, uint8_t *p_xml_data, uint32_t xml_size)
Read XML box.
Definition: FileFormat.cpp:670
uint32_t level
Definition: FileFormat.h:137
grk_jp2_color color
Definition: grok.h:907
GRK_COMPONENT_TYPE
Definition: grok.h:836
@ GRK_ENUM_CLRSPC_CIE
Definition: grok.h:334
@ GRK_CLRSPC_SRGB
sRGB
Definition: grok.h:320
Byte input-output stream.
Definition: BufferedStream.h:38
grk_image_comp * comps
image components
Definition: grok.h:906
void init_decompress(grk_dparameters *p_param)
Set up decompressor function handler.
Definition: CodeStream.cpp:1204
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
void grk_write(uint8_t *p_buffer, TYPE value, uint32_t nb_bytes)
Definition: BufferedStream.h:217
bool write_capture_resolution
Definition: grok.h:546
static bool jp2_init_header_reading(FileFormat *fileFormat)
Sets up the procedures to do on reading header.
Definition: FileFormat.cpp:2448
#define GRK_DEFAULT_CIELAB_SPACE
Definition: grok.h:304
uint16_t typ
Definition: grok.h:569
void GRK_WARN(const char *fmt,...)
Definition: logger.cpp:49
uint8_t * xmp_buf
Definition: grok.h:914
@ JP2_STATE_CODESTREAM
Definition: FileFormat.h:79
bool end_compress(void)
Definition: CodeStream.cpp:1807
void * grk_calloc(size_t num, size_t size)
Allocate a memory block with elements initialized to 0.
Definition: MemManager.cpp:111
@ JP2_STATE_SIGNATURE
Definition: FileFormat.h:76
double calc_res(uint16_t num, uint16_t den, uint8_t exponent)
Definition: FileFormat.cpp:712
@ GRK_CLRSPC_GRAY
grayscale
Definition: grok.h:321
static uint8_t * jp2_write_channel_definition(FileFormat *fileFormat, uint32_t *p_nb_bytes_written)
Writes the Channel Definition box.
Definition: FileFormat.cpp:956
#define GRK_NUM_ASOC_BOXES_SUPPORTED
Definition: grok.h:351
double capture_resolution_from_file[2]
Definition: grok.h:544
@ GRK_CLRSPC_SYCC
standard YCC (YUV)
Definition: grok.h:322
grk_jp2_buffer()
Definition: FileFormat.h:101
bool grk_image_single_component_data_alloc(grk_image_comp *comp)
Allocate data for single image component.
Definition: CodeStream.cpp:200
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
Definition: grok.h:333
void grk_free(void *ptr)
Deallocates or frees a memory block.
Definition: MemManager.cpp:141
bool * channel_sign
Definition: grok.h:598
grk_image * m_input_image
internal/private encoded / decompressed image
Definition: CodeStream.h:303
static bool jp2_write_uuids(FileFormat *fileFormat)
Definition: FileFormat.cpp:1834
static void jp2_free_palette_clr(grk_jp2_color *color)
Definition: FileFormat.cpp:1737
uint16_t numcomps
number of components in the image
Definition: grok.h:902
grk_channel_definition * channel_definition
Definition: grok.h:608
static uint8_t * jp2_write_component_mapping(FileFormat *fileFormat, uint32_t *p_nb_bytes_written)
Definition: FileFormat.cpp:1594
Plugin tile.
Definition: grok.h:1251
Definition: FileFormat.h:97
Definition: FileFormat.h:142
uint32_t icc_profile_len
Definition: grok.h:607
bool compress_tile(uint16_t tile_index, uint8_t *p_data, uint64_t data_size)
Definition: CodeStream.cpp:1773
static uint8_t * jp2_write_res(FileFormat *fileFormat, uint32_t *p_nb_bytes_written)
Writes the Resolution box.
Definition: FileFormat.cpp:855
uint32_t w
data width
Definition: grok.h:865
@ JP2_STATE_UNKNOWN
Definition: FileFormat.h:81
@ JP2_STATE_END_CODESTREAM
Definition: FileFormat.h:80
JP2 Box.
Definition: FileFormat.h:266
Association box (ASOC data) struct, defined by level, label and optionally XML data.
Definition: FileFormat.h:129
@ GRK_CLRSPC_CUSTOM_CIE
custom CIE LAB
Definition: grok.h:326
static bool jp2_write_jp(FileFormat *fileFormat)
Writes a JPEG 2000 file signature box.
Definition: FileFormat.cpp:1940
Definition: FileFormat.h:278
double capture_resolution[2]
Definition: grok.h:547
@ GRK_COMPONENT_TYPE_COLOUR
Definition: grok.h:838
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
@ JP2_STATE_HEADER
Definition: FileFormat.h:78
uint16_t num_entries
Definition: grok.h:595
GRK_COMPONENT_ASSOC association
Definition: grok.h:884
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_COMPONENT_TYPE type
Definition: grok.h:883
bool init_compress(grk_cparameters *p_param, grk_image *p_image)
Definition: CodeStream.cpp:1230
bool ownsData
Definition: FileFormat.h:119
static const grk_jp2_header_handler jp2_img_header[]
Definition: FileFormat.cpp:403
@ GRK_CLRSPC_UNKNOWN
unknown
Definition: grok.h:319
uint8_t * channel_prec
Definition: grok.h:599
static bool jp2_apply_palette_clr(grk_image *image, grk_jp2_color *color)
Apply collected palette data.
Definition: FileFormat.cpp:1455
uint64_t get_number_byte_left(void)
Get the number of bytes left before end of stream.
Definition: BufferedStream.cpp:333
const uint32_t max_num_components
Definition: CodeStream.h:47
Definition: CodeStream.h:164
JP2 component.
Definition: FileFormat.h:91
Image component.
Definition: grok.h:859
const char * label
Definition: grok.h:615
static bool jp2_write_ftyp(FileFormat *fileFormat)
Writes a FTYP box - File type box.
Definition: FileFormat.cpp:1859
uint8_t * iptc_buf
Definition: grok.h:912
Core decompress parameters.
Definition: grok.h:681
@ GRK_COMPONENT_TYPE_UNSPECIFIED
Definition: grok.h:841
Component mappings: component index, mapping type, palette column.
Definition: grok.h:584
static bool jp2_exec(FileFormat *fileFormat, std::vector< jp2_procedure > *procs)
Executes the given procedures on the given codec.
Definition: FileFormat.cpp:2153
Code stream info v2.
Definition: grok.h:1101
bool(* jp2_procedure)(FileFormat *fileFormat)
Definition: FileFormat.h:153
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
bool sgnd
Definition: grok.h:878
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
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
struct _grk_palette_data grk_palette_data
Palette data.
grk_component_mapping_comp * component_mapping
Definition: grok.h:596
bool decompress_tile(grk_image *p_image, uint16_t tile_index)
decompress tile
Definition: CodeStream.cpp:1132
@ JP2_IMG_STATE_NONE
Definition: FileFormat.h:85
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_jp2_uuid(const uint8_t myuuid[16], uint8_t *buf, size_t size, bool owns)
Definition: FileFormat.h:144
@ GRK_ENUM_CLRSPC_GRAY
Definition: grok.h:336
void find_cf(double x, uint32_t *num, uint32_t *den)
Definition: FileFormat.cpp:788
size_t len
Definition: FileFormat.h:118
@ GRK_CLRSPC_DEFAULT_CIE
default CIE LAB
Definition: grok.h:325
Copyright (C) 2016-2021 Grok Image Compression Inc.
Definition: BitIO.cpp:23
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
#define GRK_CUSTOM_CIELAB_SPACE
Definition: grok.h:303
static void jp2_write_res_box(double resx, double resy, uint32_t box_id, uint8_t **current_res_ptr)
Definition: FileFormat.cpp:816
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
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
bool has_capture_resolution
Definition: grok.h:908
@ GRK_ENUM_CLRSPC_UNKNOWN
Definition: grok.h:332
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
uint64_t length
Definition: FileFormat.h:267
uint32_t m_size
Definition: FileFormat.h:284
size_t read(uint8_t *p_buffer, size_t p_size)
Reads some bytes from the stream.
Definition: BufferedStream.cpp:51
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
void * grk_malloc(size_t size)
Allocate an uninitialized memory block.
Definition: MemManager.cpp:105
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
static bool jp2_init_header_writing(FileFormat *fileFormat)
Sets up the procedures to do on writing header.
Definition: FileFormat.cpp:2434
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
static bool jp2_skip_jp2c(FileFormat *fileFormat)
Definition: FileFormat.cpp:2296
uint8_t num_channels
Definition: grok.h:597
@ JP2_STATE_NONE
Definition: FileFormat.h:75
@ GRK_CLRSPC_EYCC
extended YCC
Definition: grok.h:323
static bool jp2_write_jp2h(FileFormat *fileFormat)
Definition: FileFormat.cpp:1750
grk_jp2_buffer(uint8_t *buf, size_t size, bool owns)
Definition: FileFormat.h:98
static bool jp2_read_asoc(FileFormat *fileFormat, uint8_t *header_data, uint32_t header_data_size)
Read Associated data.
Definition: FileFormat.cpp:650
void alloc(size_t length)
Definition: FileFormat.h:104
int32_t * data
image component data
Definition: grok.h:880
grk_codestream_index * j2k_get_cstr_index(CodeStream *codeStream)
Get the code stream index from a JPEG2000 codec.
Definition: Dump.cpp:352
void j2k_dump(CodeStream *codeStream, uint32_t flag, FILE *out_stream)
Dump some elements from the J2K decompression structure .
Definition: Dump.cpp:87
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
const uint32_t max_supported_precision
Definition: CodeStream.h:56
size_t iptc_len
Definition: grok.h:913
uint8_t * buffer
Definition: FileFormat.h:117
static const grk_jp2_header_handler jp2_header[]
Definition: FileFormat.cpp:395
static bool jp2_init_compress_validation(FileFormat *fileFormat)
Sets up the validation ,i.e.
Definition: FileFormat.cpp:2418
const uint8_t XMP_UUID[16]
Definition: FileFormat.h:71
Definition: grk_exceptions.h:26
Channel definition: channel index, type, association.
Definition: grok.h:567
void * grk_realloc(void *ptr, size_t new_size)
Reallocate memory blocks.
Definition: MemManager.cpp:135
@ JP2_IMG_STATE_UNKNOWN
Definition: FileFormat.h:85
~grk_jp2_asoc()
Definition: FileFormat.h:134
size_t xmp_len
Definition: grok.h:915
static bool jp2_check_color(grk_image *image, grk_jp2_color *color)
Definition: FileFormat.cpp:1324
GRK_COLOR_SPACE color_space
color space: sRGB, Greyscale or YUV
Definition: grok.h:904
struct _grk_channel_definition grk_channel_definition
Channel definitions and number of definitions.
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
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_jp2_asoc(uint32_t lev, std::string lbl)
Definition: FileFormat.h:130
@ GRK_COMPONENT_ASSOC_UNASSOCIATED
Definition: grok.h:852
static void jp2_apply_channel_definition(grk_image *image, grk_jp2_color *color)
Definition: FileFormat.cpp:1002
grk_jp2_uuid()
Definition: FileFormat.h:143
static uint8_t * jp2_write_colr(FileFormat *fileFormat, uint32_t *p_nb_bytes_written)
Writes the Colour Specification box.
Definition: FileFormat.cpp:1154
uint8_t *(* handler)(FileFormat *fileFormat, uint32_t *data_size)
Definition: FileFormat.h:280
JP2_STATE
Definition: FileFormat.h:74
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
bool(* handler)(FileFormat *fileFormat, uint8_t *p_header_data, uint32_t header_size)
Definition: FileFormat.h:275
static uint8_t * jp2_write_palette_clr(FileFormat *fileFormat, uint32_t *p_nb_bytes_written)
Definition: FileFormat.cpp:1624
bool start_compress(void)
Definition: CodeStream.cpp:1211
void dealloc()
Definition: FileFormat.h:110
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
Definition: CodeStream.h:125
bool read_header(grk_header_info *header_info, grk_image **p_image)
Main header reading function handler.
Definition: CodeStream.cpp:1023
uint32_t x1
Xsiz: width of the reference grid.
Definition: grok.h:898
@ GRK_CLRSPC_ICC
ICC profile.
Definition: grok.h:327
grk_channel_description * descriptions
Definition: grok.h:577
uint16_t num_channel_descriptions
Definition: grok.h:578
uint8_t * icc_profile_buf
Definition: grok.h:606
static bool jp2_init_decompress_validation(FileFormat *fileFormat)
Sets up the validation ,i.e.
Definition: FileFormat.cpp:2425
Definition: grk_exceptions.h:37
ICC profile, palette, channel definition.
Definition: grok.h:605
uint32_t type
Definition: FileFormat.h:268
static bool jp2_default_validation(FileFormat *fileFormat)
Definition: FileFormat.cpp:1975
Image.
Definition: grok.h:890
std::string label
Definition: FileFormat.h:138
uint32_t * lut
Definition: grok.h:594
Compress parameters.
Definition: grok.h:440
@ GRK_ENUM_CLRSPC_EYCC
Definition: grok.h:338
uint16_t cn
Definition: grok.h:568
uint32_t id
Definition: FileFormat.h:273
uint32_t y1
Ysiz: height of the reference grid.
Definition: grok.h:900
uint8_t prec
precision
Definition: grok.h:877
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
JP2_IMG_STATE
Definition: FileFormat.h:84
@ JP2_STATE_FILE_TYPE
Definition: FileFormat.h:77
bool write_display_resolution
Definition: grok.h:549
void GRK_ERROR(const char *fmt,...)
Definition: logger.cpp:57
grk_jp2_comps()
Definition: FileFormat.h:92
message_info info
Definition: ojph_message.cpp:50
bool compress(grk_plugin_tile *tile)
Definition: CodeStream.cpp:1688
uint16_t asoc
Definition: grok.h:570
GRK_ENUM_COLOUR_SPACE
Definition: grok.h:331
bool end_decompress(void)
Reading function used after code stream if necessary.
Definition: CodeStream.cpp:1199
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