Grok 13.0.2
grok.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2016-2024 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#pragma once
22
23#include <stdint.h>
24#include <stdio.h>
25#include <stdbool.h>
26#include <limits.h>
27
28#ifdef __cplusplus
29extern "C" {
30#endif
31
32#include "grk_config.h"
33
34#ifndef SWIG
35#ifdef _WIN32
36#define GRK_CALLCONV __stdcall
37#ifdef GRK_STATIC
38#define GRK_API
39#else
40#ifdef GRK_EXPORTS
41#define GRK_API __declspec(dllexport)
42#else
43#define GRK_API __declspec(dllimport)
44#endif
45#endif
46#else
47#define GRK_CALLCONV
48#ifdef GRK_STATIC
49#define GRK_API __attribute__((visibility("hidden")))
50#else
51#define GRK_API __attribute__((visibility("default")))
52#endif
53#endif
54#else
55// Define dummy macros for SWIG to avoid parsing issues
56#define GRK_CALLCONV
57#define GRK_API
58#endif
59
74
91
97{
98 GRK_ENUM_CLRSPC_UNKNOWN = 0xFFFFFFFF, /* unknown */
99 GRK_ENUM_CLRSPC_BILEVEL1 = 0, /* bilevel 1 */
100 GRK_ENUM_CLRSPC_YCBCR1 = 1, /* YCbCr 4:2:2 */
101 GRK_ENUM_CLRSPC_YCBCR2 = 3, /* YCbCr 4:4:4 */
102 GRK_ENUM_CLRSPC_YCBCR3 = 4, /* YCbCr 4:2:0 */
103 GRK_ENUM_CLRSPC_PHOTO_YCC = 9, /* Kodak PhotoYCC */
104 GRK_ENUM_CLRSPC_CMY = 11, /* cyan, magenta, yellow */
105 GRK_ENUM_CLRSPC_CMYK = 12, /* cyan, magenta, yellow, black */
106 GRK_ENUM_CLRSPC_YCCK = 13, /* YCCK */
107 GRK_ENUM_CLRSPC_CIE = 14, /* CIE Lab (L*, a*, b*) */
108 GRK_ENUM_CLRSPC_BILEVEL2 = 15, /* bilevel 2 */
109 GRK_ENUM_CLRSPC_SRGB = 16, /* sRGB */
110 GRK_ENUM_CLRSPC_GRAY = 17, /* grayscale */
111 GRK_ENUM_CLRSPC_SYCC = 18, /* standard YCC */
112 GRK_ENUM_CLRSPC_CIEJAB = 19, /* CIEJAB */
113 GRK_ENUM_CLRSPC_ESRGB = 20, /* e-sRGB */
114 GRK_ENUM_CLRSPC_ROMMRGB = 21, /* Reference Output Medium Metric RGB */
115 GRK_ENUM_CLRSPC_YPBPR60 = 22, /* YPbPr 60 */
116 GRK_ENUM_CLRSPC_YPBPR50 = 23, /* YPbPr 50 */
117 GRK_ENUM_CLRSPC_EYCC = 24, /* extended YCC */
119
123#define GRK_NUM_COMMENTS_SUPPORTED 256
124
128#define GRK_NUM_ASOC_BOXES_SUPPORTED 256
129
133#define GRK_MAX_COMMENT_LENGTH (UINT16_MAX - 2)
134
138#define GRK_MAX_SUPPORTED_IMAGE_PRECISION 16
139
156#define GRK_BIBO_EXTRA_BITS 7
157
161#define GRK_MAX_PASSES (3 * (GRK_MAX_SUPPORTED_IMAGE_PRECISION + GRK_BIBO_EXTRA_BITS) - 2)
162
169typedef void (*grk_msg_callback)(const char* msg, void* client_data);
170
190
196typedef struct _grk_object
197{
198 void* wrapper; /* opaque wrapper */
200
205typedef struct _grk_progression
206{
207 GRK_PROG_ORDER progression; /* progression */
208 char progression_str[5]; /* progression as string */
209 GRK_PROG_ORDER specified_compression_poc_prog; /* specified compression POC progression */
210 uint32_t tileno; /* tile number */
211
213 uint32_t tx0; /* tile x0 */
214 uint32_t ty0; /* tile y0 */
215 uint32_t tx1; /* tile x1 */
216 uint32_t ty1; /* tile y1 */
217
219 uint16_t comp_s; /* component start */
220 uint16_t comp_e; /* component end */
221 uint8_t res_s; /* resolution start */
222 uint8_t res_e; /* resolution end */
223 uint64_t prec_s; /* precinct start */
224 uint64_t prec_e; /* precinct end */
225 uint16_t lay_s; /* layer start */
226 uint16_t lay_e; /* layer end */
227 uint16_t tp_comp_s; /* tile part component start */
228 uint16_t tp_comp_e; /* tile part component end */
229 uint8_t tp_res_s; /* tile part resolution start */
230 uint8_t tp_res_e; /* tile part resolution end */
231 uint64_t tp_prec_e; /* tile part precinct end */
232 uint16_t tp_lay_e; /* tile part layer end */
233 uint32_t tp_tx_s; /* tile part x start */
234 uint32_t tp_tx_e; /* tile part x end */
235 uint32_t tp_ty_s; /* tile part y start */
236 uint32_t tp_ty_e; /* tile part y end */
237 uint32_t dx; /* dx */
238 uint32_t dy; /* dy */
239 uint16_t comp_temp; /* component temp */
240 uint8_t res_temp; /* resolution temp */
241 uint64_t prec_temp; /* precinct temp */
242 uint16_t lay_temp; /* layer temp */
243 uint32_t tx0_temp; /* x0 temp */
244 uint32_t ty0_temp; /* y0 temp */
246
255
268
280
285{
286 GRK_FMT_UNK, /* unknown format */
287 GRK_FMT_J2K, /* J2K */
288 GRK_FMT_JP2, /* JP2 */
289 GRK_FMT_PXM, /* PXM */
290 GRK_FMT_PGX, /* PGX */
291 GRK_FMT_PAM, /* PAM */
292 GRK_FMT_BMP, /* BMP */
293 GRK_FMT_TIF, /* TIF */
294 GRK_FMT_RAW, /* RAW Big Endian */
295 GRK_FMT_PNG, /* PNG */
296 GRK_FMT_RAWL, /* RAW Little Endian */
297 GRK_FMT_JPG, /* JPG */
298 GRK_FMT_YUV /* YUV */
300
311
312#define GRK_PATH_LEN 4096 /* Maximum allowed filename size */
313#define GRK_MAX_LAYERS 256 /* Grok maximum number of quality layers */
314
315/*
316 * Note: range for number of decomposition levels is 0-32
317 * So, accordingly, range for number of resolutions is 1-33
318 */
319#define GRK_MAX_DECOMP_LVLS \
320 32 /* Maximum number of decomposition levels allowed by standard \
321 */
322#define GRK_MAXRLVLS \
323 (GRK_MAX_DECOMP_LVLS + 1) /* Maximum number of resolution levels allowed by standard*/
324#define GRK_MAXBANDS (3 * GRK_MAXRLVLS - 2) /* Maximum number of sub-bands allowed by standard */
325
334typedef struct _grk_component_mapping_comp
336 uint16_t component; /* component index */
337 uint8_t mapping_type; /* mapping type */
338 uint8_t palette_column; /* palette column */
340
344typedef struct _grk_palette_data
346 int32_t* lut; /* LUT */
347 uint16_t num_entries; /* number of entries */
349 uint8_t num_channels; /* number of channels */
350 bool* channel_sign; /* channel sign */
351 uint8_t* channel_prec; /* channel precision */
353
354/***
355 * Channel Definition box structures and enums.
356 * When no Component mapping box is present, it is still possible to have
357 * a Channel defintion box, in which case channels are associated with components
358 * in the obvious way : channel `k` corresponds to component `k`.
359 * */
360
361/* @brief Channel type */
362typedef enum _GRK_CHANNEL_TYPE
364 GRK_CHANNEL_TYPE_COLOUR = 0, /* colour */
365 GRK_CHANNEL_TYPE_OPACITY = 1, /* opacity */
366 GRK_CHANNEL_TYPE_PREMULTIPLIED_OPACITY = 2, /* premultiplied opacity */
367 GRK_CHANNEL_TYPE_UNSPECIFIED = 65535U /* unspecified */
370
374typedef enum _GRK_CHANNEL_ASSOC
375{
377 GRK_CHANNEL_ASSOC_WHOLE_IMAGE = 0, /* whole image */
378 GRK_CHANNEL_ASSOC_COLOUR_1 = 1, /* colour 1 */
379 GRK_CHANNEL_ASSOC_COLOUR_2 = 2, /* colour 2 */
380 GRK_CHANNEL_ASSOC_COLOUR_3 = 3, /* colour 3 */
381 GRK_CHANNEL_ASSOC_UNASSOCIATED = 65535U /* unassociated */
384
388typedef struct _grk_channel_description
390 uint16_t channel; /* channel */
391 uint16_t typ; /* type */
392 uint16_t asoc; /* association */
394
398typedef struct _grk_channel_definition
401 uint16_t num_channel_descriptions; /* number of channel descriptions */
403
407typedef struct _grk_asoc
409 uint32_t level; /* level: 0 for root level */
410 const char* label; /* label */
411 uint8_t* xml; /* xml */
412 uint32_t xml_len; /* xml length */
413} grk_asoc;
414
418typedef enum _grk_precision_mode
420 GRK_PREC_MODE_CLIP, /* clip */
423
427typedef struct _grk_precision
429 uint8_t prec; /* precision */
432
436typedef struct _grk_header_info
437{
438 /******************************************
439 set by client only if decompressing to file
440 *******************************************/
441 GRK_SUPPORTED_FILE_FMT decompress_fmt; /* decompress format */
442 bool force_rgb; /* force RGB */
443 bool upsample; /* upsample */
444 grk_precision* precision; /* precision */
445 uint32_t num_precision; /* number of precision */
446 bool split_by_component; /* split by component */
447 bool single_tile_decompress; /* single tile decompress */
448 /****************************************/
449
450 /*****************************************
451 populated by library after reading header
452 ******************************************/
454 uint32_t cblockw_init; /* initial code block width */
456 uint32_t cblockh_init; /* initial code block height */
458 bool irreversible; /* irreversible */
460 uint8_t mct; /* multi-component transform */
463 uint16_t rsiz; /* RSIZ */
465 uint8_t numresolutions; /* number of resolutions */
466 /*********************************************************
467 coding style can be specified in main header COD segment,
468 tile header COD segment, and tile component COC segment.
469 *********************************************************/
470 /* !!!! assume that coding style does not vary across tile components */
471 uint8_t csty; /* coding style */
472 /*******************************************************************
473 code block style is specified in main header COD segment, and can
474 be overridden in a tile header. !!! Assume that style does
475 not vary across tiles !!!
476 *******************************************************************/
477 uint8_t cblk_sty; /* code block style */
479 uint32_t prcw_init[GRK_MAXRLVLS]; /* initial precinct width */
481 uint32_t prch_init[GRK_MAXRLVLS]; /* initial precinct height */
483 uint32_t tx0; /* tx0 */
485 uint32_t ty0; /* ty0 */
487 uint32_t t_width; /* tile width */
489 uint32_t t_height; /* tile height */
491 uint16_t t_grid_width; /* tile grid width */
493 uint16_t t_grid_height; /* tile grid height */
495 uint16_t num_layers_;
496 /*************************************
497 * note: xml_data will remain valid
498 * until codec is destroyed
499 ************************************/
500 uint8_t* xml_data; /* XML data */
501 size_t xml_data_len; /* XML data length */
502 size_t num_comments; /* number of comments */
504 uint16_t comment_len[GRK_NUM_COMMENTS_SUPPORTED]; /* comment length */
505 bool is_binary_comment[GRK_NUM_COMMENTS_SUPPORTED]; /* is binary comment */
508 uint32_t num_asocs; /* number of associations */
510
514typedef struct _grk_io_buf
516 uint8_t* data_; /* data */
517 size_t offset_; /* offset */
518 size_t len_; /* length */
519 size_t alloc_len_; /* allocated length */
520 bool pooled_; /* pooled */
521 uint32_t index_; /* index */
522} grk_io_buf;
523
527typedef struct _grk_io_init
529 uint32_t max_pooled_requests_; /* max pooled requests */
532
540typedef bool (*grk_io_callback)(uint32_t thread_id, grk_io_buf buffer, void* io_user_data);
541
550typedef void (*grk_io_register_reclaim_callback)(grk_io_init io_init,
551 grk_io_callback reclaim_callback,
552 void* io_user_data, void* reclaim_user_data);
553
561typedef bool (*grk_io_pixels_callback)(uint32_t thread_id, grk_io_buf buffer, void* user_data);
562
571typedef size_t (*grk_stream_read_fn)(uint8_t* buffer, size_t numBytes, void* user_data);
572
581typedef size_t (*grk_stream_write_fn)(const uint8_t* buffer, size_t numBytes, void* user_data);
582
590typedef bool (*grk_stream_seek_fn)(uint64_t offset, void* user_data);
591
598typedef void (*grk_stream_free_user_data_fn)(void* user_data);
599
608typedef struct _grk_stream_params
609{
610 /* 1. File */
611 const char* file; /* file */
612
613 /* 2. Buffer */
614 uint8_t* buf; /* buffer */
615 size_t buf_len; /* buffer length */
616 /* length of compressed stream (set by compressor, not client) */
617 size_t buf_compressed_len; /* buffer compressed length */
618
619 /* 3. Callback */
620 grk_stream_read_fn read_fn; /* read function */
621 grk_stream_write_fn write_fn; /* write function */
622 grk_stream_seek_fn seek_fn; /* seek function */
624 void* user_data; /* user data */
625 size_t stream_len; // must be set for read stream
626 size_t double_buffer_len; // optional - default value is 1024 * 1024
628
632typedef enum _GRK_TILE_CACHE_STRATEGY
634 GRK_TILE_CACHE_NONE, /* no tile caching */
635 GRK_TILE_CACHE_IMAGE, /* cache final tile image */
636 GRK_TILE_CACHE_ALL /* cache everything */
638
642typedef struct _grk_decompress_core_params
643{
651 uint8_t reduce; /* reduce */
658 uint16_t layers_to_decompress_; /* layers to decompress */
659 GRK_TILE_CACHE_STRATEGY tile_cache_strategy; /* tile cache strategy */
661 uint32_t random_access_flags_; /* random access flags */
664 void* io_user_data; /* IO user data */
667
673#define GRK_DECOMPRESS_COMPRESSION_LEVEL_DEFAULT (UINT_MAX)
674
678typedef struct _grk_decompress_params
679{
683 char infile[GRK_PATH_LEN]; /* input file */
685 char outfile[GRK_PATH_LEN]; /* output file */
687 GRK_CODEC_FORMAT decod_format; /* decode format */
689 GRK_SUPPORTED_FILE_FMT cod_format; /* code format */
691 double dw_x0; /* decompress window x0 */
693 double dw_x1; /* decompress window x1 */
695 double dw_y0; /* decompress window y0 */
697 double dw_y1; /* decompress window y1 */
699 uint16_t tile_index; /* tile index */
700 bool single_tile_decompress; /* single tile decompress */
701 grk_precision* precision; /* precision */
702 uint32_t num_precision; /* number of precision */
703 /* force output colorspace to RGB */
704 bool force_rgb; /* force RGB */
705 /* upsample components according to their dx/dy values */
706 bool upsample; /* upsample */
707 /* split output components to different files */
708 bool split_pnm; /* split PNM */
709 /* serialize XML metadata to disk */
710 bool io_xml; /* IO XML */
711 uint32_t compression; /* compression */
712 /*****************************************************
713 compression "quality". Meaning of "quality" depends
714 on file format we are writing to
715 *****************************************************/
716 uint32_t compression_level; /* compression level */
718 bool verbose_; /* verbose */
719 int32_t device_id; /* device ID */
720 uint32_t duration; /* in seconds */
721 uint32_t kernel_build_options; /* kernel build options */
722 uint32_t repeats; /* repeats */
723 uint32_t num_threads; /* number of threads */
724 void* user_data; /* user data */
726
730typedef struct _grk_image_comp
731{
733 uint32_t x0; /* x0 */
735 uint32_t y0; /* y0 */
737 uint32_t w; /* width */
739 uint32_t stride; /* stride */
741 uint32_t h; /* height */
744 uint8_t dx; /* dx */
747 uint8_t dy; /* dy */
749 uint8_t prec; /* precision */
750 /* signed */
751 bool sgnd; /* signed */
753 GRK_CHANNEL_ASSOC association; /* association */
754 /* component registration coordinates */
755 uint16_t crg_x, crg_y; /* CRG x and y */
757 int32_t* data; /* data */
759
763typedef struct _grk_color
765 uint8_t* icc_profile_buf; /* ICC profile buffer */
766 uint32_t icc_profile_len; /* ICC profile length */
767 char* icc_profile_name; /* ICC profile name */
769 grk_palette_data* palette; /* palette */
770 bool has_colour_specification_box; /* has colour specification box */
771} grk_color;
772
776typedef struct _grk_image_meta
778 grk_object obj; /* object */
779 grk_color color; /* color */
780 uint8_t* iptc_buf; /* IPTC buffer */
781 size_t iptc_len; /* IPTC length */
782 uint8_t* xmp_buf; /* XMP buffer */
783 size_t xmp_len; /* XMP length */
785
792typedef struct _grk_image
794 grk_object obj; /* object */
797 uint32_t x0; /* x0 */
800 uint32_t y0; /* y0 */
802 uint32_t x1; /* x1 */
804 uint32_t y1; /* y1 */
806 uint16_t numcomps; /* number of components */
807 GRK_COLOR_SPACE color_space; /* color space */
808 bool palette_applied_; /* palette applied */
809 bool channel_definition_applied_; /* channel definition applied */
810 bool has_capture_resolution; /* has capture resolution */
811 double capture_resolution[2]; /* capture resolution */
812 bool has_display_resolution; /* has display resolution */
813 double display_resolution[2]; /* display resolution */
814 GRK_SUPPORTED_FILE_FMT decompress_fmt; /* decompress format */
815 bool force_rgb; /* force RGB */
816 bool upsample; /* upsample */
817 grk_precision* precision; /* precision */
818 uint32_t num_precision; /* number of precision */
819 bool has_multiple_tiles; /* has multiple tiles */
820 bool split_by_component; /* split by component */
821 uint16_t decompress_num_comps; /* decompress number of components */
822 uint32_t decompress_width; /* decompress width */
823 uint32_t decompress_height; /* decompress height */
824 uint8_t decompress_prec; /* decompress precision */
825 GRK_COLOR_SPACE decompress_colour_space; /* decompress colour space */
826 grk_io_buf interleaved_data; /* interleaved data */
827 uint32_t rows_per_strip; // for storage to output format
828 uint32_t rows_per_task; // for scheduling
829 uint64_t packed_row_bytes; /* packed row bytes */
830 grk_image_meta* meta; /* meta */
831 grk_image_comp* comps; /* components */
832} grk_image;
833
837typedef struct _grk_plugin_pass
839 double distortion_decrease; /* distortion decrease up to and including this pass */
840 size_t rate; /* rate up to and including this pass */
841 size_t length; /* stream length for this pass */
843
847typedef struct _grk_plugin_code_block
848{
849 /**************************
850 debug info
851 **************************/
852 uint32_t x0, y0, x1, y1; /* x0, y0, x1, y1 */
853 unsigned int* context_stream; /* context stream */
854 /***************************/
855 uint32_t num_pix; /* number of pixels */
856 uint8_t* compressed_data; /* compressed data */
857 uint32_t compressed_data_length; /* compressed data length */
858 uint8_t num_bit_planes; /* number of bit planes */
859 uint8_t num_passes; /* number of passes */
861 unsigned int sorted_index; /* sorted index */
863
867typedef struct _grk_plugin_precinct
869 uint64_t num_blocks; /* number of blocks */
872
876typedef struct _grk_plugin_band
878 uint8_t orientation; /* orientation */
879 uint64_t num_precincts; /* number of precincts */
881 float stepsize; /* stepsize */
883
887typedef struct _grk_plugin_resolution
889 uint8_t level; /* level */
890 uint8_t num_bands; /* number of bands */
891 grk_plugin_band** band; /* band */
893
897typedef struct grk_plugin_tile_component
899 uint8_t numresolutions; /* number of resolutions */
903#define GRK_DECODE_HEADER (1 << 0)
904#define GRK_DECODE_T2 (1 << 1)
905#define GRK_DECODE_T1 (1 << 2)
906#define GRK_DECODE_POST_T1 (1 << 3)
907#define GRK_PLUGIN_DECODE_CLEAN (1 << 4)
908#define GRK_DECODE_ALL \
909 (GRK_PLUGIN_DECODE_CLEAN | GRK_DECODE_HEADER | GRK_DECODE_T2 | GRK_DECODE_T1 | \
910 GRK_DECODE_POST_T1)
911
915typedef struct _grk_plugin_tile
917 uint32_t decompress_flags; /* decompress flags */
918 uint16_t num_components; /* number of components */
921
925GRK_API const char* GRK_CALLCONV grk_version(void);
926
934GRK_API bool GRK_CALLCONV grk_initialize(const char* pluginPath, uint32_t num_threads,
935 bool verbose);
936
941
948
949/*
950 * @brief Decrement ref count
951 *
952 * @param obj Grok object (see @ref grk_object)
953 *
954 */
956
964
975GRK_API grk_image* GRK_CALLCONV grk_image_new(uint16_t numcmpts, grk_image_comp* cmptparms,
976 GRK_COLOR_SPACE clrspc, bool alloc_data);
977
983
995GRK_API bool GRK_CALLCONV grk_decompress_detect_format(const char* file_name,
996 GRK_CODEC_FORMAT* fmt);
997
1004
1017
1026 grk_object* codec);
1027
1038 grk_header_info* header_info);
1039
1049 uint16_t tile_index);
1050
1059
1075GRK_API bool GRK_CALLCONV grk_decompress_set_window(grk_object* codec, double start_x,
1076 double start_y, double end_x, double end_y);
1077
1087
1096GRK_API bool GRK_CALLCONV grk_decompress_tile(grk_object* codec, uint16_t tile_index);
1097
1098/* COMPRESSION FUNCTIONS*/
1099
1100/*
1101 * @ compressed image synthesis parameters
1103typedef struct _grk_synthesis
1105 bool do_synthesis_; /* do synthesis */
1106 uint32_t width_; /* width */
1107 uint32_t height_; /* height */
1108 uint8_t precision_; /* precision */
1109 uint16_t numcomps_; /* number of components */
1111
1116typedef struct _grk_cparameters
1118 bool tile_size_on; /* tile size on */
1120 uint32_t tx0; /* tx0 */
1122 uint32_t ty0; /* ty0 */
1124 uint32_t t_width; /* tile width */
1126 uint32_t t_height; /* tile height */
1128 uint16_t numlayers; /* number of layers */
1130 bool allocation_by_rate_distortion; /* allocation by rate distortion */
1133 double layer_rate[GRK_MAX_LAYERS]; /* layer rate */
1135 bool allocation_by_quality; /* allocation by quality */
1137 double layer_distortion[GRK_MAX_LAYERS]; /* layer distortion */
1139 uint16_t comment_len[GRK_NUM_COMMENTS_SUPPORTED]; /* comment length */
1140 bool is_binary_comment[GRK_NUM_COMMENTS_SUPPORTED]; /* is binary comment */
1141 size_t num_comments; /* number of comments */
1143 uint8_t csty; /* coding style */
1144 /* number of guard bits */
1145 uint8_t numgbits; /* number of guard bits */
1147 GRK_PROG_ORDER prog_order; /* progression order */
1149 grk_progression progression[GRK_MAXRLVLS]; /* progression */
1151 uint32_t numpocs; /* number of POCs */
1153 uint8_t numresolution; /* number of resolutions */
1155 uint32_t cblockw_init; /* code block width */
1157 uint32_t cblockh_init; /* code block height */
1159 uint8_t cblk_sty; /* code block style */
1162 bool irreversible; /* irreversible */
1165 int32_t roi_compno; /* ROI component number */
1167 uint32_t roi_shift; /* ROI shift */
1168 /* number of precinct size specifications */
1169 uint32_t res_spec; /* res spec */
1171 uint32_t prcw_init[GRK_MAXRLVLS]; /* precinct width */
1173 uint32_t prch_init[GRK_MAXRLVLS]; /* precinct height */
1175 char infile[GRK_PATH_LEN]; /* input file */
1177 char outfile[GRK_PATH_LEN]; /* output file */
1179 uint32_t image_offset_x0; /* image offset x0 */
1181 uint32_t image_offset_y0; /* image offset y0 */
1183 uint8_t subsampling_dx; /* subsampling dx */
1185 uint8_t subsampling_dy; /* subsampling dy */
1187 GRK_SUPPORTED_FILE_FMT decod_format; /* decode format */
1190 grk_raw_cparameters raw_cp; /* raw parameters */
1192 bool enable_tile_part_generation; /* enable tile part generation */
1194 uint8_t new_tile_part_progression_divider; /* new tile part progression divider */
1196 uint8_t mct; /* MCT */
1199 void* mct_data; /* MCT data */
1206 uint64_t max_cs_size; /* max code stream size */
1211 uint64_t max_comp_size; /* max component size */
1214 uint16_t rsiz; /* RSIZ */
1215 uint16_t framerate; /* frame rate */
1216
1217 /* set to true if input file stores capture resolution */
1218 bool write_capture_resolution_from_file; /* write capture resolution from file */
1219 double capture_resolution_from_file[2]; /* capture resolution from file */
1221 bool write_capture_resolution; /* write capture resolution */
1222 double capture_resolution[2]; /* capture resolution */
1224 bool write_display_resolution; /* write display resolution */
1225 double display_resolution[2]; /* display resolution */
1227 bool apply_icc_; /* apply ICC */
1230 uint32_t num_threads; /* number of threads */
1231 int32_t device_id; /* device ID */
1232 uint32_t duration; /* duration seconds */
1233 uint32_t kernel_build_options; /* kernel build options */
1234 uint32_t repeats; /* repeats */
1235 bool write_plt; /* write PLT */
1236 bool write_tlm; /* write TLM */
1237 bool verbose; /* verbose */
1238 bool shared_memory_interface; /* shared memory interface */
1239 grk_synthesis synth_; /* synthesis */
1241
1262
1273 grk_cparameters* parameters, grk_image* image);
1283
1292GRK_API void GRK_CALLCONV grk_dump_codec(grk_object* codec, uint32_t info_flag,
1293 FILE* output_stream);
1294
1305GRK_API bool GRK_CALLCONV grk_set_MCT(grk_cparameters* parameters, float* encoding_matrix,
1306 int32_t* dc_shift, uint32_t nb_comp);
1308#define GRK_IMG_INFO 1 /* Basic image information provided to the user */
1309#define GRK_MH_INFO 2 /* Codestream information based only on the main header */
1310#define GRK_TH_INFO 4 /* Tile information based on the current tile header */
1311#define GRK_TCH_INFO 8
1312#define GRK_MH_IND 16
1313#define GRK_TH_IND 32
1315#define GRK_CBLKSTY_LAZY 0x01
1316#define GRK_CBLKSTY_RESET 0x02
1317#define GRK_CBLKSTY_TERMALL 0x04
1318#define GRK_CBLKSTY_VSC 0x08
1319#define GRK_CBLKSTY_PTERM 0x10
1320#define GRK_CBLKSTY_SEGSYM 0x20
1321#define GRK_CBLKSTY_HT_ONLY 0x40
1322#define GRK_CBLKSTY_HT_MIXED 0xC0
1323#define GRK_JPH_RSIZ_FLAG 0x4000
1325/*****************************************************************************
1326 * JPEG 2000 Profiles, see Table A.10 from 15444-1 (updated in various AMDs)
1327 *
1328 * These values help choose the RSIZ value for the JPEG 2000 code stream.
1329 * The RSIZ value forces various compressing options, as detailed in Table A.10.
1330 * If GRK_PROFILE_PART2 is chosen, it must be combined with one or more extensions
1331 * described below.
1332 *
1333 * Example: rsiz = GRK_PROFILE_PART2 | GRK_EXTENSION_MCT;
1334 *
1335 * For broadcast profiles, the GRK_PROFILE_X value has to be combined with the target
1336 * level (3-0 LSB, value between 0 and 11):
1337 * Example: rsiz = GRK_PROFILE_BC_MULTI | 0x0005; //level equals 5
1338 *
1339 * For IMF profiles, the GRK_PROFILE_X value has to be combined with the target main-level
1340 * (3-0 LSB, value between 0 and 11) and sub-level (7-4 LSB, value between 0 and 9):
1341 * Example: rsiz = GRK_PROFILE_IMF_2K | 0x0040 | 0x0005; // main-level equals 5 and sub-level
1342 * equals 4
1343 *
1344 * */
1345#define GRK_PROFILE_NONE 0x0000
1346#define GRK_PROFILE_0 0x0001
1347#define GRK_PROFILE_1 0x0002
1348#define GRK_PROFILE_CINEMA_2K 0x0003
1349#define GRK_PROFILE_CINEMA_4K 0x0004
1350#define GRK_PROFILE_CINEMA_S2K 0x0005
1351#define GRK_PROFILE_CINEMA_S4K 0x0006
1352#define GRK_PROFILE_CINEMA_LTS \
1353 0x0007
1354#define GRK_PROFILE_BC_SINGLE 0x0100
1355#define GRK_PROFILE_BC_MULTI 0x0200
1356#define GRK_PROFILE_BC_MULTI_R \
1357 0x0300
1358#define GRK_PROFILE_BC_MASK 0x030F
1359#define GRK_PROFILE_IMF_2K 0x0400
1360#define GRK_PROFILE_IMF_4K 0x0500
1361#define GRK_PROFILE_IMF_8K 0x0600
1362#define GRK_PROFILE_IMF_2K_R \
1363 0x0700
1364#define GRK_PROFILE_IMF_4K_R \
1365 0x0800
1366#define GRK_PROFILE_IMF_8K_R \
1367 0x0900
1368#define GRK_PROFILE_MASK 0x0FFF
1369#define GRK_PROFILE_PART2 0x8000
1370#define GRK_PROFILE_PART2_EXTENSIONS_MASK 0x3FFF // Mask for Part-2 extension bits
1371
1375#define GRK_EXTENSION_NONE 0x0000
1376#define GRK_EXTENSION_MCT 0x0100
1377#define GRK_IS_PART2(v) ((v) & GRK_PROFILE_PART2)
1379#define GRK_IS_CINEMA(v) (((v) >= GRK_PROFILE_CINEMA_2K) && ((v) <= GRK_PROFILE_CINEMA_S4K))
1380#define GRK_IS_STORAGE(v) ((v) == GRK_PROFILE_CINEMA_LTS)
1381
1382/*
1383 *
1384 * *********************************************
1385 * Broadcast level (3-0 LSB) (15444-1 AMD4,AMD8)
1386 * *********************************************
1387 *
1388 * indicates maximum bit rate and sample rate for a code stream
1389 *
1390 * Note: Mbit/s == 10^6 bits/s; Msamples/s == 10^6 samples/s
1391 *
1392 * 0: no maximum rate
1393 * 1: 200 Mbits/s, 65 Msamples/s
1394 * 2: 200 Mbits/s, 130 Msamples/s
1395 * 3: 200 Mbits/s, 195 Msamples/s
1396 * 4: 400 Mbits/s, 260 Msamples/s
1397 * 5: 800Mbits/s, 520 Msamples/s
1398 * >= 6: 2^(level-6) * 1600 Mbits/s, 2^(level-6) * 1200 Msamples/s
1399 *
1400 * Note: level cannot be greater than 11
1401 *
1402 * ****************
1403 * Broadcast tiling
1404 * ****************
1405 *
1406 * Either single-tile or multi-tile. Multi-tile only permits
1407 * 1 or 4 tiles per frame, where multiple tiles have identical
1408 * sizes, and are configured in either 2x2 or 1x4 layout.
1409 *
1410 *************************************************************
1411 *
1412 * ***************************************
1413 * IMF main-level (3-0) LSB (15444-1 AMD8)
1414 * ***************************************
1415 *
1416 * main-level indicates maximum number of samples per second,
1417 * as listed above.
1418 *
1419 *
1420 * **************************************
1421 * IMF sub-level (7-4) LSB (15444-1 AMD8)
1422 * **************************************
1423 *
1424 * sub-level indicates maximum bit rate for a code stream:
1425 *
1426 * 0: no maximum rate
1427 * >0: 2^sub-level * 100 Mbits/second
1428 *
1429 * Note: sub-level cannot be greater than 9, and cannot be larger
1430 * then maximum of (main-level -2) and 1.
1431 *
1432 */
1434#define GRK_GET_IMF_OR_BROADCAST_PROFILE(v) \
1435 ((v) & 0x0f00)
1437#define GRK_LEVEL_MAX 11U
1438#define GRK_GET_LEVEL(v) ((v) & 0xf)
1440/******* BROADCAST **********************************************************/
1442#define GRK_IS_BROADCAST(v) \
1443 (((v) >= GRK_PROFILE_BC_SINGLE) && ((v) <= (GRK_PROFILE_BC_MULTI_R | 0x000b)) && \
1444 (((v) & 0xf) <= 0xb))
1445
1446/* Maximum component sampling Rate (Mbits/sec) per level */
1447#define GRK_BROADCAST_LEVEL_1_MBITSSEC 200U
1448#define GRK_BROADCAST_LEVEL_2_MBITSSEC 200U
1449#define GRK_BROADCAST_LEVEL_3_MBITSSEC 200U
1450#define GRK_BROADCAST_LEVEL_4_MBITSSEC 400U
1451#define GRK_BROADCAST_LEVEL_5_MBITSSEC 800U
1452#define GRK_BROADCAST_LEVEL_6_MBITSSEC 1600U
1453#define GRK_BROADCAST_LEVEL_7_MBITSSEC 3200U
1454#define GRK_BROADCAST_LEVEL_8_MBITSSEC 6400U
1455#define GRK_BROADCAST_LEVEL_9_MBITSSEC 12800U
1456#define GRK_BROADCAST_LEVEL_10_MBITSSEC 25600U
1457#define GRK_BROADCAST_LEVEL_11_MBITSSEC 51200U
1459#define GRK_BROADCAST_LEVEL_1_MSAMPLESSEC 64U
1460#define GRK_BROADCAST_LEVEL_2_MSAMPLESSEC 130U
1461#define GRK_BROADCAST_LEVEL_3_MSAMPLESSEC 195U
1462#define GRK_BROADCAST_LEVEL_4_MSAMPLESSEC 260U
1463#define GRK_BROADCAST_LEVEL_5_MSAMPLESSEC 520U
1464#define GRK_BROADCAST_LEVEL_6_MSAMPLESSEC 1200U
1465#define GRK_BROADCAST_LEVEL_7_MSAMPLESSEC 2400U
1466#define GRK_BROADCAST_LEVEL_8_MSAMPLESSEC 4800U
1467#define GRK_BROADCAST_LEVEL_9_MSAMPLESSEC 9600U
1468#define GRK_BROADCAST_LEVEL_10_MSAMPLESSEC 19200U
1469#define GRK_BROADCAST_LEVEL_11_MSAMPLESSEC 38400U
1471/********IMF *****************************************************************/
1473#define GRK_IS_IMF(v) \
1474 (((v) >= GRK_PROFILE_IMF_2K) && ((v) <= (GRK_PROFILE_IMF_8K_R | 0x009b)) && \
1475 (((v) & 0xf) <= 0xb) && (((v) & 0xf0) <= 0x90))
1476
1477/* Maximum component sampling rate (MSamples/sec) per main level */
1478#define GRK_IMF_MAINLEVEL_1_MSAMPLESSEC 65U
1479#define GRK_IMF_MAINLEVEL_2_MSAMPLESSEC 130U
1480#define GRK_IMF_MAINLEVEL_3_MSAMPLESSEC 195U
1481#define GRK_IMF_MAINLEVEL_4_MSAMPLESSEC 260U
1482#define GRK_IMF_MAINLEVEL_5_MSAMPLESSEC 520U
1483#define GRK_IMF_MAINLEVEL_6_MSAMPLESSEC 1200U
1484#define GRK_IMF_MAINLEVEL_7_MSAMPLESSEC 2400U
1485#define GRK_IMF_MAINLEVEL_8_MSAMPLESSEC 4800U
1486#define GRK_IMF_MAINLEVEL_9_MSAMPLESSEC 9600U
1487#define GRK_IMF_MAINLEVEL_10_MSAMPLESSEC 19200U
1488#define GRK_IMF_MAINLEVEL_11_MSAMPLESSEC 38400U
1490#define GRK_IMF_SUBLEVEL_MAX 9U
1491#define GRK_GET_IMF_SUBLEVEL(v) (((v) >> 4) & 0xf)
1494#define GRK_IMF_SUBLEVEL_1_MBITSSEC 200U
1495#define GRK_IMF_SUBLEVEL_2_MBITSSEC 400U
1496#define GRK_IMF_SUBLEVEL_3_MBITSSEC 800U
1497#define GRK_IMF_SUBLEVEL_4_MBITSSEC 1600U
1498#define GRK_IMF_SUBLEVEL_5_MBITSSEC 3200U
1499#define GRK_IMF_SUBLEVEL_6_MBITSSEC 6400U
1500#define GRK_IMF_SUBLEVEL_7_MBITSSEC 12800U
1501#define GRK_IMF_SUBLEVEL_8_MBITSSEC 25600U
1502#define GRK_IMF_SUBLEVEL_9_MBITSSEC 51200U
1503/**********************************************************************************/
1504
1509#define GRK_CINEMA_DCI_MAX_BANDWIDTH 250000000
1511#define GRK_CINEMA_24_CS 1302083
1512#define GRK_CINEMA_24_COMP 1041666
1514#define GRK_CINEMA_48_CS 651041
1515#define GRK_CINEMA_48_COMP 520833
1517#define GRK_CINEMA_4K_DEFAULT_NUM_RESOLUTIONS 7 /* Default number of resolutions for 4K cinema */
1518
1519/*
1520 * CIE Lab #defines
1522#define GRK_CUSTOM_CIELAB_SPACE 0x0
1523#define GRK_DEFAULT_CIELAB_SPACE 0x44454600 /* 'DEF' */
1524
1528#define GRK_RANDOM_ACCESS_PLT 1 /* use PLT marker if present */
1529#define GRK_RANDOM_ACCESS_TLM 2 /* use TLM marker if present */
1530#define GRK_RANDOM_ACCESS_PLM 4 /* use PLM marker if present */
1531
1532/*************************************************************************************
1533 Plugin Interface
1534 *************************************************************************************/
1535
1540typedef struct _grk_plugin_load_info
1542 const char* pluginPath; /* plugin path */
1543 bool verbose; /* verbose */
1545
1552
1557
1561#define GRK_PLUGIN_STATE_NO_DEBUG 0x0
1562
1563/*
1564 For compress debugging, the plugin first performs a T1 compress.
1565 Then:
1566 1. perform host DWT on plugin MCT data, and write to host image
1567 This way, both plugin and host start from same point
1568 (assume MCT is equivalent for both host and plugin)
1569 2. map plugin DWT data, compare with host DWT, and then write to plugin image
1570 At this point in the code, the plugin image holds plugin DWT data. And if no warnings are
1571 triggered, then we can safely say that host and plugin DWT data are identical.
1572 3. Perform host compress, skipping MCT and DWT (they have already been performed)
1573 4. during host compress, each context that is formed is compared against context stream from plugin
1574 5. rate control - synch with plugin code stream, and compare
1575 6. T2 and store to disk
1576 */
1578#define GRK_PLUGIN_STATE_DEBUG 0x1
1579#define GRK_PLUGIN_STATE_PRE_TR1 0x2
1580#define GRK_PLUGIN_STATE_DWT_QUANTIZATION 0x4
1581#define GRK_PLUGIN_STATE_MCT_ONLY 0x8
1582
1587
1588/*
1589 * @brief Plugin init info
1591typedef struct _grk_plugin_init_info
1593 int32_t device_id; /* device ID */
1594 bool verbose; /* verbose */
1595 const char* license; /* license */
1596 const char* server; /* server */
1598
1608 const char* input_file_name; /* input file name */
1609 bool output_file_name_is_relative; /* output file name is relative */
1610 const char* output_file_name; /* output file name */
1611 grk_cparameters* compressor_parameters; /* compressor parameters */
1612 grk_image* image; /* image */
1614 grk_stream_params stream_params; /* stream parameters */
1615 unsigned int error_code; /* error code */
1616 bool transfer_exif_tags; /* transfer EXIF tags */
1618
1625
1629typedef struct grk_plugin_compress_batch_info
1631 const char* input_dir; /* input directory */
1632 const char* output_dir; /* output directory */
1633 grk_cparameters* compress_parameters; /* compress parameters */
1636
1643GRK_API int32_t GRK_CALLCONV grk_plugin_compress(grk_cparameters* compress_parameters,
1645
1655
1660
1665
1669typedef int (*GROK_INIT_DECOMPRESSORS)(grk_header_info* header_info, grk_image* image);
1670
1677 size_t device_id; /* device ID */
1679 const char* input_file_name; /* input file name */
1680 const char* output_file_name; /* output file name */
1681 /* input file format 0: J2K, 1: JP2 */
1682 GRK_CODEC_FORMAT decod_format; /* decode format */
1683 /* output file format 0: PGX, 1: PxM, 2: BMP etc */
1685 grk_object* codec; /* codec */
1686 grk_header_info header_info; /* header info */
1688 grk_image* image; /* image */
1689 bool plugin_owns_image; /* plugin owns image */
1691 unsigned int error_code; /* error code */
1692 uint32_t decompress_flags; /* decompress flags */
1693 uint32_t full_image_x0; /* full image x0 */
1694 uint32_t full_image_y0; /* full image y0 */
1695 void* user_data; /* user data */
1697
1706
1717
1729 const char* input_dir, const char* output_dir, grk_decompress_parameters* decompress_parameters,
1731
1738
1743
1744#ifdef __cplusplus
1745}
1746#endif
struct _grk_plugin_init_info grk_plugin_init_info
enum _GRK_TILE_CACHE_STRATEGY GRK_TILE_CACHE_STRATEGY
Grok tile cache strategy.
_GRK_SUPPORTED_FILE_FMT
All supported file formats.
Definition grok.h:285
@ GRK_FMT_BMP
Definition grok.h:292
@ GRK_FMT_JP2
Definition grok.h:288
@ GRK_FMT_J2K
Definition grok.h:287
@ GRK_FMT_PNG
Definition grok.h:295
@ GRK_FMT_YUV
Definition grok.h:298
@ GRK_FMT_RAWL
Definition grok.h:296
@ GRK_FMT_UNK
Definition grok.h:286
@ GRK_FMT_TIF
Definition grok.h:293
@ GRK_FMT_JPG
Definition grok.h:297
@ GRK_FMT_PXM
Definition grok.h:289
@ GRK_FMT_RAW
Definition grok.h:294
@ GRK_FMT_PAM
Definition grok.h:291
@ GRK_FMT_PGX
Definition grok.h:290
GRK_API bool GRK_CALLCONV grk_decompress_set_window(grk_object *codec, double start_x, double start_y, double end_x, double end_y)
Specifiy area to be decompressed.
Definition grok.cpp:415
struct _grk_cparameters grk_cparameters
Compression parameters.
GRK_API void GRK_CALLCONV grk_decompress_set_default_params(grk_decompress_parameters *parameters)
Initialize decompress parameters with default values.
Definition grok.cpp:353
struct _grk_progression grk_progression
Progression order change.
enum _grk_precision_mode grk_precision_mode
Precision mode.
struct _grk_image grk_image
Grok image.
void(* grk_io_register_reclaim_callback)(grk_io_init io_init, grk_io_callback reclaim_callback, void *io_user_data, void *reclaim_user_data)
Grok IO register reclaim callback.
Definition grok.h:549
GRK_API bool GRK_CALLCONV grk_initialize(const char *pluginPath, uint32_t num_threads, bool verbose)
Initialize library.
Definition grok.cpp:131
GRK_API void GRK_CALLCONV grk_plugin_stop_batch_compress(void)
Stop batch compress.
Definition grok.cpp:885
GRK_API bool GRK_CALLCONV grk_set_MCT(grk_cparameters *parameters, float *encoding_matrix, int32_t *dc_shift, uint32_t nb_comp)
Set MCT matrix.
Definition grok.cpp:461
GRK_API grk_object *GRK_CALLCONV grk_object_ref(grk_object *obj)
Increment ref count.
Definition grok.cpp:160
GRK_API void GRK_CALLCONV grk_plugin_stop_batch_decompress(void)
Stop batch decompress.
Definition grok.cpp:982
struct _grk_channel_description grk_channel_description
Channel definition: channel index, type, association.
#define GRK_NUM_COMMENTS_SUPPORTED
maximum Grok supported number of comments
Definition grok.h:123
void(* grk_msg_callback)(const char *msg, void *client_data)
Logging callback.
Definition grok.h:169
enum _GRK_CHANNEL_TYPE GRK_CHANNEL_TYPE
struct _grk_stream_params grk_stream_params
JPEG 2000 stream parameters.
GRK_API void GRK_CALLCONV grk_plugin_cleanup(void)
Clean up plugin resources.
Definition grok.cpp:803
GRK_API void GRK_CALLCONV grk_set_msg_handlers(grk_msg_handlers msg_handlers)
Set log message handlers.
Definition grok.cpp:178
GRK_API bool GRK_CALLCONV grk_plugin_load(grk_plugin_load_info info)
Load plugin.
Definition grok.cpp:761
struct grk_plugin_compress_batch_info grk_plugin_compress_batch_info
Plugin batch compress info.
uint64_t(* GRK_PLUGIN_COMPRESS_USER_CALLBACK)(grk_plugin_compress_user_callback_info *info)
Plugin compress user callback.
Definition grok.h:1623
#define GRK_MAXRLVLS
Definition grok.h:321
enum _GRK_CODEC_FORMAT GRK_CODEC_FORMAT
Supported JPEG 2000 formats.
enum _GRK_ENUM_COLOUR_SPACE GRK_ENUM_COLOUR_SPACE
JPEG 2000 standard color spaces.
GRK_API void GRK_CALLCONV grk_dump_codec(grk_object *codec, uint32_t info_flag, FILE *output_stream)
Dump codec information to file.
Definition grok.cpp:450
GRK_API uint32_t GRK_CALLCONV grk_plugin_get_debug_state()
Get debug state of plugin.
Definition grok.cpp:788
struct _grk_precision grk_precision
Precision.
struct _grk_plugin_decompress_callback_info grk_plugin_decompress_callback_info
Plugin decompress callback info.
#define GRK_MAX_PASSES
Grok maximum number of passes.
Definition grok.h:161
GRK_API int32_t GRK_CALLCONV grk_plugin_batch_decompress(void)
Initiate batch decompress.
Definition grok.cpp:968
enum _GRK_PROG_ORDER GRK_PROG_ORDER
Progression order.
struct _grk_object grk_object
Reference counted object.
bool(* grk_io_pixels_callback)(uint32_t thread_id, grk_io_buf buffer, void *user_data)
Grok IO pixels callback.
Definition grok.h:560
struct _grk_raw_cparameters grk_raw_cparameters
RAW image compress parameters.
GRK_API bool GRK_CALLCONV grk_decompress_read_header(grk_object *codec, grk_header_info *header_info)
Decompress JPEG 2000 header.
Definition grok.cpp:401
struct _grk_plugin_load_info grk_plugin_load_info
Plugin load info.
GRK_API int32_t GRK_CALLCONV grk_plugin_compress(grk_cparameters *compress_parameters, GRK_PLUGIN_COMPRESS_USER_CALLBACK callback)
Compress with plugin.
Definition grok.cpp:837
_GRK_CHANNEL_ASSOC
Channel association.
Definition grok.h:374
@ GRK_CHANNEL_ASSOC_COLOUR_1
Definition grok.h:377
@ GRK_CHANNEL_ASSOC_COLOUR_2
Definition grok.h:378
@ GRK_CHANNEL_ASSOC_COLOUR_3
Definition grok.h:379
@ GRK_CHANNEL_ASSOC_WHOLE_IMAGE
Definition grok.h:376
@ GRK_CHANNEL_ASSOC_UNASSOCIATED
Definition grok.h:380
struct _grk_msg_handlers grk_msg_handlers
Logging handlers.
enum _GRK_RATE_CONTROL_ALGORITHM GRK_RATE_CONTROL_ALGORITHM
Rate control algorithms.
struct _grk_decompress_core_params grk_decompress_core_params
Core decompression parameters.
size_t(* grk_stream_read_fn)(uint8_t *buffer, size_t numBytes, void *user_data)
Read stream callback.
Definition grok.h:570
struct _grk_image_meta grk_image_meta
Image meta data: colour, IPTC and XMP.
struct _grk_asoc grk_asoc
Association box info.
GRK_API grk_image *GRK_CALLCONV grk_decompress_get_tile_image(grk_object *codec, uint16_t tile_index)
Get decompressed tile image.
Definition grok.cpp:490
enum _GRK_SUPPORTED_FILE_FMT GRK_SUPPORTED_FILE_FMT
All supported file formats.
struct _grk_palette_data grk_palette_data
Palette data.
GRK_API bool GRK_CALLCONV grk_decompress_detect_format(const char *file_name, GRK_CODEC_FORMAT *fmt)
Detect JPEG 2000 format from file.
Definition grok.cpp:279
GRK_API bool GRK_CALLCONV grk_decompress_tile(grk_object *codec, uint16_t tile_index)
Decompress a specific tile.
Definition grok.cpp:439
#define GRK_API
Definition grok.h:51
struct _grk_component_mapping_comp grk_component_mapping_comp
Component mappings: component index, mapping type, palette column.
struct _grk_image_comp grk_image_comp
Image component.
struct _grk_raw_comp_cparameters grk_raw_comp_cparameters
RAW component compress parameters.
GRK_API void GRK_CALLCONV grk_deinitialize()
De-initialize library.
Definition grok.cpp:154
struct grk_plugin_tile_component grk_plugin_tile_component
Plugin tile component.
GRK_API void GRK_CALLCONV grk_object_unref(grk_object *obj)
Definition grok.cpp:169
#define GRK_MAX_LAYERS
Definition grok.h:313
GRK_API void GRK_CALLCONV grk_compress_set_default_params(grk_cparameters *parameters)
Set compression parameters to default values:
Definition grok.cpp:530
struct _grk_plugin_precinct grk_plugin_precinct
Plugin precinct.
struct grk_plugin_compress_user_callback_info grk_plugin_compress_user_callback_info
GRK_API const char *GRK_CALLCONV grk_version(void)
Library version.
Definition grok.cpp:234
_GRK_COLOR_SPACE
Grok supported color spaces.
Definition grok.h:80
@ GRK_CLRSPC_SRGB
unknown
Definition grok.h:82
@ GRK_CLRSPC_EYCC
standard YCC (YUV)
Definition grok.h:85
@ GRK_CLRSPC_UNKNOWN
Definition grok.h:81
@ GRK_CLRSPC_SYCC
grayscale
Definition grok.h:84
@ GRK_CLRSPC_DEFAULT_CIE
CMYK.
Definition grok.h:87
@ GRK_CLRSPC_ICC
custom CIE LAB
Definition grok.h:89
@ GRK_CLRSPC_CMYK
extended YCC
Definition grok.h:86
@ GRK_CLRSPC_GRAY
sRGB
Definition grok.h:83
@ GRK_CLRSPC_CUSTOM_CIE
default CIE LAB
Definition grok.h:88
GRK_API bool GRK_CALLCONV grk_plugin_init(grk_plugin_init_info init_info)
Initialize plugin.
Definition grok.cpp:808
GRK_API bool GRK_CALLCONV grk_decompress(grk_object *codec, grk_plugin_tile *tile)
Decompress image from a JPEG 2000 code stream.
Definition grok.cpp:427
struct _grk_io_buf grk_io_buf
Grok IO buffer.
_grk_precision_mode
Precision mode.
Definition grok.h:418
@ GRK_PREC_MODE_SCALE
Definition grok.h:420
@ GRK_PREC_MODE_CLIP
Definition grok.h:419
GRK_API grk_image_meta *GRK_CALLCONV grk_image_meta_new(void)
Create meta.
Definition grok.cpp:245
enum _GRK_COLOR_SPACE GRK_COLOR_SPACE
Grok supported color spaces.
#define GRK_PATH_LEN
Definition grok.h:312
bool(* grk_io_callback)(uint32_t thread_id, grk_io_buf buffer, void *io_user_data)
Grok IO callback.
Definition grok.h:539
GRK_API grk_image *GRK_CALLCONV grk_image_new(uint16_t numcmpts, grk_image_comp *cmptparms, GRK_COLOR_SPACE clrspc, bool alloc_data)
Create image.
Definition grok.cpp:239
GRK_API int32_t GRK_CALLCONV grk_plugin_decompress(grk_decompress_parameters *decompress_parameters, grk_plugin_decompress_callback callback)
Decompress single image with plugin.
Definition grok.cpp:933
bool(* grk_stream_seek_fn)(uint64_t offset, void *user_data)
Seek (absolute) callback.
Definition grok.h:589
struct _grk_io_init grk_io_init
Grok IO initialization.
GRK_API grk_object *GRK_CALLCONV grk_decompress_init(grk_stream_params *stream_params, grk_decompress_parameters *params)
Initialize decompressor.
Definition grok.cpp:364
_GRK_ENUM_COLOUR_SPACE
JPEG 2000 standard color spaces.
Definition grok.h:97
@ GRK_ENUM_CLRSPC_ESRGB
Definition grok.h:113
@ GRK_ENUM_CLRSPC_CMY
Definition grok.h:104
@ GRK_ENUM_CLRSPC_EYCC
Definition grok.h:117
@ GRK_ENUM_CLRSPC_CIEJAB
Definition grok.h:112
@ GRK_ENUM_CLRSPC_GRAY
Definition grok.h:110
@ GRK_ENUM_CLRSPC_CIE
Definition grok.h:107
@ GRK_ENUM_CLRSPC_UNKNOWN
Definition grok.h:98
@ GRK_ENUM_CLRSPC_YCBCR3
Definition grok.h:102
@ GRK_ENUM_CLRSPC_ROMMRGB
Definition grok.h:114
@ GRK_ENUM_CLRSPC_YPBPR60
Definition grok.h:115
@ GRK_ENUM_CLRSPC_SRGB
Definition grok.h:109
@ GRK_ENUM_CLRSPC_BILEVEL2
Definition grok.h:108
@ GRK_ENUM_CLRSPC_SYCC
Definition grok.h:111
@ GRK_ENUM_CLRSPC_PHOTO_YCC
Definition grok.h:103
@ GRK_ENUM_CLRSPC_YCBCR1
Definition grok.h:100
@ GRK_ENUM_CLRSPC_CMYK
Definition grok.h:105
@ GRK_ENUM_CLRSPC_YCCK
Definition grok.h:106
@ GRK_ENUM_CLRSPC_YPBPR50
Definition grok.h:116
@ GRK_ENUM_CLRSPC_BILEVEL1
Definition grok.h:99
@ GRK_ENUM_CLRSPC_YCBCR2
Definition grok.h:101
struct _grk_color grk_color
ICC profile, palette, channel definition.
GRK_API int32_t GRK_CALLCONV grk_plugin_init_batch_decompress(const char *input_dir, const char *output_dir, grk_decompress_parameters *decompress_parameters, grk_plugin_decompress_callback callback)
Initialize batch decompress with plugin.
Definition grok.cpp:950
struct _grk_synthesis grk_synthesis
struct _grk_decompress_params grk_decompress_parameters
Decompression parameters.
_GRK_CHANNEL_TYPE
Definition grok.h:362
@ GRK_CHANNEL_TYPE_OPACITY
Definition grok.h:364
@ GRK_CHANNEL_TYPE_PREMULTIPLIED_OPACITY
Definition grok.h:365
@ GRK_CHANNEL_TYPE_COLOUR
Definition grok.h:363
@ GRK_CHANNEL_TYPE_UNSPECIFIED
Definition grok.h:366
_GRK_RATE_CONTROL_ALGORITHM
Rate control algorithms.
Definition grok.h:276
@ GRK_RATE_CONTROL_PCRD_OPT
Definition grok.h:278
@ GRK_RATE_CONTROL_BISECT
Definition grok.h:277
GRK_API bool GRK_CALLCONV grk_decompress_update(grk_decompress_parameters *params, grk_object *codec)
Update decompressor.
Definition grok.cpp:618
GRK_API int32_t GRK_CALLCONV grk_plugin_batch_compress(grk_plugin_compress_batch_info info)
Batch compress with plugin.
Definition grok.cpp:853
struct _grk_channel_definition grk_channel_definition
Channel definition.
int(* GROK_INIT_DECOMPRESSORS)(grk_header_info *header_info, grk_image *image)
Plugin init decompressors.
Definition grok.h:1668
struct _grk_plugin_band grk_plugin_band
Plugin band.
_GRK_CODEC_FORMAT
Supported JPEG 2000 formats.
Definition grok.h:305
@ GRK_CODEC_J2K
unknown format
Definition grok.h:307
@ GRK_CODEC_MJ2
JPEG 2000 JP2 file format.
Definition grok.h:309
@ GRK_CODEC_JP2
JPEG 2000 code-stream.
Definition grok.h:308
@ GRK_CODEC_UNK
Definition grok.h:306
struct _grk_plugin_tile grk_plugin_tile
Plugin tile.
#define GRK_CALLCONV
Definition grok.h:47
GRK_API uint64_t GRK_CALLCONV grk_compress(grk_object *codec, grk_plugin_tile *tile)
Compress an image into a JPEG 2000 code stream using plugin.
Definition grok.cpp:633
void(* grk_stream_free_user_data_fn)(void *user_data)
Free user data callback.
Definition grok.h:597
#define GRK_NUM_ASOC_BOXES_SUPPORTED
maximum Grok supported number of asoc boxes
Definition grok.h:128
_GRK_PROG_ORDER
Progression order.
Definition grok.h:65
@ GRK_RPCL
resolution-layer-component-precinct order
Definition grok.h:69
@ GRK_CPRL
precinct-component-resolution-layer order
Definition grok.h:71
@ GRK_RLCP
layer-resolution-component-precinct order
Definition grok.h:68
@ GRK_PROG_UNKNOWN
Definition grok.h:66
@ GRK_LRCP
unknown progression order
Definition grok.h:67
@ GRK_NUM_PROGRESSION_ORDERS
component-precinct-resolution-layer order
Definition grok.h:72
@ GRK_PCRL
resolution-precinct-component-layer order
Definition grok.h:70
size_t(* grk_stream_write_fn)(const uint8_t *buffer, size_t numBytes, void *user_data)
Write stream callback.
Definition grok.h:580
GRK_API void GRK_CALLCONV grk_plugin_wait_for_batch_complete(void)
Wait for batch job to complete.
Definition grok.cpp:871
struct _grk_plugin_pass grk_plugin_pass
Plugin pass.
enum _GRK_CHANNEL_ASSOC GRK_CHANNEL_ASSOC
Channel association.
GRK_API grk_object *GRK_CALLCONV grk_compress_init(grk_stream_params *stream_params, grk_cparameters *parameters, grk_image *image)
Initialize compression process.
Definition grok.cpp:559
struct _grk_header_info grk_header_info
JPEG 2000 header info.
int32_t(* grk_plugin_decompress_callback)(grk_plugin_decompress_callback_info *info)
Plugin decompress callback.
Definition grok.h:1704
_GRK_TILE_CACHE_STRATEGY
Grok tile cache strategy.
Definition grok.h:632
@ GRK_TILE_CACHE_ALL
Definition grok.h:635
@ GRK_TILE_CACHE_IMAGE
Definition grok.h:634
@ GRK_TILE_CACHE_NONE
Definition grok.h:633
struct _grk_plugin_resolution grk_plugin_resolution
Plugin resolution.
struct _grk_plugin_code_block grk_plugin_code_block
Plugin code block.
GRK_API grk_image *GRK_CALLCONV grk_decompress_get_composited_image(grk_object *codec)
Get decompressed composite image.
Definition grok.cpp:500
Association box info.
Definition grok.h:407
const char * label
Definition grok.h:409
uint8_t * xml
Definition grok.h:410
uint32_t level
Definition grok.h:408
uint32_t xml_len
Definition grok.h:411
Channel definition.
Definition grok.h:398
uint16_t num_channel_descriptions
Definition grok.h:400
grk_channel_description * descriptions
Definition grok.h:399
Channel definition: channel index, type, association.
Definition grok.h:388
uint16_t typ
Definition grok.h:390
uint16_t asoc
Definition grok.h:391
uint16_t channel
Definition grok.h:389
ICC profile, palette, channel definition.
Definition grok.h:763
grk_channel_definition * channel_definition
Definition grok.h:767
char * icc_profile_name
Definition grok.h:766
uint32_t icc_profile_len
Definition grok.h:765
uint8_t * icc_profile_buf
Definition grok.h:764
grk_palette_data * palette
Definition grok.h:768
bool has_colour_specification_box
Definition grok.h:769
Component mappings: component index, mapping type, palette column.
Definition grok.h:334
uint16_t component
Definition grok.h:335
uint8_t palette_column
Definition grok.h:337
uint8_t mapping_type
Definition grok.h:336
Compression parameters.
Definition grok.h:1116
uint32_t cblockw_init
initial code block width (default to 64)
Definition grok.h:1154
uint8_t numgbits
Definition grok.h:1144
grk_progression progression[GRK_MAXRLVLS]
progressions
Definition grok.h:1148
char outfile[GRK_PATH_LEN]
output file name
Definition grok.h:1176
GRK_PROG_ORDER prog_order
progression order (default is LRCP)
Definition grok.h:1146
uint16_t comment_len[GRK_NUM_COMMENTS_SUPPORTED]
Definition grok.h:1138
uint32_t repeats
Definition grok.h:1233
uint32_t prch_init[GRK_MAXRLVLS]
initial precinct height
Definition grok.h:1172
bool verbose
Definition grok.h:1236
uint32_t image_offset_x0
subimage compressing: origin image offset in x direction
Definition grok.h:1178
uint64_t max_cs_size
Maximum size (in bytes) for the whole code stream.
Definition grok.h:1205
grk_raw_cparameters raw_cp
Definition grok.h:1189
uint8_t numresolution
number of resolutions
Definition grok.h:1152
uint32_t image_offset_y0
subimage compressing: origin image offset in y direction
Definition grok.h:1180
GRK_SUPPORTED_FILE_FMT decod_format
input file format
Definition grok.h:1186
uint32_t cblockh_init
initial code block height (default to 64)
Definition grok.h:1156
uint32_t roi_shift
region of interest: upshift value
Definition grok.h:1166
bool shared_memory_interface
Definition grok.h:1237
uint8_t subsampling_dy
subsampling value for dy
Definition grok.h:1184
uint32_t prcw_init[GRK_MAXRLVLS]
initial precinct width
Definition grok.h:1170
bool tile_size_on
Definition grok.h:1117
grk_synthesis synth_
Definition grok.h:1238
uint32_t t_height
YTsiz.
Definition grok.h:1125
bool write_capture_resolution_from_file
Definition grok.h:1217
uint32_t res_spec
Definition grok.h:1168
uint64_t max_comp_size
Maximum size (in bytes) for each component.
Definition grok.h:1210
uint32_t num_threads
Definition grok.h:1229
uint8_t mct
MCT (multiple component transform)
Definition grok.h:1195
uint16_t numlayers
number of layers
Definition grok.h:1127
GRK_SUPPORTED_FILE_FMT cod_format
output file format
Definition grok.h:1188
double capture_resolution_from_file[2]
Definition grok.h:1218
bool irreversible
1 : use the irreversible DWT 9-7, 0 : use lossless compression (default)
Definition grok.h:1161
uint32_t t_width
XTsiz.
Definition grok.h:1123
bool write_display_resolution
Definition grok.h:1223
uint8_t cblk_sty
code block style
Definition grok.h:1158
uint8_t csty
csty : coding style
Definition grok.h:1142
uint8_t new_tile_part_progression_divider
new tile part progression divider
Definition grok.h:1193
bool is_binary_comment[GRK_NUM_COMMENTS_SUPPORTED]
Definition grok.h:1139
uint16_t rsiz
RSIZ value To be used to combine GRK_PROFILE_*, GRK_EXTENSION_* and (sub)levels values.
Definition grok.h:1213
char infile[GRK_PATH_LEN]
input file name
Definition grok.h:1174
double layer_distortion[GRK_MAX_LAYERS]
layer PSNR values
Definition grok.h:1136
GRK_RATE_CONTROL_ALGORITHM rate_control_algorithm
Definition grok.h:1228
uint32_t kernel_build_options
Definition grok.h:1232
bool write_plt
Definition grok.h:1234
void * mct_data
Naive implementation of MCT restricted to a single reversible array based compressing without offset ...
Definition grok.h:1198
uint32_t tx0
XTOsiz.
Definition grok.h:1119
char * comment[GRK_NUM_COMMENTS_SUPPORTED]
Definition grok.h:1137
bool write_capture_resolution
Definition grok.h:1220
uint8_t subsampling_dx
subsampling value for dx
Definition grok.h:1182
int32_t device_id
Definition grok.h:1230
size_t num_comments
Definition grok.h:1140
uint16_t framerate
Definition grok.h:1214
bool allocation_by_rate_distortion
rate control allocation by rate/distortion curve
Definition grok.h:1129
bool allocation_by_quality
rate control allocation by fixed_PSNR quality
Definition grok.h:1134
bool write_tlm
Definition grok.h:1235
double display_resolution[2]
Definition grok.h:1224
int32_t roi_compno
region of interest: affected component in [0..3]; -1 indicates no ROI
Definition grok.h:1164
uint32_t ty0
YTOsiz.
Definition grok.h:1121
uint32_t duration
Definition grok.h:1231
bool apply_icc_
Definition grok.h:1226
double layer_rate[GRK_MAX_LAYERS]
layers rates expressed as compression ratios.
Definition grok.h:1132
bool enable_tile_part_generation
Tile part generation.
Definition grok.h:1191
uint32_t numpocs
number of progression order changes (POCs), default to 0
Definition grok.h:1150
double capture_resolution[2]
Definition grok.h:1221
Core decompression parameters.
Definition grok.h:642
grk_io_pixels_callback io_buffer_callback
Definition grok.h:662
GRK_TILE_CACHE_STRATEGY tile_cache_strategy
Definition grok.h:658
uint32_t random_access_flags_
Definition grok.h:660
uint16_t layers_to_decompress_
Set the maximum number of quality layers to decompress.
Definition grok.h:657
void * io_user_data
Definition grok.h:663
uint8_t reduce
Set the number of highest resolution levels to be discarded.
Definition grok.h:650
grk_io_register_reclaim_callback io_register_client_callback
Definition grok.h:664
Decompression parameters.
Definition grok.h:678
double dw_x0
Decompress window left boundary.
Definition grok.h:690
bool io_xml
Definition grok.h:709
grk_precision * precision
Definition grok.h:700
uint32_t compression_level
Definition grok.h:715
GRK_SUPPORTED_FILE_FMT cod_format
output file format
Definition grok.h:688
uint16_t tile_index
tile number of the decompressed tile
Definition grok.h:698
uint32_t num_precision
Definition grok.h:701
char infile[GRK_PATH_LEN]
input file name
Definition grok.h:682
double dw_x1
Decompress window right boundary.
Definition grok.h:692
bool force_rgb
Definition grok.h:703
uint32_t compression
Definition grok.h:710
uint32_t num_threads
Definition grok.h:722
int32_t device_id
Definition grok.h:718
uint32_t kernel_build_options
Definition grok.h:720
void * user_data
Definition grok.h:723
bool single_tile_decompress
Definition grok.h:699
uint32_t repeats
Definition grok.h:721
bool upsample
Definition grok.h:705
grk_decompress_core_params core
core library parameters
Definition grok.h:680
bool verbose_
Verbose mode.
Definition grok.h:717
double dw_y1
Decompress window bottom boundary.
Definition grok.h:696
uint32_t duration
Definition grok.h:719
double dw_y0
Decompress window up boundary.
Definition grok.h:694
bool split_pnm
Definition grok.h:707
GRK_CODEC_FORMAT decod_format
input file format
Definition grok.h:686
char outfile[GRK_PATH_LEN]
output file name
Definition grok.h:684
JPEG 2000 header info.
Definition grok.h:436
uint32_t cblockh_init
initial code block height, default to 64
Definition grok.h:455
uint16_t comment_len[GRK_NUM_COMMENTS_SUPPORTED]
Definition grok.h:503
bool upsample
Definition grok.h:442
uint32_t num_precision
Definition grok.h:444
uint32_t num_asocs
Definition grok.h:507
char * comment[GRK_NUM_COMMENTS_SUPPORTED]
Definition grok.h:502
uint32_t t_width
XTsiz.
Definition grok.h:486
bool is_binary_comment[GRK_NUM_COMMENTS_SUPPORTED]
Definition grok.h:504
uint32_t prch_init[GRK_MAXRLVLS]
initial precinct height
Definition grok.h:480
uint16_t t_grid_height
tile grid height
Definition grok.h:492
bool split_by_component
Definition grok.h:445
size_t xml_data_len
Definition grok.h:500
size_t num_comments
Definition grok.h:501
uint8_t csty
Definition grok.h:470
bool force_rgb
Definition grok.h:441
GRK_SUPPORTED_FILE_FMT decompress_fmt
Definition grok.h:440
grk_asoc asocs[GRK_NUM_ASOC_BOXES_SUPPORTED]
Definition grok.h:506
uint32_t tx0
XTOsiz.
Definition grok.h:482
uint32_t ty0
YTOsiz.
Definition grok.h:484
uint32_t cblockw_init
initial code block width, default to 64
Definition grok.h:453
uint16_t rsiz
RSIZ value To be used to combine GRK_PROFILE_*, GRK_EXTENSION_* and (sub)levels values.
Definition grok.h:462
grk_precision * precision
Definition grok.h:443
uint8_t mct
multi-component transform identifier
Definition grok.h:459
uint8_t numresolutions
number of resolutions
Definition grok.h:464
uint16_t t_grid_width
tile grid width
Definition grok.h:490
uint32_t t_height
YTsiz.
Definition grok.h:488
uint8_t cblk_sty
Definition grok.h:476
uint16_t num_layers_
number of layers
Definition grok.h:494
uint32_t prcw_init[GRK_MAXRLVLS]
initial precinct width
Definition grok.h:478
bool single_tile_decompress
Definition grok.h:446
uint8_t * xml_data
Definition grok.h:499
bool irreversible
1 : use the irreversible DWT 9-7, 0 : use lossless compression (default)
Definition grok.h:457
Image component.
Definition grok.h:730
uint32_t h
data height
Definition grok.h:740
uint8_t dy
YRsiz: vertical separation of a sample of component with respect to the reference grid.
Definition grok.h:746
GRK_CHANNEL_ASSOC association
Definition grok.h:752
GRK_CHANNEL_TYPE type
Definition grok.h:751
uint8_t dx
XRsiz: horizontal separation of a sample of component with respect to the reference grid.
Definition grok.h:743
bool sgnd
Definition grok.h:750
uint32_t w
data width
Definition grok.h:736
uint8_t prec
precision
Definition grok.h:748
uint16_t crg_x
Definition grok.h:754
int32_t * data
image component data
Definition grok.h:756
uint32_t x0
x component offset compared to the whole image
Definition grok.h:732
uint32_t y0
y component offset compared to the whole image
Definition grok.h:734
uint16_t crg_y
Definition grok.h:754
uint32_t stride
data stride
Definition grok.h:738
Image meta data: colour, IPTC and XMP.
Definition grok.h:776
grk_color color
Definition grok.h:778
uint8_t * xmp_buf
Definition grok.h:781
grk_object obj
Definition grok.h:777
size_t xmp_len
Definition grok.h:782
size_t iptc_len
Definition grok.h:780
uint8_t * iptc_buf
Definition grok.h:779
Grok image.
Definition grok.h:792
uint64_t packed_row_bytes
Definition grok.h:828
grk_precision * precision
Definition grok.h:816
bool has_capture_resolution
Definition grok.h:809
uint16_t numcomps
number of components in the image
Definition grok.h:805
bool force_rgb
Definition grok.h:814
uint32_t y0
YOsiz: vertical offset from the origin of the reference grid to the top side of the image area.
Definition grok.h:799
bool split_by_component
Definition grok.h:819
GRK_COLOR_SPACE color_space
Definition grok.h:806
uint32_t rows_per_task
Definition grok.h:827
uint32_t rows_per_strip
Definition grok.h:826
bool upsample
Definition grok.h:815
grk_image_comp * comps
Definition grok.h:830
uint8_t decompress_prec
Definition grok.h:823
bool has_multiple_tiles
Definition grok.h:818
grk_io_buf interleaved_data
Definition grok.h:825
GRK_COLOR_SPACE decompress_colour_space
Definition grok.h:824
uint32_t x0
XOsiz: horizontal offset from the origin of the reference grid to the left side of the image area.
Definition grok.h:796
grk_object obj
Definition grok.h:793
uint32_t num_precision
Definition grok.h:817
uint16_t decompress_num_comps
Definition grok.h:820
bool has_display_resolution
Definition grok.h:811
GRK_SUPPORTED_FILE_FMT decompress_fmt
Definition grok.h:813
double display_resolution[2]
Definition grok.h:812
uint32_t y1
Ysiz: height of the reference grid.
Definition grok.h:803
uint32_t decompress_width
Definition grok.h:821
uint32_t decompress_height
Definition grok.h:822
double capture_resolution[2]
Definition grok.h:810
grk_image_meta * meta
Definition grok.h:829
bool palette_applied_
Definition grok.h:807
uint32_t x1
Xsiz: width of the reference grid.
Definition grok.h:801
bool channel_definition_applied_
Definition grok.h:808
Grok IO buffer.
Definition grok.h:514
bool pooled_
Definition grok.h:519
size_t offset_
Definition grok.h:516
uint8_t * data_
Definition grok.h:515
size_t len_
Definition grok.h:517
size_t alloc_len_
Definition grok.h:518
uint32_t index_
Definition grok.h:520
Grok IO initialization.
Definition grok.h:527
uint32_t max_pooled_requests_
Definition grok.h:528
Logging handlers.
Definition grok.h:182
grk_msg_callback info_callback
Definition grok.h:183
void * warn_data
Definition grok.h:186
grk_msg_callback warn_callback
Definition grok.h:185
grk_msg_callback error_callback
Definition grok.h:187
void * error_data
Definition grok.h:188
void * info_data
Definition grok.h:184
Reference counted object.
Definition grok.h:197
void * wrapper
Definition grok.h:198
Palette data.
Definition grok.h:344
grk_component_mapping_comp * component_mapping
Definition grok.h:347
uint8_t num_channels
Definition grok.h:348
int32_t * lut
Definition grok.h:345
uint16_t num_entries
Definition grok.h:346
bool * channel_sign
Definition grok.h:349
uint8_t * channel_prec
Definition grok.h:350
Plugin band.
Definition grok.h:876
uint64_t num_precincts
Definition grok.h:878
float stepsize
Definition grok.h:880
uint8_t orientation
Definition grok.h:877
grk_plugin_precinct ** precincts
Definition grok.h:879
Plugin code block.
Definition grok.h:847
uint32_t y0
Definition grok.h:851
uint8_t num_passes
Definition grok.h:858
uint32_t compressed_data_length
Definition grok.h:856
grk_plugin_pass passes[GRK_MAX_PASSES]
Definition grok.h:859
unsigned int sorted_index
Definition grok.h:860
uint32_t x0
Definition grok.h:851
uint8_t * compressed_data
Definition grok.h:855
uint32_t y1
Definition grok.h:851
uint32_t x1
Definition grok.h:851
unsigned int * context_stream
Definition grok.h:852
uint32_t num_pix
Definition grok.h:854
uint8_t num_bit_planes
Definition grok.h:857
Plugin decompress callback info.
Definition grok.h:1675
uint32_t full_image_y0
Definition grok.h:1693
GRK_CODEC_FORMAT decod_format
Definition grok.h:1681
unsigned int error_code
Definition grok.h:1690
grk_decompress_parameters * decompressor_parameters
Definition grok.h:1686
grk_header_info header_info
Definition grok.h:1685
GRK_SUPPORTED_FILE_FMT cod_format
Definition grok.h:1683
grk_plugin_tile * tile
Definition grok.h:1689
size_t device_id
Definition grok.h:1676
uint32_t full_image_x0
Definition grok.h:1692
grk_object * codec
Definition grok.h:1684
void * user_data
Definition grok.h:1694
bool plugin_owns_image
Definition grok.h:1688
uint32_t decompress_flags
Definition grok.h:1691
const char * output_file_name
Definition grok.h:1679
GROK_INIT_DECOMPRESSORS init_decompressors_func
Definition grok.h:1677
const char * input_file_name
Definition grok.h:1678
grk_image * image
Definition grok.h:1687
Definition grok.h:1591
bool verbose
Definition grok.h:1593
const char * server
Definition grok.h:1595
int32_t device_id
Definition grok.h:1592
const char * license
Definition grok.h:1594
Plugin load info.
Definition grok.h:1540
const char * pluginPath
Definition grok.h:1541
bool verbose
Definition grok.h:1542
Plugin pass.
Definition grok.h:837
size_t rate
Definition grok.h:839
size_t length
Definition grok.h:840
double distortion_decrease
Definition grok.h:838
Plugin precinct.
Definition grok.h:867
uint64_t num_blocks
Definition grok.h:868
grk_plugin_code_block ** blocks
Definition grok.h:869
Plugin resolution.
Definition grok.h:887
uint8_t num_bands
Definition grok.h:889
uint8_t level
Definition grok.h:888
grk_plugin_band ** band
Definition grok.h:890
Plugin tile.
Definition grok.h:915
uint16_t num_components
Definition grok.h:917
uint32_t decompress_flags
Definition grok.h:916
grk_plugin_tile_component ** tile_components
Definition grok.h:918
Precision.
Definition grok.h:427
grk_precision_mode mode
Definition grok.h:429
uint8_t prec
Definition grok.h:428
Progression order change.
Definition grok.h:206
uint16_t comp_temp
Definition grok.h:239
uint32_t tx1
Definition grok.h:215
uint64_t prec_e
Definition grok.h:224
GRK_PROG_ORDER specified_compression_poc_prog
Definition grok.h:209
uint16_t comp_s
progression order bounds specified by POC
Definition grok.h:219
uint8_t res_temp
Definition grok.h:240
uint32_t tp_ty_e
Definition grok.h:236
uint32_t tp_tx_s
Definition grok.h:233
uint8_t res_s
Definition grok.h:221
uint32_t tx0
tile dimensions
Definition grok.h:213
uint8_t tp_res_s
Definition grok.h:229
uint64_t prec_temp
Definition grok.h:241
uint64_t tp_prec_e
Definition grok.h:231
uint32_t tp_ty_s
Definition grok.h:235
uint8_t tp_res_e
Definition grok.h:230
uint32_t ty0
Definition grok.h:214
uint32_t ty1
Definition grok.h:216
uint32_t ty0_temp
Definition grok.h:244
uint16_t comp_e
Definition grok.h:220
uint32_t dy
Definition grok.h:238
GRK_PROG_ORDER progression
Definition grok.h:207
uint32_t dx
Definition grok.h:237
uint16_t tp_comp_e
Definition grok.h:228
uint64_t prec_s
Definition grok.h:223
uint32_t tp_tx_e
Definition grok.h:234
uint32_t tx0_temp
Definition grok.h:243
uint16_t tp_lay_e
Definition grok.h:232
uint32_t tileno
Definition grok.h:210
uint16_t lay_temp
Definition grok.h:242
uint16_t tp_comp_s
Definition grok.h:227
uint16_t lay_e
Definition grok.h:226
uint16_t lay_s
Definition grok.h:225
char progression_str[5]
Definition grok.h:208
uint8_t res_e
Definition grok.h:222
RAW component compress parameters.
Definition grok.h:251
uint8_t dy
subsampling in X direction
Definition grok.h:253
uint8_t dx
Definition grok.h:252
RAW image compress parameters.
Definition grok.h:260
uint8_t prec
number of components of the raw image
Definition grok.h:264
uint32_t width
Definition grok.h:261
uint16_t numcomps
height of the raw image
Definition grok.h:263
grk_raw_comp_cparameters * comps
signed/unsigned raw image
Definition grok.h:266
bool sgnd
bit depth of the raw image
Definition grok.h:265
uint32_t height
width of the raw image
Definition grok.h:262
JPEG 2000 stream parameters.
Definition grok.h:608
uint8_t * buf
Definition grok.h:613
grk_stream_read_fn read_fn
Definition grok.h:619
size_t buf_len
Definition grok.h:614
grk_stream_free_user_data_fn free_user_data_fn
Definition grok.h:622
size_t double_buffer_len
Definition grok.h:625
size_t stream_len
Definition grok.h:624
grk_stream_write_fn write_fn
Definition grok.h:620
const char * file
Definition grok.h:610
grk_stream_seek_fn seek_fn
Definition grok.h:621
void * user_data
Definition grok.h:623
size_t buf_compressed_len
Definition grok.h:616
Definition grok.h:1103
uint8_t precision_
Definition grok.h:1107
uint32_t height_
Definition grok.h:1106
uint32_t width_
Definition grok.h:1105
uint16_t numcomps_
Definition grok.h:1108
bool do_synthesis_
Definition grok.h:1104
Plugin batch compress info.
Definition grok.h:1629
grk_cparameters * compress_parameters
Definition grok.h:1632
GRK_PLUGIN_COMPRESS_USER_CALLBACK callback
Definition grok.h:1633
const char * output_dir
Definition grok.h:1631
const char * input_dir
Definition grok.h:1630
bool transfer_exif_tags
Definition grok.h:1615
grk_cparameters * compressor_parameters
Definition grok.h:1610
grk_image * image
Definition grok.h:1611
grk_plugin_tile * tile
Definition grok.h:1612
const char * output_file_name
Definition grok.h:1609
grk_stream_params stream_params
Definition grok.h:1613
unsigned int error_code
Definition grok.h:1614
const char * input_file_name
Definition grok.h:1607
bool output_file_name_is_relative
Definition grok.h:1608
Plugin tile component.
Definition grok.h:897
uint8_t numresolutions
Definition grok.h:898
grk_plugin_resolution ** resolutions
Definition grok.h:899