Go to the documentation of this file.
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
61 #define JP2_MAX_NUM_UUIDS 128
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 };
100 buffer =
new uint8_t[length];
118 grk_jp2_uuid(
const uint8_t myuuid[16], uint8_t *buf,
size_t size,
bool owns) :
120 for (
int i = 0; i < 16; ++i)
173 bool compress_tile(uint16_t tile_index, uint8_t *p_data, uint64_t data_size);
179 void dump(int32_t flag, FILE *out_stream);
253 uint8_t* (*handler)(
FileFormat *fileFormat, uint32_t *data_size);
@ GRK_COMPONENT_ASSOC_WHOLE_IMAGE
Definition: grok.h:837
Code stream index info.
Definition: grok.h:1147
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:2211
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
@ 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:1025
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:123
bool decompress(grk_plugin_tile *tile, grk_image *p_image)
Definition: CodeStream.cpp:1113
grk_palette_data * palette
Definition: grok.h:608
const uint8_t IPTC_UUID[16]
Definition: FileFormat.h:63
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:609
double display_resolution[2]
Definition: grok.h:549
uint8_t bpc
Definition: FileFormat.h:88
static bool jp2_write_jp2c(FileFormat *fileFormat)
Writes the Jpeg2000 code stream Header box - JP2C Header box.
Definition: FileFormat.cpp:1864
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:1982
bool write_capture_resolution_from_file
Definition: grok.h:542
uint8_t * m_data
Definition: FileFormat.h:255
Definition: FileFormat.h:244
static bool jp2_read_xml(FileFormat *fileFormat, uint8_t *p_xml_data, uint32_t xml_size)
Read XML box.
Definition: FileFormat.cpp:635
grk_jp2_color color
Definition: grok.h:896
GRK_COMPONENT_TYPE
Definition: grok.h:825
@ 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:895
void init_decompress(grk_dparameters *p_param)
Set up decompressor function handler.
Definition: CodeStream.cpp:1229
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
void grk_write(uint8_t *p_buffer, TYPE value, uint32_t nb_bytes)
Definition: BufferedStream.h:217
bool write_capture_resolution
Definition: grok.h:545
static bool jp2_init_header_reading(FileFormat *fileFormat)
Sets up the procedures to do on reading header.
Definition: FileFormat.cpp:2413
#define GRK_DEFAULT_CIELAB_SPACE
Definition: grok.h:304
uint16_t typ
Definition: grok.h:568
void GRK_WARN(const char *fmt,...)
Definition: logger.cpp:49
uint8_t * xmp_buf
Definition: grok.h:903
@ JP2_STATE_CODESTREAM
Definition: FileFormat.h:73
bool end_compress(void)
Definition: CodeStream.cpp:1834
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:70
double calc_res(uint16_t num, uint16_t den, uint8_t exponent)
Definition: FileFormat.cpp:677
@ 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:921
double capture_resolution_from_file[2]
Definition: grok.h:543
@ GRK_CLRSPC_SYCC
standard YCC (YUV)
Definition: grok.h:322
grk_jp2_buffer()
Definition: FileFormat.h:95
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:648
@ 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:597
grk_image * m_input_image
internal/private encoded / decompressed image
Definition: CodeStream.h:303
static bool jp2_write_uuids(FileFormat *fileFormat)
Definition: FileFormat.cpp:1799
static void jp2_free_palette_clr(grk_jp2_color *color)
Definition: FileFormat.cpp:1702
uint16_t numcomps
number of components in the image
Definition: grok.h:891
grk_channel_definition * channel_definition
Definition: grok.h:607
static uint8_t * jp2_write_component_mapping(FileFormat *fileFormat, uint32_t *p_nb_bytes_written)
Definition: FileFormat.cpp:1559
Plugin tile.
Definition: grok.h:1240
Definition: FileFormat.h:91
Definition: FileFormat.h:116
uint32_t icc_profile_len
Definition: grok.h:606
bool compress_tile(uint16_t tile_index, uint8_t *p_data, uint64_t data_size)
Definition: CodeStream.cpp:1800
static uint8_t * jp2_write_res(FileFormat *fileFormat, uint32_t *p_nb_bytes_written)
Writes the Resolution box.
Definition: FileFormat.cpp:820
uint32_t w
data width
Definition: grok.h:854
@ JP2_STATE_UNKNOWN
Definition: FileFormat.h:75
@ JP2_STATE_END_CODESTREAM
Definition: FileFormat.h:74
JP2 Box.
Definition: FileFormat.h:239
@ GRK_CLRSPC_CUSTOM_CIE
custom CIE LAB
Definition: grok.h:326
void j2k_dump(CodeStream *codeStream, int32_t flag, FILE *out_stream)
Dump some elements from the J2K decompression structure .
Definition: Dump.cpp:87
static bool jp2_write_jp(FileFormat *fileFormat)
Writes a JPEG 2000 file signature box.
Definition: FileFormat.cpp:1905
Definition: FileFormat.h:251
double capture_resolution[2]
Definition: grok.h:546
@ GRK_COMPONENT_TYPE_COLOUR
Definition: grok.h:827
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
@ JP2_STATE_HEADER
Definition: FileFormat.h:72
uint16_t num_entries
Definition: grok.h:594
GRK_COMPONENT_ASSOC association
Definition: grok.h:873
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_COMPONENT_TYPE type
Definition: grok.h:872
bool init_compress(grk_cparameters *p_param, grk_image *p_image)
Definition: CodeStream.cpp:1255
bool ownsData
Definition: FileFormat.h:113
static const grk_jp2_header_handler jp2_img_header[]
Definition: FileFormat.cpp:388
@ GRK_CLRSPC_UNKNOWN
unknown
Definition: grok.h:319
uint8_t * channel_prec
Definition: grok.h:598
static bool jp2_apply_palette_clr(grk_image *image, grk_jp2_color *color)
Apply collected palette data.
Definition: FileFormat.cpp:1420
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:85
Image component.
Definition: grok.h:848
static bool jp2_write_ftyp(FileFormat *fileFormat)
Writes a FTYP box - File type box.
Definition: FileFormat.cpp:1824
uint8_t * iptc_buf
Definition: grok.h:901
Core decompress parameters.
Definition: grok.h:670
@ GRK_COMPONENT_TYPE_UNSPECIFIED
Definition: grok.h:830
Component mappings: component index, mapping type, palette column.
Definition: grok.h:583
static bool jp2_exec(FileFormat *fileFormat, std::vector< jp2_procedure > *procs)
Executes the given procedures on the given codec.
Definition: FileFormat.cpp:2118
Code stream info v2.
Definition: grok.h:1090
bool(* jp2_procedure)(FileFormat *fileFormat)
Definition: FileFormat.h:127
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
bool sgnd
Definition: grok.h:867
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
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
struct _grk_palette_data grk_palette_data
Palette data.
grk_component_mapping_comp * component_mapping
Definition: grok.h:595
bool decompress_tile(grk_image *p_image, uint16_t tile_index)
decompress tile
Definition: CodeStream.cpp:1132
@ JP2_IMG_STATE_NONE
Definition: FileFormat.h:79
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_jp2_uuid(const uint8_t myuuid[16], uint8_t *buf, size_t size, bool owns)
Definition: FileFormat.h:118
@ GRK_ENUM_CLRSPC_GRAY
Definition: grok.h:336
void find_cf(double x, uint32_t *num, uint32_t *den)
Definition: FileFormat.cpp:753
size_t len
Definition: FileFormat.h:112
@ GRK_CLRSPC_DEFAULT_CIE
default CIE LAB
Definition: grok.h:325
Copyright (C) 2016-2020 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:558
#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:781
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
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
bool has_capture_resolution
Definition: grok.h:897
@ 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:896
uint64_t length
Definition: FileFormat.h:240
uint32_t m_size
Definition: FileFormat.h:257
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:1176
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:473
static bool jp2_init_header_writing(FileFormat *fileFormat)
Sets up the procedures to do on writing header.
Definition: FileFormat.cpp:2399
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
static bool jp2_skip_jp2c(FileFormat *fileFormat)
Definition: FileFormat.cpp:2261
uint8_t num_channels
Definition: grok.h:596
@ JP2_STATE_NONE
Definition: FileFormat.h:69
@ GRK_CLRSPC_EYCC
extended YCC
Definition: grok.h:323
static bool jp2_write_jp2h(FileFormat *fileFormat)
Definition: FileFormat.cpp:1715
grk_jp2_buffer(uint8_t *buf, size_t size, bool owns)
Definition: FileFormat.h:92
void alloc(size_t length)
Definition: FileFormat.h:98
int32_t * data
image component data
Definition: grok.h:869
grk_codestream_index * j2k_get_cstr_index(CodeStream *codeStream)
Get the code stream index from a JPEG2000 codec.
Definition: Dump.cpp:352
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
const uint32_t max_supported_precision
Definition: CodeStream.h:56
size_t iptc_len
Definition: grok.h:902
uint8_t * buffer
Definition: FileFormat.h:111
static const grk_jp2_header_handler jp2_header[]
Definition: FileFormat.cpp:381
static bool jp2_init_compress_validation(FileFormat *fileFormat)
Sets up the validation ,i.e.
Definition: FileFormat.cpp:2383
const uint8_t XMP_UUID[16]
Definition: FileFormat.h:65
Definition: grk_exceptions.h:26
Channel definition: channel index, type, association.
Definition: grok.h:566
void * grk_realloc(void *ptr, size_t new_size)
Reallocate memory blocks.
Definition: MemManager.cpp:135
@ JP2_IMG_STATE_UNKNOWN
Definition: FileFormat.h:79
size_t xmp_len
Definition: grok.h:904
static bool jp2_check_color(grk_image *image, grk_jp2_color *color)
Definition: FileFormat.cpp:1289
GRK_COLOR_SPACE color_space
color space: sRGB, Greyscale or YUV
Definition: grok.h:893
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:1519
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_COMPONENT_ASSOC_UNASSOCIATED
Definition: grok.h:841
static void jp2_apply_channel_definition(grk_image *image, grk_jp2_color *color)
Definition: FileFormat.cpp:967
grk_jp2_uuid()
Definition: FileFormat.h:117
static uint8_t * jp2_write_colr(FileFormat *fileFormat, uint32_t *p_nb_bytes_written)
Writes the Colour Specification box.
Definition: FileFormat.cpp:1119
uint8_t *(* handler)(FileFormat *fileFormat, uint32_t *data_size)
Definition: FileFormat.h:253
JP2_STATE
Definition: FileFormat.h:68
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
bool(* handler)(FileFormat *fileFormat, uint8_t *p_header_data, uint32_t header_size)
Definition: FileFormat.h:248
static uint8_t * jp2_write_palette_clr(FileFormat *fileFormat, uint32_t *p_nb_bytes_written)
Definition: FileFormat.cpp:1589
bool start_compress(void)
Definition: CodeStream.cpp:1236
void dealloc()
Definition: FileFormat.h:104
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
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:887
@ GRK_CLRSPC_ICC
ICC profile.
Definition: grok.h:327
grk_channel_description * descriptions
Definition: grok.h:576
uint16_t num_channel_descriptions
Definition: grok.h:577
uint8_t * icc_profile_buf
Definition: grok.h:605
static bool jp2_init_decompress_validation(FileFormat *fileFormat)
Sets up the validation ,i.e.
Definition: FileFormat.cpp:2390
ICC profile, palette, channel definition.
Definition: grok.h:604
uint32_t type
Definition: FileFormat.h:241
static bool jp2_default_validation(FileFormat *fileFormat)
Definition: FileFormat.cpp:1940
Image.
Definition: grok.h:879
uint32_t * lut
Definition: grok.h:593
Compress parameters.
Definition: grok.h:439
@ GRK_ENUM_CLRSPC_EYCC
Definition: grok.h:338
uint16_t cn
Definition: grok.h:567
uint32_t id
Definition: FileFormat.h:246
uint32_t y1
Ysiz: height of the reference grid.
Definition: grok.h:889
uint8_t prec
precision
Definition: grok.h:866
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
JP2_IMG_STATE
Definition: FileFormat.h:78
@ JP2_STATE_FILE_TYPE
Definition: FileFormat.h:71
bool write_display_resolution
Definition: grok.h:548
void GRK_ERROR(const char *fmt,...)
Definition: logger.cpp:57
grk_jp2_comps()
Definition: FileFormat.h:86
message_info info
Definition: ojph_message.cpp:50
bool compress(grk_plugin_tile *tile)
Definition: CodeStream.cpp:1715
uint16_t asoc
Definition: grok.h:569
GRK_ENUM_COLOUR_SPACE
Definition: grok.h:331
bool end_decompress(void)
Reading function used after code stream if necessary.
Definition: CodeStream.cpp:1224
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