Grok 12.0.1
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#ifdef __cplusplus
24extern "C" {
25#endif
26
27#include "grk_config.h"
28#include <stdint.h>
29#include <stdio.h>
30#include <stdbool.h>
31#include <limits.h>
32
33#ifdef _WIN32
34#define GRK_CALLCONV __stdcall
35#ifdef GRK_STATIC
36#define GRK_API
37#else
38#ifdef GRK_EXPORTS
39#define GRK_API __declspec(dllexport)
40#else
41#define GRK_API __declspec(dllimport)
42#endif
43#endif
44#else
45#define GRK_CALLCONV
46#ifdef GRK_STATIC
47#define GRK_API __attribute__((visibility("hidden")))
48#else
49#define GRK_API __attribute__((visibility("default")))
50#endif
51#endif
52
66
82
83/* JPEG 2000 standard colour space enumeration */
107
108#define GRK_NUM_COMMENTS_SUPPORTED 256
109#define GRK_NUM_ASOC_BOXES_SUPPORTED 256
110#define GRK_MAX_COMMENT_LENGTH (UINT16_MAX - 2)
111#define GRK_MAX_SUPPORTED_IMAGE_PRECISION 16 /* Maximum supported precision in library */
112
113/* BIBO analysis - extra bits needed to avoid overflow:
114
115 Lossless:
116 without colour transform: 4 extra bits
117 with colour transform: 5 extra bits
118
119 Lossy:
120
121 Need 1 extra bit
122
123 So, worst-case scenario is lossless with colour transform : need to add 5 more bits to prec to
124 avoid overflow
125 */
126#define BIBO_EXTRA_BITS 7
127
128#define GRK_MAX_PASSES (3 * (GRK_MAX_SUPPORTED_IMAGE_PRECISION + BIBO_EXTRA_BITS) - 2)
129
136typedef void (*grk_msg_callback)(const char* msg, void* client_data);
137
143typedef struct _grk_object
144{
145 void* wrapper;
147
152typedef struct _grk_progression
153{
157 uint32_t tileno;
159 uint32_t tx0;
160 uint32_t ty0;
161 uint32_t tx1;
162 uint32_t ty1;
164 uint16_t compS;
165 uint16_t compE;
166 uint8_t resS;
167 uint8_t resE;
168 uint64_t precS;
169 uint64_t precE;
170 uint16_t layS;
171 uint16_t layE;
172 uint16_t tpCompS;
173 uint16_t tpCompE;
174 uint8_t tpResS;
175 uint8_t tpResE;
176 uint64_t tpPrecE;
177 uint16_t tpLayE;
178 uint32_t tp_txS;
179 uint32_t tp_txE;
180 uint32_t tp_tyS;
181 uint32_t tp_tyE;
182 uint32_t dx;
183 uint32_t dy;
184 uint16_t comp_temp;
185 uint8_t res_temp;
186 uint64_t prec_temp;
187 uint16_t lay_temp;
188 uint32_t tx0_temp;
189 uint32_t ty0_temp;
191
199
210
221
240
250
251#define GRK_PATH_LEN 4096 /* Maximum allowed filename size */
252#define GRK_MAX_LAYERS 100 /* Maximum number of quality layers */
253
254/*
255 * Note: range for number of decomposition levels is 0-32
256 * So, accordingly, range for number of resolutions is 1-33
257 */
258#define GRK_J2K_MAX_DECOMP_LVLS \
259 32 /* Maximum number of decomposition levels allowed by standard \
260 */
261#define GRK_J2K_MAXRLVLS \
262 (GRK_J2K_MAX_DECOMP_LVLS + 1) /* Maximum number of resolution levels allowed by standard*/
263#define GRK_J2K_MAXBANDS \
264 (3 * GRK_J2K_MAXRLVLS - 2) /* Maximum number of sub-bands allowed by standard */
265
275typedef struct _grk_component_mapping_comp
281
285typedef struct _grk_palette_data
287 int32_t* lut;
288 uint16_t num_entries;
292 uint8_t* channel_prec;
294
295/***
296 * Channel Definition box structures and enums.
297 * When no Component mapping box is present, it is still possible to have
298 * a Channel defintion box, in which case channels are associated with components
299 * in the obvious way : channel `k` corresponds to component `k`.
300 * */
301
311
323
327typedef struct _grk_channel_description
329 uint16_t channel;
330 uint16_t typ;
331 uint16_t asoc;
333
337typedef struct _grk_channel_definition
342
346typedef struct _grk_color
354} grk_color;
355
359typedef struct _grk_asoc
361 uint32_t level; /* 0 for root level */
362 const char* label;
363 uint8_t* xml;
364 uint32_t xml_len;
365} grk_asoc;
366
370typedef enum _grk_precision_mode
375
379typedef struct _grk_precision
381 uint8_t prec;
384
388typedef struct _grk_header_info
389{
390 /******************************************
391 set by client only if decompressing to file
392 *******************************************/
397 uint32_t numPrecision;
400 /****************************************/
401
402 /*****************************************
403 populated by library after reading header
404 ******************************************/
406 uint32_t cblockw_init;
408 uint32_t cblockh_init;
410 bool irreversible;
412 uint32_t mct;
415 uint16_t rsiz;
417 uint32_t numresolutions;
418 /*********************************************************
419 coding style can be specified in main header COD segment,
420 tile header COD segment, and tile component COC segment.
421 *********************************************************/
422 /* !!!! assume that coding style does not vary across tile components */
423 uint8_t csty;
424 /*******************************************************************
425 code block style is specified in main header COD segment, and can
426 be overridden in a tile header. !!! Assume that style does
427 not vary across tiles !!!
428 *******************************************************************/
429 uint8_t cblk_sty;
431 uint32_t prcw_init[GRK_J2K_MAXRLVLS];
433 uint32_t prch_init[GRK_J2K_MAXRLVLS];
435 uint32_t tx0;
437 uint32_t ty0;
439 uint32_t t_width;
441 uint32_t t_height;
443 uint32_t t_grid_width;
445 uint32_t t_grid_height;
447 uint16_t max_layers_;
448 /*************************************
449 note: xml_data will remain valid
450 until codec is destroyed
451 ************************************/
452 uint8_t* xml_data;
460 uint32_t num_asocs;
463typedef struct _grk_io_buf
465 uint8_t* data_;
466 size_t offset_;
467 size_t len_;
468 size_t allocLen_;
470 uint32_t index_;
471} grk_io_buf;
473typedef struct _grk_io_init
475 uint32_t maxPooledRequests_;
479typedef bool (*grk_io_callback)(uint32_t threadId, grk_io_buf buffer, void* io_user_data);
480typedef void (*grk_io_register_reclaim_callback)(grk_io_init io_init,
481 grk_io_callback reclaim_callback,
482 void* io_user_data, void* reclaim_user_data);
483typedef bool (*grk_io_pixels_callback)(uint32_t threadId, grk_io_buf buffer, void* user_data);
484
493typedef size_t (*grk_stream_read_fn)(uint8_t* buffer, size_t numBytes, void* user_data);
494
503typedef size_t (*grk_stream_write_fn)(const uint8_t* buffer, size_t numBytes, void* user_data);
504
512typedef bool (*grk_stream_seek_fn)(uint64_t offset, void* user_data);
513
520typedef void (*grk_stream_free_user_data_fn)(void* user_data);
521
528typedef struct _grk_stream_params
529{
530 /* 1. File */
531 const char* file;
532
533 /* 2. Buffer */
534 uint8_t* buf;
535 size_t buf_len;
536 /* length of compressed stream (set by compressor, not client) */
537 size_t buf_compressed_len;
538
539 /* 3. Callback */
545 size_t stream_len; // must be set for read stream
546 size_t double_buffer_len; // optional - default value is 1024 * 1024
549typedef enum _GRK_TILE_CACHE_STRATEGY
551 GRK_TILE_CACHE_NONE, /* no tile caching */
552 GRK_TILE_CACHE_IMAGE /* cache final tile image */
554
558typedef struct _grk_decompress_core_params
559{
567 uint8_t reduce;
577 uint32_t randomAccessFlags_;
584#define GRK_DECOMPRESS_COMPRESSION_LEVEL_DEFAULT (UINT_MAX)
585
589typedef struct _grk_decompress_params
590{
594 char infile[GRK_PATH_LEN];
596 char outfile[GRK_PATH_LEN];
602 float dw_x0;
604 float dw_x1;
606 float dw_y0;
608 float dw_y1;
610 uint16_t tileIndex;
613 uint32_t numPrecision;
614 /* force output colorspace to RGB */
615 bool force_rgb;
616 /* upsample components according to their dx/dy values */
617 bool upsample;
618 /* split output components to different files */
619 bool split_pnm;
620 /* serialize XML metadata to disk */
621 bool io_xml;
622 uint32_t compression;
623 /*****************************************************
624 compression "quality". Meaning of "quality" depends
625 on file format we are writing to
626 *****************************************************/
627 uint32_t compressionLevel;
630 int32_t deviceId;
631 uint32_t duration; /* in seconds */
633 uint32_t repeats;
634 uint32_t numThreads;
637
641typedef struct _grk_image_comp
642{
644 uint32_t x0;
646 uint32_t y0;
648 uint32_t w;
650 uint32_t stride;
652 uint32_t h;
655 uint8_t dx;
658 uint8_t dy;
660 uint8_t prec;
661 /* signed */
662 bool sgnd;
665 /* component registration coordinates */
666 uint16_t Xcrg, Ycrg;
668 int32_t* data;
670
671/* Image meta data: colour, IPTC and XMP */
672typedef struct _grk_image_meta
676 uint8_t* iptc_buf;
677 size_t iptc_len;
678 uint8_t* xmp_buf;
679 size_t xmp_len;
722} grk_image;
723
724/*************************************************
725Structs to pass data between grok and plugin
726************************************************/
730typedef struct _grk_plugin_pass
732 double distortionDecrease; /* distortion decrease up to and including this pass */
733 size_t rate; /* rate up to and including this pass */
734 size_t length; /* stream length for this pass */
736
740typedef struct _grk_plugin_code_block
741{
742 /**************************
743 debug info
744 **************************/
745 uint32_t x0, y0, x1, y1;
746 unsigned int* contextStream;
747 /***************************/
748 uint32_t numPix;
752 size_t numPasses;
754 unsigned int sortedIndex;
756
760typedef struct _grk_plugin_precinct
762 uint64_t numBlocks;
765
769typedef struct _grk_plugin_band
771 uint8_t orientation;
772 uint64_t numPrecincts;
774 float stepsize;
776
780typedef struct _grk_plugin_resolution
782 size_t level;
783 size_t numBands;
786
790typedef struct grk_plugin_tile_component
796#define GRK_DECODE_HEADER (1 << 0)
797#define GRK_DECODE_T2 (1 << 1)
798#define GRK_DECODE_T1 (1 << 2)
799#define GRK_DECODE_POST_T1 (1 << 3)
800#define GRK_PLUGIN_DECODE_CLEAN (1 << 4)
801#define GRK_DECODE_ALL \
802 (GRK_PLUGIN_DECODE_CLEAN | GRK_DECODE_HEADER | GRK_DECODE_T2 | GRK_DECODE_T1 | \
803 GRK_DECODE_POST_T1)
804
808typedef struct _grk_plugin_tile
814
815/* opaque codec object */
816typedef grk_object grk_codec;
817
821GRK_API const char* GRK_CALLCONV grk_version(void);
822
829GRK_API void GRK_CALLCONV grk_initialize(const char* pluginPath, uint32_t numthreads, bool verbose);
830
835
840
841/*
842 * Decrement ref count
843 *
844 */
846
847GRK_API void GRK_CALLCONV grk_set_msg_handlers(grk_msg_callback info_callback, void* info_user_data,
848 grk_msg_callback warn_callback, void* warn_user_data,
849 grk_msg_callback error_callback,
850 void* error_user_data);
851
862GRK_API grk_image* GRK_CALLCONV grk_image_new(uint16_t numcmpts, grk_image_comp* cmptparms,
863 GRK_COLOR_SPACE clrspc, bool alloc_data);
864
866
878
885
892
902 grk_decompress_core_params* core_params);
903
914 grk_header_info* header_info);
915
925
934
948GRK_API bool GRK_CALLCONV grk_decompress_set_window(grk_codec* codec, float start_x, float start_y,
949 float end_x, float end_y);
950
960
969GRK_API bool GRK_CALLCONV grk_decompress_tile(grk_codec* codec, uint16_t tileIndex);
970
971/* COMPRESSION FUNCTIONS*/
972
976typedef struct _grk_cparameters
977{
979 bool tile_size_on;
981 uint32_t tx0;
983 uint32_t ty0;
985 uint32_t t_width;
987 uint32_t t_height;
989 uint16_t numlayers;
1002 size_t num_comments;
1004 uint8_t csty;
1005 /* number of guard bits */
1006 uint8_t numgbits;
1012 uint32_t numpocs;
1014 uint8_t numresolution;
1016 uint32_t cblockw_init;
1018 uint32_t cblockh_init;
1020 uint8_t cblk_sty;
1023 bool irreversible;
1026 int32_t roi_compno;
1028 uint32_t roi_shift;
1029 /* number of precinct size specifications */
1030 uint32_t res_spec;
1032 uint32_t prcw_init[GRK_J2K_MAXRLVLS];
1034 uint32_t prch_init[GRK_J2K_MAXRLVLS];
1036 char infile[GRK_PATH_LEN];
1038 char outfile[GRK_PATH_LEN];
1040 uint32_t image_offset_x0;
1042 uint32_t image_offset_y0;
1044 uint8_t subsampling_dx;
1046 uint8_t subsampling_dy;
1057 uint8_t mct;
1060 void* mct_data;
1067 uint64_t max_cs_size;
1072 uint64_t max_comp_size;
1075 uint16_t rsiz;
1076 uint16_t framerate;
1077
1078 /* set to true if input file stores capture resolution */
1083 double capture_resolution[2];
1086 double display_resolution[2];
1088 bool apply_icc_;
1091 uint32_t numThreads;
1092 int32_t deviceId;
1093 uint32_t duration; /* seconds */
1095 uint32_t repeats;
1101
1122
1131 grk_cparameters* parameters, grk_image* p_image);
1132
1142
1151GRK_API void GRK_CALLCONV grk_dump_codec(grk_codec* codec, uint32_t info_flag, FILE* output_stream);
1152
1163GRK_API bool GRK_CALLCONV grk_set_MCT(grk_cparameters* parameters, float* encodingMatrix,
1164 int32_t* dc_shift, uint32_t nbComp);
1166#define GRK_IMG_INFO 1 /* Basic image information provided to the user */
1167#define GRK_J2K_MH_INFO 2 /* Codestream information based only on the main header */
1168#define GRK_J2K_TH_INFO 4 /* Tile information based on the current tile header */
1169#define GRK_J2K_TCH_INFO 8
1170#define GRK_J2K_MH_IND 16
1171#define GRK_J2K_TH_IND 32
1172#define GRK_JP2_INFO 128
1173#define GRK_JP2_IND 256
1175#define GRK_CBLKSTY_LAZY 0x001
1176#define GRK_CBLKSTY_RESET 0x002
1177#define GRK_CBLKSTY_TERMALL 0x004
1178#define GRK_CBLKSTY_VSC 0x008
1179#define GRK_CBLKSTY_PTERM 0x010
1180#define GRK_CBLKSTY_SEGSYM 0x020
1181#define GRK_CBLKSTY_HT 0x040
1182#define GRK_CBLKSTY_HT_MIXED 0x080
1183#define GRK_CBLKSTY_HT_PHLD 0x100
1184#define GRK_JPH_RSIZ_FLAG 0x4000
1186/*****************************************************************************
1187 * JPEG 2000 Profiles, see Table A.10 from 15444-1 (updated in various AMDs)
1188 *
1189 * These values help choose the RSIZ value for the JPEG 2000 code stream.
1190 * The RSIZ value forces various compressing options, as detailed in Table A.10.
1191 * If GRK_PROFILE_PART2 is chosen, it must be combined with one or more extensions
1192 * described below.
1193 *
1194 * Example: rsiz = GRK_PROFILE_PART2 | GRK_EXTENSION_MCT;
1195 *
1196 * For broadcast profiles, the GRK_PROFILE_X value has to be combined with the target
1197 * level (3-0 LSB, value between 0 and 11):
1198 * Example: rsiz = GRK_PROFILE_BC_MULTI | 0x0005; //level equals 5
1199 *
1200 * For IMF profiles, the GRK_PROFILE_X value has to be combined with the target main-level
1201 * (3-0 LSB, value between 0 and 11) and sub-level (7-4 LSB, value between 0 and 9):
1202 * Example: rsiz = GRK_PROFILE_IMF_2K | 0x0040 | 0x0005; // main-level equals 5 and sub-level
1203 * equals 4
1204 *
1205 * */
1206#define GRK_PROFILE_NONE 0x0000
1207#define GRK_PROFILE_0 0x0001
1208#define GRK_PROFILE_1 0x0002
1209#define GRK_PROFILE_CINEMA_2K 0x0003
1210#define GRK_PROFILE_CINEMA_4K 0x0004
1211#define GRK_PROFILE_CINEMA_S2K 0x0005
1212#define GRK_PROFILE_CINEMA_S4K 0x0006
1213#define GRK_PROFILE_CINEMA_LTS \
1214 0x0007
1215#define GRK_PROFILE_BC_SINGLE 0x0100
1216#define GRK_PROFILE_BC_MULTI 0x0200
1217#define GRK_PROFILE_BC_MULTI_R \
1218 0x0300
1219#define GRK_PROFILE_BC_MASK 0x030F
1220#define GRK_PROFILE_IMF_2K 0x0400
1221#define GRK_PROFILE_IMF_4K 0x0500
1222#define GRK_PROFILE_IMF_8K 0x0600
1223#define GRK_PROFILE_IMF_2K_R \
1224 0x0700
1225#define GRK_PROFILE_IMF_4K_R \
1226 0x0800
1227#define GRK_PROFILE_IMF_8K_R \
1228 0x0900
1229#define GRK_PROFILE_MASK 0x0FFF
1230#define GRK_PROFILE_PART2 0x8000
1231#define GRK_PROFILE_PART2_EXTENSIONS_MASK 0x3FFF // Mask for Part-2 extension bits
1232
1236#define GRK_EXTENSION_NONE 0x0000
1237#define GRK_EXTENSION_MCT 0x0100
1238#define GRK_IS_PART2(v) ((v)&GRK_PROFILE_PART2)
1240#define GRK_IS_CINEMA(v) (((v) >= GRK_PROFILE_CINEMA_2K) && ((v) <= GRK_PROFILE_CINEMA_S4K))
1241#define GRK_IS_STORAGE(v) ((v) == GRK_PROFILE_CINEMA_LTS)
1242
1243/*
1244 *
1245 * *********************************************
1246 * Broadcast level (3-0 LSB) (15444-1 AMD4,AMD8)
1247 * *********************************************
1248 *
1249 * indicates maximum bit rate and sample rate for a code stream
1250 *
1251 * Note: Mbit/s == 10^6 bits/s; Msamples/s == 10^6 samples/s
1252 *
1253 * 0: no maximum rate
1254 * 1: 200 Mbits/s, 65 Msamples/s
1255 * 2: 200 Mbits/s, 130 Msamples/s
1256 * 3: 200 Mbits/s, 195 Msamples/s
1257 * 4: 400 Mbits/s, 260 Msamples/s
1258 * 5: 800Mbits/s, 520 Msamples/s
1259 * >= 6: 2^(level-6) * 1600 Mbits/s, 2^(level-6) * 1200 Msamples/s
1260 *
1261 * Note: level cannot be greater than 11
1262 *
1263 * ****************
1264 * Broadcast tiling
1265 * ****************
1266 *
1267 * Either single-tile or multi-tile. Multi-tile only permits
1268 * 1 or 4 tiles per frame, where multiple tiles have identical
1269 * sizes, and are configured in either 2x2 or 1x4 layout.
1270 *
1271 *************************************************************
1272 *
1273 * ***************************************
1274 * IMF main-level (3-0) LSB (15444-1 AMD8)
1275 * ***************************************
1276 *
1277 * main-level indicates maximum number of samples per second,
1278 * as listed above.
1279 *
1280 *
1281 * **************************************
1282 * IMF sub-level (7-4) LSB (15444-1 AMD8)
1283 * **************************************
1284 *
1285 * sub-level indicates maximum bit rate for a code stream:
1286 *
1287 * 0: no maximum rate
1288 * >0: 2^sub-level * 100 Mbits/second
1289 *
1290 * Note: sub-level cannot be greater than 9, and cannot be larger
1291 * then maximum of (main-level -2) and 1.
1292 *
1293 */
1295#define GRK_GET_IMF_OR_BROADCAST_PROFILE(v) \
1296 ((v)&0x0f00)
1298#define GRK_LEVEL_MAX 11U
1299#define GRK_GET_LEVEL(v) ((v)&0xf)
1301/******* BROADCAST **********************************************************/
1303#define GRK_IS_BROADCAST(v) \
1304 (((v) >= GRK_PROFILE_BC_SINGLE) && ((v) <= (GRK_PROFILE_BC_MULTI_R | 0x000b)) && \
1305 (((v)&0xf) <= 0xb))
1306
1307/* Maximum component sampling Rate (Mbits/sec) per level */
1308#define GRK_BROADCAST_LEVEL_1_MBITSSEC 200U
1309#define GRK_BROADCAST_LEVEL_2_MBITSSEC 200U
1310#define GRK_BROADCAST_LEVEL_3_MBITSSEC 200U
1311#define GRK_BROADCAST_LEVEL_4_MBITSSEC 400U
1312#define GRK_BROADCAST_LEVEL_5_MBITSSEC 800U
1313#define GRK_BROADCAST_LEVEL_6_MBITSSEC 1600U
1314#define GRK_BROADCAST_LEVEL_7_MBITSSEC 3200U
1315#define GRK_BROADCAST_LEVEL_8_MBITSSEC 6400U
1316#define GRK_BROADCAST_LEVEL_9_MBITSSEC 12800U
1317#define GRK_BROADCAST_LEVEL_10_MBITSSEC 25600U
1318#define GRK_BROADCAST_LEVEL_11_MBITSSEC 51200U
1320#define GRK_BROADCAST_LEVEL_1_MSAMPLESSEC 64U
1321#define GRK_BROADCAST_LEVEL_2_MSAMPLESSEC 130U
1322#define GRK_BROADCAST_LEVEL_3_MSAMPLESSEC 195U
1323#define GRK_BROADCAST_LEVEL_4_MSAMPLESSEC 260U
1324#define GRK_BROADCAST_LEVEL_5_MSAMPLESSEC 520U
1325#define GRK_BROADCAST_LEVEL_6_MSAMPLESSEC 1200U
1326#define GRK_BROADCAST_LEVEL_7_MSAMPLESSEC 2400U
1327#define GRK_BROADCAST_LEVEL_8_MSAMPLESSEC 4800U
1328#define GRK_BROADCAST_LEVEL_9_MSAMPLESSEC 9600U
1329#define GRK_BROADCAST_LEVEL_10_MSAMPLESSEC 19200U
1330#define GRK_BROADCAST_LEVEL_11_MSAMPLESSEC 38400U
1332/********IMF *****************************************************************/
1334#define GRK_IS_IMF(v) \
1335 (((v) >= GRK_PROFILE_IMF_2K) && ((v) <= (GRK_PROFILE_IMF_8K_R | 0x009b)) && \
1336 (((v)&0xf) <= 0xb) && (((v)&0xf0) <= 0x90))
1337
1338/* Maximum component sampling rate (MSamples/sec) per main level */
1339#define GRK_IMF_MAINLEVEL_1_MSAMPLESSEC 65U
1340#define GRK_IMF_MAINLEVEL_2_MSAMPLESSEC 130U
1341#define GRK_IMF_MAINLEVEL_3_MSAMPLESSEC 195U
1342#define GRK_IMF_MAINLEVEL_4_MSAMPLESSEC 260U
1343#define GRK_IMF_MAINLEVEL_5_MSAMPLESSEC 520U
1344#define GRK_IMF_MAINLEVEL_6_MSAMPLESSEC 1200U
1345#define GRK_IMF_MAINLEVEL_7_MSAMPLESSEC 2400U
1346#define GRK_IMF_MAINLEVEL_8_MSAMPLESSEC 4800U
1347#define GRK_IMF_MAINLEVEL_9_MSAMPLESSEC 9600U
1348#define GRK_IMF_MAINLEVEL_10_MSAMPLESSEC 19200U
1349#define GRK_IMF_MAINLEVEL_11_MSAMPLESSEC 38400U
1351#define GRK_IMF_SUBLEVEL_MAX 9U
1352#define GRK_GET_IMF_SUBLEVEL(v) (((v) >> 4) & 0xf)
1355#define GRK_IMF_SUBLEVEL_1_MBITSSEC 200U
1356#define GRK_IMF_SUBLEVEL_2_MBITSSEC 400U
1357#define GRK_IMF_SUBLEVEL_3_MBITSSEC 800U
1358#define GRK_IMF_SUBLEVEL_4_MBITSSEC 1600U
1359#define GRK_IMF_SUBLEVEL_5_MBITSSEC 3200U
1360#define GRK_IMF_SUBLEVEL_6_MBITSSEC 6400U
1361#define GRK_IMF_SUBLEVEL_7_MBITSSEC 12800U
1362#define GRK_IMF_SUBLEVEL_8_MBITSSEC 25600U
1363#define GRK_IMF_SUBLEVEL_9_MBITSSEC 51200U
1364/**********************************************************************************/
1365
1370#define GRK_CINEMA_DCI_MAX_BANDWIDTH 250000000
1372#define GRK_CINEMA_24_CS 1302083
1373#define GRK_CINEMA_24_COMP 1041666
1375#define GRK_CINEMA_48_CS 651041
1376#define GRK_CINEMA_48_COMP 520833
1378#define GRK_CINEMA_4K_DEFAULT_NUM_RESOLUTIONS 7
1379
1380/*
1381 *
1382 * CIE Lab #defines
1384#define GRK_CUSTOM_CIELAB_SPACE 0x0
1385#define GRK_DEFAULT_CIELAB_SPACE 0x44454600 /* 'DEF' */
1386#define GRK_CIE_DAY ((((uint32_t)'C') << 24) + (((uint32_t)'T') << 16))
1387#define GRK_CIE_D50 ((uint32_t)0x00443530)
1388#define GRK_CIE_D65 ((uint32_t)0x00443635)
1389#define GRK_CIE_D75 ((uint32_t)0x00443735)
1390#define GRK_CIE_SA ((uint32_t)0x00005341)
1391#define GRK_CIE_SC ((uint32_t)0x00005343)
1392#define GRK_CIE_F2 ((uint32_t)0x00004632)
1393#define GRK_CIE_F7 ((uint32_t)0x00004637)
1394#define GRK_CIE_F11 ((uint32_t)0x00463131)
1395
1399#define GRK_RANDOM_ACCESS_PLT 1 /* use PLT marker if present */
1400#define GRK_RANDOM_ACCESS_TLM 2 /* use TLM marker if present */
1401#define GRK_RANDOM_ACCESS_PLM 4 /* use PLM marker if present */
1402
1403/*************************************************************************************
1404 Plugin Interface
1405 *************************************************************************************/
1406
1407/*
1408 Plugin management
1409 */
1411typedef struct _grk_plugin_load_info
1413 const char* pluginPath;
1416
1423
1428
1429/* No debug is done on plugin. Production setting. */
1430#define GRK_PLUGIN_STATE_NO_DEBUG 0x0
1431
1432/*
1433 For compress debugging, the plugin first performs a T1 compress.
1434 Then:
1435 1. perform host DWT on plugin MCT data, and write to host image
1436 This way, both plugin and host start from same point
1437 (assume MCT is equivalent for both host and plugin)
1438 2. map plugin DWT data, compare with host DWT, and then write to plugin image
1439 At this point in the code, the plugin image holds plugin DWT data. And if no warnings are
1440 triggered, then we can safely say that host and plugin DWT data are identical.
1441 3. Perform host compress, skipping MCT and DWT (they have already been performed)
1442 4. during host compress, each context that is formed is compared against context stream from plugin
1443 5. rate control - synch with plugin code stream, and compare
1444 6. T2 and store to disk
1445 */
1447#define GRK_PLUGIN_STATE_DEBUG 0x1
1448#define GRK_PLUGIN_STATE_PRE_TR1 0x2
1449#define GRK_PLUGIN_STATE_DWT_QUANTIZATION 0x4
1450#define GRK_PLUGIN_STATE_MCT_ONLY 0x8
1451
1456
1457/*
1458 Plugin compressing
1460typedef struct _grk_plugin_init_info
1462 int32_t deviceId;
1464 const char* license;
1465 const char* server;
1467
1495
1502GRK_API int32_t GRK_CALLCONV grk_plugin_compress(grk_cparameters* compress_parameters,
1504
1517
1522
1527
1528/*
1529 Plugin decompression
1530 */
1532typedef int (*GROK_INIT_DECOMPRESSORS)(grk_header_info* header_info, grk_image* image);
1558
1567
1579 const char* input_dir, const char* output_dir, grk_decompress_parameters* decompress_parameters,
1581
1586
1591
1592#ifdef __cplusplus
1593}
1594#endif
struct _grk_plugin_init_info grk_plugin_init_info
enum _GRK_TILE_CACHE_STRATEGY GRK_TILE_CACHE_STRATEGY
_GRK_SUPPORTED_FILE_FMT
All supported file formats.
Definition grok.h:226
@ GRK_FMT_BMP
Definition grok.h:233
@ GRK_FMT_JP2
Definition grok.h:229
@ GRK_FMT_J2K
Definition grok.h:228
@ GRK_FMT_PNG
Definition grok.h:236
@ GRK_FMT_RAWL
Definition grok.h:237
@ GRK_FMT_UNK
Definition grok.h:227
@ GRK_FMT_TIF
Definition grok.h:234
@ GRK_FMT_JPG
Definition grok.h:238
@ GRK_FMT_PXM
Definition grok.h:230
@ GRK_FMT_RAW
Definition grok.h:235
@ GRK_FMT_PAM
Definition grok.h:232
@ GRK_FMT_PGX
Definition grok.h:231
struct _grk_cparameters grk_cparameters
Compress parameters.
GRK_API void GRK_CALLCONV grk_decompress_set_default_params(grk_decompress_parameters *parameters)
Initialize decompress parameters with default values.
Definition grok.cpp:335
struct _grk_progression grk_progression
Progression order change.
enum _grk_precision_mode grk_precision_mode
Precision mode.
struct _grk_image grk_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)
Definition grok.h:479
GRK_API bool GRK_CALLCONV grk_set_MCT(grk_cparameters *parameters, float *encodingMatrix, int32_t *dc_shift, uint32_t nbComp)
Set the MCT matrix to use.
Definition grok.cpp:435
GRK_API void GRK_CALLCONV grk_plugin_stop_batch_compress(void)
Stop batch compress.
Definition grok.cpp:853
GRK_API grk_object *GRK_CALLCONV grk_object_ref(grk_object *obj)
Increment ref count.
Definition grok.cpp:133
GRK_API void GRK_CALLCONV grk_plugin_stop_batch_decompress(void)
Stop batch decompress.
Definition grok.cpp:950
struct _grk_channel_description grk_channel_description
Channel definition: channel index, type, association.
#define GRK_NUM_COMMENTS_SUPPORTED
Definition grok.h:108
void(* grk_msg_callback)(const char *msg, void *client_data)
Logging callback.
Definition grok.h:136
enum _GRK_CHANNEL_TYPE GRK_CHANNEL_TYPE
bool(* grk_io_pixels_callback)(uint32_t threadId, grk_io_buf buffer, void *user_data)
Definition grok.h:482
struct _grk_stream_params grk_stream_params
JPEG 2000 stream parameters.
GRK_API void GRK_CALLCONV grk_plugin_cleanup(void)
Release plugin resources.
Definition grok.cpp:771
GRK_API bool GRK_CALLCONV grk_plugin_load(grk_plugin_load_info info)
Load plugin.
Definition grok.cpp:729
GRK_API uint64_t GRK_CALLCONV grk_compress(grk_codec *codec, grk_plugin_tile *tile)
Compress an image into a JPEG 2000 code stream using plugin.
Definition grok.cpp:601
struct grk_plugin_compress_batch_info grk_plugin_compress_batch_info
uint64_t(* GRK_PLUGIN_COMPRESS_USER_CALLBACK)(grk_plugin_compress_user_callback_info *info)
Definition grok.h:1485
GRK_API bool GRK_CALLCONV grk_decompress_detect_format(const char *fileName, GRK_CODEC_FORMAT *fmt)
Detect jpeg 2000 format from file Format is either GRK_FMT_J2K or GRK_FMT_JP2.
Definition grok.cpp:256
enum _GRK_CODEC_FORMAT GRK_CODEC_FORMAT
Supported JPEG 2000 formats.
enum _GRK_ENUM_COLOUR_SPACE GRK_ENUM_COLOUR_SPACE
GRK_API void GRK_CALLCONV grk_set_msg_handlers(grk_msg_callback info_callback, void *info_user_data, grk_msg_callback warn_callback, void *warn_user_data, grk_msg_callback error_callback, void *error_user_data)
Definition grok.cpp:151
GRK_API uint32_t GRK_CALLCONV grk_plugin_get_debug_state()
Get debug state of plugin.
Definition grok.cpp:756
struct _grk_precision grk_precision
Precision.
struct _grk_plugin_decompress_callback_info grk_plugin_decompress_callback_info
#define GRK_MAX_PASSES
Definition grok.h:128
GRK_API int32_t GRK_CALLCONV grk_plugin_batch_decompress(void)
Initiate batch decompress.
Definition grok.cpp:936
enum _GRK_PROG_ORDER GRK_PROG_ORDER
Progression order.
struct _grk_object grk_object
Grok ref-counted object.
struct _grk_raw_cparameters grk_raw_cparameters
RAW image compress parameters.
struct _grk_plugin_load_info grk_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:805
_GRK_CHANNEL_ASSOC
Definition grok.h:313
@ GRK_CHANNEL_ASSOC_COLOUR_1
Definition grok.h:316
@ GRK_CHANNEL_ASSOC_COLOUR_2
Definition grok.h:317
@ GRK_CHANNEL_ASSOC_COLOUR_3
Definition grok.h:318
@ GRK_CHANNEL_ASSOC_WHOLE_IMAGE
Definition grok.h:315
@ GRK_CHANNEL_ASSOC_UNASSOCIATED
Definition grok.h:319
enum _GRK_RATE_CONTROL_ALGORITHM GRK_RATE_CONTROL_ALGORITHM
Rate control algorithms GRK_RATE_CONTROL_BISECT: bisect with all truncation points GRK_RATE_CONTROL_P...
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:492
struct _grk_image_meta grk_image_meta
struct _grk_asoc grk_asoc
Association box info.
grk_object grk_codec
Definition grok.h:815
enum _GRK_SUPPORTED_FILE_FMT GRK_SUPPORTED_FILE_FMT
All supported file formats.
#define GRK_J2K_MAXRLVLS
Definition grok.h:260
struct _grk_palette_data grk_palette_data
Palette data.
#define GRK_API
Definition grok.h:49
GRK_API bool GRK_CALLCONV grk_decompress_read_header(grk_codec *codec, grk_header_info *header_info)
Decompress JPEG 2000 header.
Definition grok.cpp:375
struct _grk_component_mapping_comp grk_component_mapping_comp
Note: "component" refers to an image component as decompressed from the code stream,...
GRK_API grk_codec *GRK_CALLCONV grk_compress_init(grk_stream_params *stream_params, grk_cparameters *parameters, grk_image *p_image)
Set up the compressor parameters using the current image and user parameters.
Definition grok.cpp:533
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:127
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:142
#define GRK_MAX_LAYERS
Definition grok.h:252
GRK_API grk_codec *GRK_CALLCONV grk_decompress_init(grk_stream_params *stream_params, grk_decompress_core_params *core_params)
Initialize decompressor.
Definition grok.cpp:346
GRK_API void GRK_CALLCONV grk_compress_set_default_params(grk_cparameters *parameters)
Set compressing parameters to default values:
Definition grok.cpp:504
GRK_API void GRK_CALLCONV grk_set_default_stream_params(grk_stream_params *params)
Initialize stream parameters with default values.
Definition grok.cpp:274
struct _grk_plugin_precinct grk_plugin_precinct
Plugin precinct.
GRK_API void GRK_CALLCONV grk_initialize(const char *pluginPath, uint32_t numthreads, bool verbose)
Initialize library.
Definition grok.cpp:115
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:211
_GRK_COLOR_SPACE
Supported color spaces.
Definition grok.h:71
@ GRK_CLRSPC_SRGB
sRGB
Definition grok.h:73
@ GRK_CLRSPC_EYCC
extended YCC
Definition grok.h:76
@ GRK_CLRSPC_UNKNOWN
unknown
Definition grok.h:72
@ GRK_CLRSPC_SYCC
standard YCC (YUV)
Definition grok.h:75
@ GRK_CLRSPC_DEFAULT_CIE
default CIE LAB
Definition grok.h:78
@ GRK_CLRSPC_ICC
ICC profile.
Definition grok.h:80
@ GRK_CLRSPC_CMYK
CMYK.
Definition grok.h:77
@ GRK_CLRSPC_GRAY
grayscale
Definition grok.h:74
@ GRK_CLRSPC_CUSTOM_CIE
custom CIE LAB
Definition grok.h:79
struct _grk_io_buf grk_io_buf
_grk_precision_mode
Precision mode.
Definition grok.h:370
@ GRK_PREC_MODE_SCALE
Definition grok.h:372
@ GRK_PREC_MODE_CLIP
Definition grok.h:371
GRK_API grk_image_meta *GRK_CALLCONV grk_image_meta_new(void)
Definition grok.cpp:222
enum _GRK_COLOR_SPACE GRK_COLOR_SPACE
Supported color spaces.
#define GRK_PATH_LEN
Definition grok.h:251
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:216
GRK_API bool GRK_CALLCONV grk_decompress_set_window(grk_codec *codec, float start_x, float start_y, float end_x, float end_y)
Set the given area to be decompressed.
Definition grok.cpp:389
GRK_API int32_t GRK_CALLCONV grk_plugin_decompress(grk_decompress_parameters *decompress_parameters, grk_plugin_decompress_callback callback)
Decompress with plugin.
Definition grok.cpp:901
bool(* grk_stream_seek_fn)(uint64_t offset, void *user_data)
seek (absolute) callback
Definition grok.h:511
struct _grk_io_init grk_io_init
GRK_API grk_image *GRK_CALLCONV grk_decompress_get_composited_image(grk_codec *codec)
Get decompressed composite image.
Definition grok.cpp:474
GRK_API void GRK_CALLCONV grk_dump_codec(grk_codec *codec, uint32_t info_flag, FILE *output_stream)
Dump codec information to file.
Definition grok.cpp:424
_GRK_ENUM_COLOUR_SPACE
Definition grok.h:85
@ GRK_ENUM_CLRSPC_ESRGB
Definition grok.h:101
@ GRK_ENUM_CLRSPC_CMY
Definition grok.h:92
@ GRK_ENUM_CLRSPC_EYCC
Definition grok.h:105
@ GRK_ENUM_CLRSPC_CIEJAB
Definition grok.h:100
@ GRK_ENUM_CLRSPC_GRAY
Definition grok.h:98
@ GRK_ENUM_CLRSPC_CIE
Definition grok.h:95
@ GRK_ENUM_CLRSPC_UNKNOWN
Definition grok.h:86
@ GRK_ENUM_CLRSPC_YCBCR3
Definition grok.h:90
@ GRK_ENUM_CLRSPC_ROMMRGB
Definition grok.h:102
@ GRK_ENUM_CLRSPC_YPBPR60
Definition grok.h:103
@ GRK_ENUM_CLRSPC_SRGB
Definition grok.h:97
@ GRK_ENUM_CLRSPC_BILEVEL2
Definition grok.h:96
@ GRK_ENUM_CLRSPC_SYCC
Definition grok.h:99
@ GRK_ENUM_CLRSPC_PHOTO_YCC
Definition grok.h:91
@ GRK_ENUM_CLRSPC_YCBCR1
Definition grok.h:88
@ GRK_ENUM_CLRSPC_CMYK
Definition grok.h:93
@ GRK_ENUM_CLRSPC_YCCK
Definition grok.h:94
@ GRK_ENUM_CLRSPC_YPBPR50
Definition grok.h:104
@ GRK_ENUM_CLRSPC_BILEVEL1
Definition grok.h:87
@ GRK_ENUM_CLRSPC_YCBCR2
Definition grok.h:89
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.
Definition grok.cpp:918
struct _grk_decompress_params grk_decompress_parameters
Decompression parameters.
_GRK_CHANNEL_TYPE
Definition grok.h:303
@ GRK_CHANNEL_TYPE_OPACITY
Definition grok.h:305
@ GRK_CHANNEL_TYPE_PREMULTIPLIED_OPACITY
Definition grok.h:306
@ GRK_CHANNEL_TYPE_COLOUR
Definition grok.h:304
@ GRK_CHANNEL_TYPE_UNSPECIFIED
Definition grok.h:307
_GRK_RATE_CONTROL_ALGORITHM
Rate control algorithms GRK_RATE_CONTROL_BISECT: bisect with all truncation points GRK_RATE_CONTROL_P...
Definition grok.h:217
@ GRK_RATE_CONTROL_PCRD_OPT
Definition grok.h:219
@ GRK_RATE_CONTROL_BISECT
Definition grok.h:218
GRK_API bool GRK_CALLCONV grk_decompress_tile(grk_codec *codec, uint16_t tileIndex)
Decompress a specific tile.
Definition grok.cpp:413
GRK_API int32_t GRK_CALLCONV grk_plugin_batch_compress(grk_plugin_compress_batch_info info)
Batch compress with plugin.
Definition grok.cpp:821
struct _grk_channel_definition grk_channel_definition
Channel definitions and number of definitions.
int(* GROK_INIT_DECOMPRESSORS)(grk_header_info *header_info, grk_image *image)
Definition grok.h:1531
struct _grk_plugin_band grk_plugin_band
Plugin band.
_GRK_CODEC_FORMAT
Supported JPEG 2000 formats.
Definition grok.h:245
@ GRK_CODEC_J2K
JPEG 2000 code stream format.
Definition grok.h:247
@ GRK_CODEC_JP2
JP2 file format.
Definition grok.h:248
@ GRK_CODEC_UNK
unknown format
Definition grok.h:246
struct _grk_plugin_tile grk_plugin_tile
Plugin tile.
#define GRK_CALLCONV
Definition grok.h:45
GRK_API grk_image *GRK_CALLCONV grk_decompress_get_tile_image(grk_codec *codec, uint16_t tileIndex)
Get decompressed tile image.
Definition grok.cpp:464
void(* grk_stream_free_user_data_fn)(void *user_data)
free user data callback
Definition grok.h:519
#define GRK_NUM_ASOC_BOXES_SUPPORTED
Definition grok.h:109
_GRK_PROG_ORDER
Progression order.
Definition grok.h:57
@ GRK_RPCL
resolution-precinct-component-layer order
Definition grok.h:61
@ GRK_CPRL
component-precinct-resolution-layer order
Definition grok.h:63
@ GRK_RLCP
resolution-layer-component-precinct order
Definition grok.h:60
@ GRK_PROG_UNKNOWN
place-holder
Definition grok.h:58
@ GRK_LRCP
layer-resolution-component-precinct order
Definition grok.h:59
@ GRK_NUM_PROGRESSION_ORDERS
Definition grok.h:64
@ GRK_PCRL
precinct-component-resolution-layer order
Definition grok.h:62
size_t(* grk_stream_write_fn)(const uint8_t *buffer, size_t numBytes, void *user_data)
write stream callback
Definition grok.h:502
GRK_API void GRK_CALLCONV grk_plugin_wait_for_batch_complete(void)
Wait for batch job to complete.
Definition grok.cpp:839
struct _grk_plugin_pass grk_plugin_pass
Plugin pass.
enum _GRK_CHANNEL_ASSOC GRK_CHANNEL_ASSOC
bool(* grk_io_callback)(uint32_t threadId, grk_io_buf buffer, void *io_user_data)
Definition grok.h:478
struct _grk_header_info grk_header_info
Header info.
int32_t(* grk_plugin_decompress_callback)(grk_plugin_decompress_callback_info *info)
Definition grok.h:1556
_GRK_TILE_CACHE_STRATEGY
Definition grok.h:549
@ GRK_TILE_CACHE_IMAGE
Definition grok.h:551
@ GRK_TILE_CACHE_NONE
Definition grok.h:550
struct _grk_plugin_resolution grk_plugin_resolution
Plugin resolution.
struct _grk_plugin_code_block grk_plugin_code_block
Plugin code block.
GRK_API bool GRK_CALLCONV grk_plugin_init(grk_plugin_init_info initInfo)
Initialize plugin.
Definition grok.cpp:776
GRK_API bool GRK_CALLCONV grk_decompress(grk_codec *codec, grk_plugin_tile *tile)
Decompress image from a JPEG 2000 code stream.
Definition grok.cpp:401
Association box info.
Definition grok.h:359
const char * label
Definition grok.h:361
uint8_t * xml
Definition grok.h:362
uint32_t level
Definition grok.h:360
uint32_t xml_len
Definition grok.h:363
Channel definitions and number of definitions.
Definition grok.h:337
uint16_t num_channel_descriptions
Definition grok.h:339
grk_channel_description * descriptions
Definition grok.h:338
Channel definition: channel index, type, association.
Definition grok.h:327
uint16_t typ
Definition grok.h:329
uint16_t asoc
Definition grok.h:330
uint16_t channel
Definition grok.h:328
ICC profile, palette, channel definition.
Definition grok.h:346
grk_channel_definition * channel_definition
Definition grok.h:350
char * icc_profile_name
Definition grok.h:349
uint32_t icc_profile_len
Definition grok.h:348
uint8_t * icc_profile_buf
Definition grok.h:347
grk_palette_data * palette
Definition grok.h:351
bool has_colour_specification_box
Definition grok.h:352
Note: "component" refers to an image component as decompressed from the code stream,...
Definition grok.h:275
uint8_t palette_column
Definition grok.h:278
uint8_t mapping_type
Definition grok.h:277
uint16_t component_index
Definition grok.h:276
Compress parameters.
Definition grok.h:976
uint32_t cblockw_init
initial code block width (default to 64)
Definition grok.h:1015
uint8_t numgbits
Definition grok.h:1005
char outfile[GRK_PATH_LEN]
output file name
Definition grok.h:1037
bool allocationByRateDistoration
rate control allocation by rate/distortion curve
Definition grok.h:990
GRK_PROG_ORDER prog_order
progression order (default is LRCP)
Definition grok.h:1007
uint16_t comment_len[GRK_NUM_COMMENTS_SUPPORTED]
Definition grok.h:999
uint32_t repeats
Definition grok.h:1094
uint32_t numThreads
Definition grok.h:1090
bool verbose
Definition grok.h:1097
uint32_t image_offset_x0
subimage compressing: origin image offset in x direction
Definition grok.h:1039
uint64_t max_cs_size
Maximum size (in bytes) for the whole code stream.
Definition grok.h:1066
grk_raw_cparameters raw_cp
Definition grok.h:1050
uint8_t numresolution
number of resolutions
Definition grok.h:1013
uint32_t image_offset_y0
subimage compressing: origin image offset in y direction
Definition grok.h:1041
GRK_SUPPORTED_FILE_FMT decod_format
input file format
Definition grok.h:1047
uint8_t newTilePartProgressionDivider
new tile part progression divider
Definition grok.h:1054
uint32_t cblockh_init
initial code block height (default to 64)
Definition grok.h:1017
GRK_RATE_CONTROL_ALGORITHM rateControlAlgorithm
Definition grok.h:1089
bool allocationByQuality
rate control allocation by fixed_PSNR quality
Definition grok.h:995
uint32_t roi_shift
region of interest: upshift value
Definition grok.h:1027
uint8_t subsampling_dy
subsampling value for dy
Definition grok.h:1045
bool tile_size_on
size of tile: tile_size_on = false (not in argument) or = true (in argument)
Definition grok.h:978
uint32_t t_height
YTsiz.
Definition grok.h:986
bool write_capture_resolution_from_file
Definition grok.h:1078
bool enableTilePartGeneration
Tile part generation.
Definition grok.h:1052
uint32_t res_spec
Definition grok.h:1029
uint64_t max_comp_size
Maximum size (in bytes) for each component.
Definition grok.h:1071
bool sharedMemoryInterface
Definition grok.h:1098
uint8_t mct
MCT (multiple component transform)
Definition grok.h:1056
uint16_t numlayers
number of layers
Definition grok.h:988
int32_t deviceId
Definition grok.h:1091
GRK_SUPPORTED_FILE_FMT cod_format
output file format
Definition grok.h:1049
double capture_resolution_from_file[2]
Definition grok.h:1079
bool irreversible
1 : use the irreversible DWT 9-7, 0 : use lossless compression (default)
Definition grok.h:1022
uint32_t t_width
XTsiz.
Definition grok.h:984
bool write_display_resolution
Definition grok.h:1084
uint8_t cblk_sty
code block style
Definition grok.h:1019
uint8_t csty
csty : coding style
Definition grok.h:1003
uint32_t prch_init[GRK_J2K_MAXRLVLS]
initial precinct height
Definition grok.h:1033
bool is_binary_comment[GRK_NUM_COMMENTS_SUPPORTED]
Definition grok.h:1000
uint16_t rsiz
RSIZ value To be used to combine GRK_PROFILE_*, GRK_EXTENSION_* and (sub)levels values.
Definition grok.h:1074
char infile[GRK_PATH_LEN]
input file name
Definition grok.h:1035
double layer_distortion[GRK_MAX_LAYERS]
layer PSNR values
Definition grok.h:997
void * mct_data
Naive implementation of MCT restricted to a single reversible array based compressing without offset ...
Definition grok.h:1059
uint32_t tx0
XTOsiz.
Definition grok.h:980
char * comment[GRK_NUM_COMMENTS_SUPPORTED]
Definition grok.h:998
bool write_capture_resolution
Definition grok.h:1081
uint8_t subsampling_dx
subsampling value for dx
Definition grok.h:1043
bool writeTLM
Definition grok.h:1096
uint32_t prcw_init[GRK_J2K_MAXRLVLS]
initial precinct width
Definition grok.h:1031
size_t num_comments
Definition grok.h:1001
uint16_t framerate
Definition grok.h:1075
double display_resolution[2]
Definition grok.h:1085
bool writePLT
Definition grok.h:1095
int32_t roi_compno
region of interest: affected component in [0..3]; -1 indicates no ROI
Definition grok.h:1025
uint32_t ty0
YTOsiz.
Definition grok.h:982
uint32_t duration
Definition grok.h:1092
bool apply_icc_
Definition grok.h:1087
double layer_rate[GRK_MAX_LAYERS]
layers rates expressed as compression ratios.
Definition grok.h:993
uint32_t kernelBuildOptions
Definition grok.h:1093
grk_progression progression[GRK_J2K_MAXRLVLS]
progressions
Definition grok.h:1009
uint32_t numpocs
number of progression order changes (POCs), default to 0
Definition grok.h:1011
double capture_resolution[2]
Definition grok.h:1082
Core decompression parameters.
Definition grok.h:558
uint32_t randomAccessFlags_
Definition grok.h:576
grk_io_pixels_callback io_buffer_callback
Definition grok.h:578
GRK_TILE_CACHE_STRATEGY tileCacheStrategy
Definition grok.h:574
uint16_t layers_to_decompress_
Set the maximum number of quality layers to decompress.
Definition grok.h:573
void * io_user_data
Definition grok.h:579
uint8_t reduce
Set the number of highest resolution levels to be discarded.
Definition grok.h:566
grk_io_register_reclaim_callback io_register_client_callback
Definition grok.h:580
Decompression parameters.
Definition grok.h:589
float dw_y1
Decompress window bottom boundary.
Definition grok.h:607
int32_t deviceId
Definition grok.h:629
float dw_x0
Decompress window left boundary.
Definition grok.h:601
bool io_xml
Definition grok.h:620
grk_precision * precision
Definition grok.h:611
uint32_t numThreads
Definition grok.h:633
GRK_SUPPORTED_FILE_FMT cod_format
output file format
Definition grok.h:599
uint32_t kernelBuildOptions
Definition grok.h:631
char infile[GRK_PATH_LEN]
input file name
Definition grok.h:593
uint32_t compressionLevel
Definition grok.h:626
bool force_rgb
Definition grok.h:614
uint32_t compression
Definition grok.h:621
bool singleTileDecompress
Definition grok.h:610
void * user_data
Definition grok.h:634
uint32_t repeats
Definition grok.h:632
bool upsample
Definition grok.h:616
grk_decompress_core_params core
core library parameters
Definition grok.h:591
uint16_t tileIndex
tile number of the decompressed tile
Definition grok.h:609
bool verbose_
Verbose mode.
Definition grok.h:628
uint32_t duration
Definition grok.h:630
float dw_y0
Decompress window up boundary.
Definition grok.h:605
uint32_t numPrecision
Definition grok.h:612
bool split_pnm
Definition grok.h:618
GRK_CODEC_FORMAT decod_format
input file format
Definition grok.h:597
float dw_x1
Decompress window right boundary.
Definition grok.h:603
char outfile[GRK_PATH_LEN]
output file name
Definition grok.h:595
Header info.
Definition grok.h:388
uint32_t cblockh_init
initial code block height, default to 64
Definition grok.h:407
uint16_t comment_len[GRK_NUM_COMMENTS_SUPPORTED]
Definition grok.h:455
bool upsample
Definition grok.h:394
bool forceRGB
Definition grok.h:393
bool splitByComponent
Definition grok.h:397
uint32_t num_asocs
Definition grok.h:459
char * comment[GRK_NUM_COMMENTS_SUPPORTED]
Definition grok.h:454
uint32_t t_width
XTsiz.
Definition grok.h:438
uint32_t numresolutions
number of resolutions
Definition grok.h:416
uint32_t prch_init[GRK_J2K_MAXRLVLS]
initial precinct height
Definition grok.h:432
size_t xml_data_len
Definition grok.h:452
size_t num_comments
Definition grok.h:453
uint32_t numPrecision
Definition grok.h:396
uint8_t csty
Definition grok.h:422
uint32_t t_grid_height
tile grid height
Definition grok.h:444
grk_asoc asocs[GRK_NUM_ASOC_BOXES_SUPPORTED]
Definition grok.h:458
uint32_t tx0
XTOsiz.
Definition grok.h:434
uint16_t max_layers_
maximum number of layers
Definition grok.h:446
uint32_t ty0
YTOsiz.
Definition grok.h:436
uint32_t cblockw_init
initial code block width, default to 64
Definition grok.h:405
uint16_t rsiz
RSIZ value To be used to combine GRK_PROFILE_*, GRK_EXTENSION_* and (sub)levels values.
Definition grok.h:414
uint32_t mct
multi-component transform identifier
Definition grok.h:411
uint32_t prcw_init[GRK_J2K_MAXRLVLS]
initial precinct width
Definition grok.h:430
grk_precision * precision
Definition grok.h:395
uint32_t t_height
YTsiz.
Definition grok.h:440
GRK_SUPPORTED_FILE_FMT decompressFormat
Definition grok.h:392
uint8_t cblk_sty
Definition grok.h:428
uint32_t t_grid_width
tile grid width
Definition grok.h:442
uint8_t * xml_data
Definition grok.h:451
bool isBinaryComment[GRK_NUM_COMMENTS_SUPPORTED]
Definition grok.h:456
bool singleTileDecompress
Definition grok.h:398
bool irreversible
1 : use the irreversible DWT 9-7, 0 : use lossless compression (default)
Definition grok.h:409
Image component.
Definition grok.h:641
uint32_t h
data height
Definition grok.h:651
uint8_t dy
YRsiz: vertical separation of a sample of component with respect to the reference grid.
Definition grok.h:657
GRK_CHANNEL_ASSOC association
Definition grok.h:663
GRK_CHANNEL_TYPE type
Definition grok.h:662
uint8_t dx
XRsiz: horizontal separation of a sample of component with respect to the reference grid.
Definition grok.h:654
bool sgnd
Definition grok.h:661
uint32_t w
data width
Definition grok.h:647
uint8_t prec
precision
Definition grok.h:659
uint16_t Ycrg
Definition grok.h:665
int32_t * data
image component data
Definition grok.h:667
uint32_t x0
x component offset compared to the whole image
Definition grok.h:643
uint16_t Xcrg
Definition grok.h:665
uint32_t y0
y component offset compared to the whole image
Definition grok.h:645
uint32_t stride
data stride
Definition grok.h:649
Definition grok.h:672
grk_color color
Definition grok.h:674
uint8_t * xmp_buf
Definition grok.h:677
grk_object obj
Definition grok.h:673
size_t xmp_len
Definition grok.h:678
size_t iptc_len
Definition grok.h:676
uint8_t * iptc_buf
Definition grok.h:675
Definition grok.h:682
uint16_t decompressNumComps
Definition grok.h:710
grk_precision * precision
Definition grok.h:706
bool has_capture_resolution
Definition grok.h:699
uint16_t numcomps
number of components in the image
Definition grok.h:695
uint64_t packedRowBytes
Definition grok.h:718
uint32_t y0
YOsiz: vertical offset from the origin of the reference grid to the top side of the image area.
Definition grok.h:689
GRK_COLOR_SPACE color_space
Definition grok.h:696
bool upsample
Definition grok.h:705
grk_image_comp * comps
Definition grok.h:720
bool splitByComponent
Definition grok.h:709
bool channelDefinitionApplied_
Definition grok.h:698
uint32_t decompressWidth
Definition grok.h:711
grk_io_buf interleavedData
Definition grok.h:715
GRK_COLOR_SPACE decompressColourSpace
Definition grok.h:714
bool hasMultipleTiles
Definition grok.h:708
uint32_t x0
XOsiz: horizontal offset from the origin of the reference grid to the left side of the image area.
Definition grok.h:686
uint8_t decompressPrec
Definition grok.h:713
grk_object obj
Definition grok.h:683
uint32_t numPrecision
Definition grok.h:707
bool has_display_resolution
Definition grok.h:701
double display_resolution[2]
Definition grok.h:702
uint32_t y1
Ysiz: height of the reference grid.
Definition grok.h:693
double capture_resolution[2]
Definition grok.h:700
grk_image_meta * meta
Definition grok.h:719
uint32_t x1
Xsiz: width of the reference grid.
Definition grok.h:691
GRK_SUPPORTED_FILE_FMT decompressFormat
Definition grok.h:703
bool forceRGB
Definition grok.h:704
uint32_t rowsPerTask
Definition grok.h:717
uint32_t rowsPerStrip
Definition grok.h:716
uint32_t decompressHeight
Definition grok.h:712
bool paletteApplied_
Definition grok.h:697
Definition grok.h:463
bool pooled_
Definition grok.h:468
size_t offset_
Definition grok.h:465
size_t allocLen_
Definition grok.h:467
uint8_t * data_
Definition grok.h:464
size_t len_
Definition grok.h:466
uint32_t index_
Definition grok.h:469
Definition grok.h:473
uint32_t maxPooledRequests_
Definition grok.h:474
Grok ref-counted object.
Definition grok.h:144
void * wrapper
Definition grok.h:145
Palette data.
Definition grok.h:285
grk_component_mapping_comp * component_mapping
Definition grok.h:288
uint8_t num_channels
Definition grok.h:289
int32_t * lut
Definition grok.h:286
uint16_t num_entries
Definition grok.h:287
bool * channel_sign
Definition grok.h:290
uint8_t * channel_prec
Definition grok.h:291
Plugin band.
Definition grok.h:769
float stepsize
Definition grok.h:773
uint8_t orientation
Definition grok.h:770
uint64_t numPrecincts
Definition grok.h:771
grk_plugin_precinct ** precincts
Definition grok.h:772
Plugin code block.
Definition grok.h:740
uint8_t * compressedData
Definition grok.h:748
uint32_t y0
Definition grok.h:744
size_t numPasses
Definition grok.h:751
unsigned int sortedIndex
Definition grok.h:753
uint8_t numBitPlanes
Definition grok.h:750
grk_plugin_pass passes[GRK_MAX_PASSES]
Definition grok.h:752
uint32_t x0
Definition grok.h:744
unsigned int * contextStream
Definition grok.h:745
uint32_t y1
Definition grok.h:744
uint32_t numPix
Definition grok.h:747
uint32_t x1
Definition grok.h:744
uint32_t compressedDataLength
Definition grok.h:749
grk_codec * codec
Definition grok.h:1543
uint32_t full_image_y0
Definition grok.h:1552
GRK_CODEC_FORMAT decod_format
Definition grok.h:1540
unsigned int error_code
Definition grok.h:1549
grk_decompress_parameters * decompressor_parameters
Definition grok.h:1545
grk_header_info header_info
Definition grok.h:1544
GRK_SUPPORTED_FILE_FMT cod_format
Definition grok.h:1542
size_t deviceId
Definition grok.h:1535
grk_plugin_tile * tile
Definition grok.h:1548
uint32_t full_image_x0
Definition grok.h:1551
void * user_data
Definition grok.h:1553
bool plugin_owns_image
Definition grok.h:1547
uint32_t decompress_flags
Definition grok.h:1550
const char * output_file_name
Definition grok.h:1538
GROK_INIT_DECOMPRESSORS init_decompressors_func
Definition grok.h:1536
const char * input_file_name
Definition grok.h:1537
grk_image * image
Definition grok.h:1546
Definition grok.h:1460
bool verbose
Definition grok.h:1462
const char * server
Definition grok.h:1464
int32_t deviceId
Definition grok.h:1461
const char * license
Definition grok.h:1463
Definition grok.h:1411
const char * pluginPath
Definition grok.h:1412
bool verbose
Definition grok.h:1413
Plugin pass.
Definition grok.h:730
size_t rate
Definition grok.h:732
size_t length
Definition grok.h:733
double distortionDecrease
Definition grok.h:731
Plugin precinct.
Definition grok.h:760
grk_plugin_code_block ** blocks
Definition grok.h:762
uint64_t numBlocks
Definition grok.h:761
Plugin resolution.
Definition grok.h:780
size_t numBands
Definition grok.h:782
size_t level
Definition grok.h:781
grk_plugin_band ** band
Definition grok.h:783
Plugin tile.
Definition grok.h:808
uint32_t decompress_flags
Definition grok.h:809
grk_plugin_tile_component ** tileComponents
Definition grok.h:811
size_t numComponents
Definition grok.h:810
Precision.
Definition grok.h:379
grk_precision_mode mode
Definition grok.h:381
uint8_t prec
Definition grok.h:380
Progression order change.
Definition grok.h:153
uint16_t comp_temp
Definition grok.h:184
uint32_t tx1
Definition grok.h:161
uint32_t tp_txE
Definition grok.h:179
uint8_t res_temp
Definition grok.h:185
GRK_PROG_ORDER specifiedCompressionPocProg
Definition grok.h:156
uint32_t tx0
tile dimensions
Definition grok.h:159
uint16_t compE
Definition grok.h:165
uint8_t resS
Definition grok.h:166
uint64_t prec_temp
Definition grok.h:186
uint32_t tp_tyE
Definition grok.h:181
uint64_t precE
Definition grok.h:169
uint64_t precS
Definition grok.h:168
uint32_t ty0
Definition grok.h:160
uint32_t ty1
Definition grok.h:162
uint32_t ty0_temp
Definition grok.h:189
uint16_t tpCompE
Definition grok.h:173
uint32_t tp_tyS
Definition grok.h:180
uint32_t dy
Definition grok.h:183
GRK_PROG_ORDER progression
Definition grok.h:154
uint32_t dx
Definition grok.h:182
uint16_t layE
Definition grok.h:171
uint16_t layS
Definition grok.h:170
char progressionString[5]
Definition grok.h:155
uint8_t tpResE
Definition grok.h:175
uint32_t tx0_temp
Definition grok.h:188
uint32_t tileno
Definition grok.h:157
uint16_t lay_temp
Definition grok.h:187
uint16_t tpLayE
Definition grok.h:177
uint64_t tpPrecE
Definition grok.h:176
uint16_t tpCompS
Definition grok.h:172
uint16_t compS
progression order bounds specified by POC
Definition grok.h:164
uint32_t tp_txS
Definition grok.h:178
uint8_t resE
Definition grok.h:167
uint8_t tpResS
Definition grok.h:174
RAW component compress parameters.
Definition grok.h:194
uint8_t dy
subsampling in X direction
Definition grok.h:196
uint8_t dx
Definition grok.h:195
RAW image compress parameters.
Definition grok.h:202
uint8_t prec
number of components of the raw image
Definition grok.h:206
uint32_t width
Definition grok.h:203
uint16_t numcomps
height of the raw image
Definition grok.h:205
grk_raw_comp_cparameters * comps
signed/unsigned raw image
Definition grok.h:208
bool sgnd
bit depth of the raw image
Definition grok.h:207
uint32_t height
width of the raw image
Definition grok.h:204
JPEG 2000 stream parameters.
Definition grok.h:528
uint8_t * buf
Definition grok.h:533
grk_stream_read_fn read_fn
Definition grok.h:539
size_t buf_len
Definition grok.h:534
grk_stream_free_user_data_fn free_user_data_fn
Definition grok.h:542
size_t double_buffer_len
Definition grok.h:545
size_t stream_len
Definition grok.h:544
grk_stream_write_fn write_fn
Definition grok.h:540
const char * file
Definition grok.h:530
grk_stream_seek_fn seek_fn
Definition grok.h:541
void * user_data
Definition grok.h:543
size_t buf_compressed_len
Definition grok.h:536
Definition grok.h:1488
grk_cparameters * compress_parameters
Definition grok.h:1491
GRK_PLUGIN_COMPRESS_USER_CALLBACK callback
Definition grok.h:1492
const char * output_dir
Definition grok.h:1490
const char * input_dir
Definition grok.h:1489
bool outputFileNameIsRelative
Definition grok.h:1475
grk_cparameters * compressor_parameters
Definition grok.h:1477
grk_image * image
Definition grok.h:1478
grk_plugin_tile * tile
Definition grok.h:1479
const char * output_file_name
Definition grok.h:1476
bool transferExifTags
Definition grok.h:1482
grk_stream_params stream_params
Definition grok.h:1480
unsigned int error_code
Definition grok.h:1481
const char * input_file_name
Definition grok.h:1474
Plugin tile component.
Definition grok.h:790
grk_plugin_resolution ** resolutions
Definition grok.h:792
size_t numResolutions
Definition grok.h:791