Grok  9.7.5
grok.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2016-2022 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
24 extern "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 __GNUC__
34 #define GRK_DEPRECATED(func) func __attribute__((deprecated))
35 #elif defined(_MSC_VER)
36 #define GRK_DEPRECATED(func) __declspec(deprecated) func
37 #else
38 #pragma message("WARNING: You need to implement DEPRECATED for this compiler")
39 #define GRK_DEPRECATED(func) func
40 #endif
41 
42 #if defined(GRK_STATIC) || !defined(_WIN32)
43 #if defined(GRK_STATIC) /* static library uses "hidden" */
44 #define GRK_API __attribute__((visibility("hidden")))
45 #else
46 #define GRK_API __attribute__((visibility("default")))
47 #endif
48 #define GRK_CALLCONV
49 #else
50 #define GRK_CALLCONV __stdcall
51 #if defined(GRK_EXPORTS) || defined(DLL_EXPORT)
52 #define GRK_API __declspec(dllexport)
53 #else
54 #define GRK_API __declspec(dllimport)
55 #endif
56 #endif
57 
59 {
63 
65 {
74  GRK_RAW_FMT, /* MSB / Big Endian */
76  GRK_RAWL_FMT, /* LSB / Little Endian */
79 
80 #define GRK_PATH_LEN 4096 /* Maximum allowed filename size */
81 #define GRK_MAX_LAYERS 100
82 #define GRK_MAX_SUPPORTED_IMAGE_PRECISION 16 /* Maximum supported precision in library */
83 
84 /*
85  * Note: range for number of decomposition levels is 0-32
86  * So, accordingly, range for number of resolutions is 1-33
87  */
88 
89 #define GRK_J2K_MAX_DECOMP_LVLS \
90  32 /* Maximum number of decomposition levels allowed by standard \
91  */
92 #define GRK_J2K_MAXRLVLS \
93  (GRK_J2K_MAX_DECOMP_LVLS + 1) /* Maximum number of resolution levels allowed by standard*/
94 #define GRK_J2K_MAXBANDS \
95  (3 * GRK_J2K_MAXRLVLS - 2) /* Maximum number of sub-bands allowed by standard */
96 
97 #define GRK_IMG_INFO 1 /* Basic image information provided to the user */
98 #define GRK_J2K_MH_INFO 2 /* Codestream information based only on the main header */
99 #define GRK_J2K_TH_INFO 4 /* Tile information based on the current tile header */
100 #define GRK_J2K_TCH_INFO 8
101 #define GRK_J2K_MH_IND 16
102 #define GRK_J2K_TH_IND 32
103 #define GRK_JP2_INFO 128
104 #define GRK_JP2_IND 256
106 #define GRK_CBLKSTY_LAZY 0x001
107 #define GRK_CBLKSTY_RESET 0x002
108 #define GRK_CBLKSTY_TERMALL 0x004
109 #define GRK_CBLKSTY_VSC 0x008
110 #define GRK_CBLKSTY_PTERM 0x010
111 #define GRK_CBLKSTY_SEGSYM 0x020
112 #define GRK_CBLKSTY_HT 0x040
113 #define GRK_CBLKSTY_HT_MIXED 0x080
114 #define GRK_CBLKSTY_HT_PHLD 0x100
115 #define GRK_JPH_RSIZ_FLAG 0x4000
137 #define GRK_PROFILE_NONE 0x0000
138 #define GRK_PROFILE_0 0x0001
139 #define GRK_PROFILE_1 0x0002
140 #define GRK_PROFILE_CINEMA_2K 0x0003
141 #define GRK_PROFILE_CINEMA_4K 0x0004
142 #define GRK_PROFILE_CINEMA_S2K 0x0005
143 #define GRK_PROFILE_CINEMA_S4K 0x0006
144 #define GRK_PROFILE_CINEMA_LTS \
145  0x0007
146 #define GRK_PROFILE_BC_SINGLE 0x0100
147 #define GRK_PROFILE_BC_MULTI 0x0200
148 #define GRK_PROFILE_BC_MULTI_R \
149  0x0300
150 #define GRK_PROFILE_BC_MASK 0x030F
151 #define GRK_PROFILE_IMF_2K 0x0400
152 #define GRK_PROFILE_IMF_4K 0x0500
153 #define GRK_PROFILE_IMF_8K 0x0600
154 #define GRK_PROFILE_IMF_2K_R \
155  0x0700
156 #define GRK_PROFILE_IMF_4K_R \
157  0x0800
158 #define GRK_PROFILE_IMF_8K_R \
159  0x0900
160 #define GRK_PROFILE_MASK 0x0FFF
161 #define GRK_PROFILE_PART2 0x8000
162 #define GRK_PROFILE_PART2_EXTENSIONS_MASK 0x3FFF // Mask for Part-2 extension bits
163 
167 #define GRK_EXTENSION_NONE 0x0000
168 #define GRK_EXTENSION_MCT 0x0100
169 #define GRK_IS_PART2(v) ((v)&GRK_PROFILE_PART2)
170 
171 #define GRK_IS_CINEMA(v) (((v) >= GRK_PROFILE_CINEMA_2K) && ((v) <= GRK_PROFILE_CINEMA_S4K))
172 #define GRK_IS_STORAGE(v) ((v) == GRK_PROFILE_CINEMA_LTS)
173 
174 /*
175  *
176  * *********************************************
177  * Broadcast level (3-0 LSB) (15444-1 AMD4,AMD8)
178  * *********************************************
179  *
180  * indicates maximum bit rate and sample rate for a code stream
181  *
182  * Note: Mbit/s == 10^6 bits/s; Msamples/s == 10^6 samples/s
183  *
184  * 0: no maximum rate
185  * 1: 200 Mbits/s, 65 Msamples/s
186  * 2: 200 Mbits/s, 130 Msamples/s
187  * 3: 200 Mbits/s, 195 Msamples/s
188  * 4: 400 Mbits/s, 260 Msamples/s
189  * 5: 800Mbits/s, 520 Msamples/s
190  * >= 6: 2^(level-6) * 1600 Mbits/s, 2^(level-6) * 1200 Msamples/s
191  *
192  * Note: level cannot be greater than 11
193  *
194  * ****************
195  * Broadcast tiling
196  * ****************
197  *
198  * Either single-tile or multi-tile. Multi-tile only permits
199  * 1 or 4 tiles per frame, where multiple tiles have identical
200  * sizes, and are configured in either 2x2 or 1x4 layout.
201  *
202  *************************************************************
203  *
204  * ***************************************
205  * IMF main-level (3-0) LSB (15444-1 AMD8)
206  * ***************************************
207  *
208  * main-level indicates maximum number of samples per second,
209  * as listed above.
210  *
211  *
212  * **************************************
213  * IMF sub-level (7-4) LSB (15444-1 AMD8)
214  * **************************************
215  *
216  * sub-level indicates maximum bit rate for a code stream:
217  *
218  * 0: no maximum rate
219  * >0: 2^sub-level * 100 Mbits/second
220  *
221  * Note: sub-level cannot be greater than 9, and cannot be larger
222  * then maximum of (main-level -2) and 1.
223  *
224  */
225 
226 #define GRK_GET_IMF_OR_BROADCAST_PROFILE(v) \
227  ((v)&0x0f00)
229 #define GRK_LEVEL_MAX 11U
230 #define GRK_GET_LEVEL(v) ((v)&0xf)
232 /******* BROADCAST **********/
233 
234 #define GRK_IS_BROADCAST(v) \
235  (((v) >= GRK_PROFILE_BC_SINGLE) && ((v) <= (GRK_PROFILE_BC_MULTI_R | 0x000b)) && \
236  (((v)&0xf) <= 0xb))
237 
238 /* Maximum component sampling Rate (Mbits/sec) per level */
239 #define GRK_BROADCAST_LEVEL_1_MBITSSEC 200U
240 #define GRK_BROADCAST_LEVEL_2_MBITSSEC 200U
241 #define GRK_BROADCAST_LEVEL_3_MBITSSEC 200U
242 #define GRK_BROADCAST_LEVEL_4_MBITSSEC 400U
243 #define GRK_BROADCAST_LEVEL_5_MBITSSEC 800U
244 #define GRK_BROADCAST_LEVEL_6_MBITSSEC 1600U
245 #define GRK_BROADCAST_LEVEL_7_MBITSSEC 3200U
246 #define GRK_BROADCAST_LEVEL_8_MBITSSEC 6400U
247 #define GRK_BROADCAST_LEVEL_9_MBITSSEC 12800U
248 #define GRK_BROADCAST_LEVEL_10_MBITSSEC 25600U
249 #define GRK_BROADCAST_LEVEL_11_MBITSSEC 51200U
251 #define GRK_BROADCAST_LEVEL_1_MSAMPLESSEC 64U
252 #define GRK_BROADCAST_LEVEL_2_MSAMPLESSEC 130U
253 #define GRK_BROADCAST_LEVEL_3_MSAMPLESSEC 195U
254 #define GRK_BROADCAST_LEVEL_4_MSAMPLESSEC 260U
255 #define GRK_BROADCAST_LEVEL_5_MSAMPLESSEC 520U
256 #define GRK_BROADCAST_LEVEL_6_MSAMPLESSEC 1200U
257 #define GRK_BROADCAST_LEVEL_7_MSAMPLESSEC 2400U
258 #define GRK_BROADCAST_LEVEL_8_MSAMPLESSEC 4800U
259 #define GRK_BROADCAST_LEVEL_9_MSAMPLESSEC 9600U
260 #define GRK_BROADCAST_LEVEL_10_MSAMPLESSEC 19200U
261 #define GRK_BROADCAST_LEVEL_11_MSAMPLESSEC 38400U
263 /********IMF ***********************************************************************/
264 
265 #define GRK_IS_IMF(v) \
266  (((v) >= GRK_PROFILE_IMF_2K) && ((v) <= (GRK_PROFILE_IMF_8K_R | 0x009b)) && \
267  (((v)&0xf) <= 0xb) && (((v)&0xf0) <= 0x90))
268 
269 /* Maximum component sampling rate (MSamples/sec) per main level */
270 #define GRK_IMF_MAINLEVEL_1_MSAMPLESSEC 65U
271 #define GRK_IMF_MAINLEVEL_2_MSAMPLESSEC 130U
272 #define GRK_IMF_MAINLEVEL_3_MSAMPLESSEC 195U
273 #define GRK_IMF_MAINLEVEL_4_MSAMPLESSEC 260U
274 #define GRK_IMF_MAINLEVEL_5_MSAMPLESSEC 520U
275 #define GRK_IMF_MAINLEVEL_6_MSAMPLESSEC 1200U
276 #define GRK_IMF_MAINLEVEL_7_MSAMPLESSEC 2400U
277 #define GRK_IMF_MAINLEVEL_8_MSAMPLESSEC 4800U
278 #define GRK_IMF_MAINLEVEL_9_MSAMPLESSEC 9600U
279 #define GRK_IMF_MAINLEVEL_10_MSAMPLESSEC 19200U
280 #define GRK_IMF_MAINLEVEL_11_MSAMPLESSEC 38400U
282 #define GRK_IMF_SUBLEVEL_MAX 9U
283 #define GRK_GET_IMF_SUBLEVEL(v) (((v) >> 4) & 0xf)
286 #define GRK_IMF_SUBLEVEL_1_MBITSSEC 200U
287 #define GRK_IMF_SUBLEVEL_2_MBITSSEC 400U
288 #define GRK_IMF_SUBLEVEL_3_MBITSSEC 800U
289 #define GRK_IMF_SUBLEVEL_4_MBITSSEC 1600U
290 #define GRK_IMF_SUBLEVEL_5_MBITSSEC 3200U
291 #define GRK_IMF_SUBLEVEL_6_MBITSSEC 6400U
292 #define GRK_IMF_SUBLEVEL_7_MBITSSEC 12800U
293 #define GRK_IMF_SUBLEVEL_8_MBITSSEC 25600U
294 #define GRK_IMF_SUBLEVEL_9_MBITSSEC 51200U
295 /**********************************************************************************/
296 
300 #define GRK_CINEMA_24_CS 1302083U
301 #define GRK_CINEMA_48_CS 651041U
302 #define GRK_CINEMA_24_COMP 1041666U
303 #define GRK_CINEMA_48_COMP 520833U
308 typedef enum _GRK_PROG_ORDER
309 {
311  GRK_LRCP = 0,
312  GRK_RLCP = 1,
313  GRK_RPCL = 2,
314  GRK_PCRL = 3,
315  GRK_CPRL = 4,
318 
319 /*
320  *
321  * CIE Lab #defines
322  */
323 #define GRK_CUSTOM_CIELAB_SPACE 0x0
324 #define GRK_DEFAULT_CIELAB_SPACE 0x44454600 /* 'DEF' */
325 #define GRK_CIE_DAY ((((uint32_t)'C') << 24) + (((uint32_t)'T') << 16))
326 #define GRK_CIE_D50 ((uint32_t)0x00443530)
327 #define GRK_CIE_D65 ((uint32_t)0x00443635)
328 #define GRK_CIE_D75 ((uint32_t)0x00443735)
329 #define GRK_CIE_SA ((uint32_t)0x00005341)
330 #define GRK_CIE_SC ((uint32_t)0x00005343)
331 #define GRK_CIE_F2 ((uint32_t)0x00004632)
332 #define GRK_CIE_F7 ((uint32_t)0x00004637)
333 #define GRK_CIE_F11 ((uint32_t)0x00463131)
334 
338 typedef enum _GRK_COLOR_SPACE
339 {
350 
351 /* JPEG 2000 standard colour space enumeration */
352 typedef enum GRK_ENUM_COLOUR_SPACE
353 {
359  GRK_ENUM_CLRSPC_PHOTO_YCC = 9, /* Kodak PhotoYCC */
360  GRK_ENUM_CLRSPC_CMY = 11, /* cyan, magenta, yellow */
361  GRK_ENUM_CLRSPC_CMYK = 12, /* cyan, magenta, yellow, black */
367  GRK_ENUM_CLRSPC_SYCC = 18, /* standard YCC */
370  GRK_ENUM_CLRSPC_ROMMRGB = 21, /* Reference Output Medium Metric RGB */
373  GRK_ENUM_CLRSPC_EYCC = 24, /* extended YCC */
375 
379 typedef enum _GRK_CODEC_FORMAT
380 {
382  GRK_CODEC_J2K = 0,
385 
386 #define GRK_NUM_COMMENTS_SUPPORTED 256
387 #define GRK_NUM_ASOC_BOXES_SUPPORTED 256
388 #define GRK_MAX_COMMENT_LENGTH (UINT16_MAX - 2)
389 
390 typedef enum GRK_TILE_CACHE_STRATEGY
391 {
392  GRK_TILE_CACHE_NONE, /* no tile caching */
393  GRK_TILE_CACHE_IMAGE /* cache final tile image */
395 
396 #define GRK_RANDOM_ACCESS_PLT 1 /* use PLT marker if present */
397 #define GRK_RANDOM_ACCESS_TLM 2 /* use TLM marker if present */
398 #define GRK_RANDOM_ACCESS_PLM 4 /* use PLM marker if present */
399 
406 typedef void (*grk_msg_callback)(const char* msg, void* client_data);
407 
413 typedef struct _grk_object
414 {
415  void* wrapper;
416 } grk_object;
417 
422 typedef struct _grk_progression
423 {
427  uint32_t tileno;
429  uint32_t tx0;
430  uint32_t ty0;
431  uint32_t tx1;
432  uint32_t ty1;
434  uint16_t compS;
435  uint16_t compE;
436  uint8_t resS;
437  uint8_t resE;
438  uint64_t precS;
439  uint64_t precE;
440  uint16_t layS;
441  uint16_t layE;
442  uint16_t tpCompS;
443  uint16_t tpCompE;
444  uint8_t tpResS;
445  uint8_t tpResE;
446  uint64_t tpPrecE;
447  uint16_t tpLayE;
448  uint32_t tp_txS;
449  uint32_t tp_txE;
450  uint32_t tp_tyS;
451  uint32_t tp_tyE;
452  uint32_t dx;
453  uint32_t dy;
454  uint16_t comp_temp;
455  uint8_t res_temp;
456  uint64_t prec_temp;
457  uint16_t lay_temp;
458  uint32_t tx0_temp;
459  uint32_t ty0_temp;
461 
463 typedef struct _grk_raw_comp_cparameters
464 {
465  uint8_t dx;
466  uint8_t dy;
469 
471 typedef struct _grk_raw_cparameters
472 {
473  uint32_t width;
474  uint32_t height;
475  uint16_t numcomps;
476  uint8_t prec;
477  bool sgnd;
480 
484 typedef struct _grk_cparameters
485 {
487  bool tile_size_on;
489  uint32_t tx0;
491  uint32_t ty0;
493  uint32_t t_width;
495  uint32_t t_height;
497  uint16_t numlayers;
502  double layer_rate[GRK_MAX_LAYERS];
504  bool allocationByQuality;
510  size_t num_comments;
512  uint8_t csty;
513  /* number of guard bits */
514  uint8_t numgbits;
520  uint32_t numpocs;
522  uint8_t numresolution;
524  uint32_t cblockw_init;
526  uint32_t cblockh_init;
528  uint8_t cblk_sty;
529  /* flag for high throughput */
530  bool isHT;
533  bool irreversible;
536  int32_t roi_compno;
538  uint32_t roi_shift;
539  /* number of precinct size specifications */
540  uint32_t res_spec;
542  uint32_t prcw_init[GRK_J2K_MAXRLVLS];
544  uint32_t prch_init[GRK_J2K_MAXRLVLS];
546  char infile[GRK_PATH_LEN];
548  char outfile[GRK_PATH_LEN];
550  uint32_t image_offset_x0;
552  uint32_t image_offset_y0;
554  uint8_t subsampling_dx;
556  uint8_t subsampling_dy;
566  uint32_t max_comp_size;
572  uint8_t mct;
575  void* mct_data;
582  uint64_t max_cs_size;
585  uint16_t rsiz;
586  uint16_t framerate;
587 
588  /* set to true if input file stores capture resolution */
591 
593  double capture_resolution[2];
594 
596  double display_resolution[2];
597 
598  /**************************************************
599  0: bisect with all truncation points
600  1: bisect with only feasible truncation points
601  *************************************************/
603  uint32_t numThreads;
604  int32_t deviceId;
605  uint32_t duration; /* seconds */
607  uint32_t repeats;
608  bool writePLT;
609  bool writeTLM;
610  bool verbose;
612 
622 typedef struct _grk_component_mapping_comp
623 {
624  uint16_t component_index;
625  uint8_t mapping_type;
626  uint8_t palette_column;
628 
632 typedef struct _grk_palette_data
633 {
634  int32_t* lut;
635  uint16_t num_entries;
637  uint8_t num_channels;
639  uint8_t* channel_prec;
641 
642 /***
643  * Channel Definition box structures and enums.
644  * When no Component mapping box is present, it is still possible to have
645  * a Channel defintion box, in which case channels are associated with components
646  * in the obvious way : channel `k` corresponds to component `k`.
647  * */
648 
649 /* channel type */
650 typedef enum GRK_CHANNEL_TYPE_
651 {
652 
657 
659 
660 /* channel association */
661 typedef enum GRK_CHANNEL_ASSOC_
662 {
663 
669 
671 
675 typedef struct _grk_channel_description
676 {
677  uint16_t channel;
678  uint16_t typ;
679  uint16_t asoc;
681 
685 typedef struct _grk_channel_definition
686 {
690 
694 typedef struct _grk_color
695 {
696  uint8_t* icc_profile_buf;
697  uint32_t icc_profile_len;
702 } grk_color;
703 
704 typedef struct _grk_asoc
705 {
706  uint32_t level; /* 0 for root level */
707  const char* label;
708  uint8_t* xml;
709  uint32_t xml_len;
710 } grk_asoc;
711 
715 typedef enum grk_prec_mode
716 {
720 
724 typedef struct _grk_prec
725 {
726  uint8_t prec;
728 } grk_precision;
729 
733 typedef struct _grk_header_info
734 {
735  /***************************************
736  set by client
737  ***************************************/
739  bool forceRGB;
740  bool upsample;
742  uint32_t numPrecision;
745  /****************************************/
746 
747  /*****************************************
748  populated by codec after reading header
749  ******************************************/
751  uint32_t cblockw_init;
753  uint32_t cblockh_init;
755  bool irreversible;
757  uint32_t mct;
760  uint16_t rsiz;
762  uint32_t numresolutions;
763  /*********************************************************
764  coding style can be specified in main header COD segment,
765  tile header COD segment, and tile component COC segment.
766  *********************************************************/
767  /* !!!! assume that coding style does not vary across tile components */
768  uint8_t csty;
769  /*******************************************************************
770  code block style is specified in main header COD segment, and can
771  be overridden in a tile header. !!! Assume that style does
772  not vary across tiles !!!
773  *******************************************************************/
774  uint8_t cblk_sty;
776  uint32_t prcw_init[GRK_J2K_MAXRLVLS];
778  uint32_t prch_init[GRK_J2K_MAXRLVLS];
780  uint32_t tx0;
782  uint32_t ty0;
784  uint32_t t_width;
786  uint32_t t_height;
788  uint32_t t_grid_width;
790  uint32_t t_grid_height;
792  uint16_t numlayers;
793  /*************************************
794  note: xml_data will remain valid
795  until codec is destroyed
796  ************************************/
797  uint8_t* xml_data;
798  size_t xml_data_len;
799  size_t num_comments;
803 
805  uint32_t num_asocs;
807 
808 typedef struct _grk_serialize_buf
809 {
810  uint8_t* data;
811  uint64_t offset;
812  uint64_t dataLen;
813  uint64_t allocLen;
814  bool pooled;
815  uint32_t index;
817 
818 typedef bool (*grk_serialize_callback)(grk_serialize_buf buffer, void* serialize_user_data);
819 typedef void (*grk_serialize_register_client_callback)(grk_serialize_callback reclaim_callback,
820  void* serialize_user_data,
821  void* reclaim_user_data);
822 
823 typedef bool (*grk_serialize_pixels_callback)(grk_serialize_buf buffer, void* user_data);
824 
828 typedef struct _grk_decompress_core_params
829 {
837  uint8_t reduce;
844  uint16_t max_layers;
846 
847  uint32_t randomAccessFlags_;
848 
853 
854 #define GRK_DECOMPRESS_COMPRESSION_LEVEL_DEFAULT (UINT_MAX)
855 
859 typedef struct _grk_decompress_params
860 {
864  char infile[GRK_PATH_LEN];
866  char outfile[GRK_PATH_LEN];
872  float dw_x0;
874  float dw_x1;
876  float dw_y0;
878  float dw_y1;
880  uint16_t tileIndex;
883  uint32_t numPrecision;
884  /* force output colorspace to RGB */
885  bool force_rgb;
886  /* upsample components according to their dx/dy values */
887  bool upsample;
888  /* split output components to different files */
889  bool split_pnm;
890  /* serialize XML metadata to disk */
892  uint32_t compression;
893  /*****************************************************
894  compression "quality". Meaning of "quality" depends
895  on file format we are writing to
896  *****************************************************/
897  uint32_t compressionLevel;
899  bool verbose_;
900  int32_t deviceId;
901  uint32_t duration; /* in seconds */
903  uint32_t repeats;
904  uint32_t numThreads;
906 
907 /*
908  * read callback
909  *
910  */
911 typedef size_t (*grk_stream_read_fn)(void* buffer, size_t numBytes, void* user_data);
912 
913 /*
914  * write callback
915  */
916 typedef size_t (*grk_stream_write_fn)(void* buffer, size_t numBytes, void* user_data);
917 /*
918  * (absolute) seek callback
919  */
920 typedef bool (*grk_stream_seek_fn)(uint64_t numBytes, void* user_data);
921 /*
922  * free user data callback
923  */
924 typedef void (*grk_stream_free_user_data_fn)(void* user_data);
925 
929 typedef struct _grk_image_comp
930 {
932  uint32_t x0;
934  uint32_t y0;
936  uint32_t w;
938  uint32_t stride;
940  uint32_t h;
943  uint8_t dx;
946  uint8_t dy;
948  uint8_t prec;
949  /* signed */
950  bool sgnd;
953  /* component registration coordinates */
954  uint16_t Xcrg, Ycrg;
956  int32_t* data;
958 
959 /* Image meta data: colour, IPTC and XMP */
960 typedef struct _grk_image_meta
961 {
964  uint8_t* iptc_buf;
965  size_t iptc_len;
966  uint8_t* xmp_buf;
967  size_t xmp_len;
969 
970 typedef struct _grk_image
971 {
972  grk_object obj;
975  uint32_t x0;
978  uint32_t y0;
980  uint32_t x1;
982  uint32_t y1;
984  uint16_t numcomps;
993  bool forceRGB;
994  bool upsample;
996  uint32_t numPrecision;
997  bool multiTile;
1005  uint32_t rowsPerStrip;
1006  uint64_t packedRowBytes;
1009 } grk_image;
1010 
1011 /*************************************************
1012 Structs to pass data between grok and plugin
1013 ************************************************/
1017 typedef struct _grk_plugin_pass
1019  double distortionDecrease; /* distortion decrease up to and including this pass */
1020  size_t rate; /* rate up to and including this pass */
1021  size_t length; /* stream length for this pass */
1022 } grk_plugin_pass;
1023 
1027 typedef struct _grk_plugin_code_block
1028 {
1029  /**************************
1030  debug info
1031  **************************/
1032  uint32_t x0, y0, x1, y1;
1033  unsigned int* contextStream;
1034  /***************************/
1035  uint32_t numPix;
1036  uint8_t* compressedData;
1038  uint8_t numBitPlanes;
1039  size_t numPasses;
1041  unsigned int sortedIndex;
1043 
1047 typedef struct _grk_plugin_precinct
1049  uint64_t numBlocks;
1052 
1056 typedef struct _grk_plugin_band
1058  uint8_t orientation;
1059  uint64_t numPrecincts;
1061  float stepsize;
1062 } grk_plugin_band;
1063 
1067 typedef struct _grk_plugin_resolution
1069  size_t level;
1070  size_t numBands;
1073 
1077 typedef struct grk_plugin_tile_component
1083 #define GRK_DECODE_HEADER (1 << 0)
1084 #define GRK_DECODE_T2 (1 << 1)
1085 #define GRK_DECODE_T1 (1 << 2)
1086 #define GRK_DECODE_POST_T1 (1 << 3)
1087 #define GRK_PLUGIN_DECODE_CLEAN (1 << 4)
1088 #define GRK_DECODE_ALL \
1089  (GRK_PLUGIN_DECODE_CLEAN | GRK_DECODE_HEADER | GRK_DECODE_T2 | GRK_DECODE_T1 | \
1090  GRK_DECODE_POST_T1)
1091 
1095 typedef struct _grk_plugin_tile
1100 } grk_plugin_tile;
1101 
1102 /* opaque codec object */
1103 typedef grk_object grk_codec;
1104 
1105 /* opaque stream object */
1106 typedef grk_object grk_stream;
1107 
1111 GRK_API const char* GRK_CALLCONV grk_version(void);
1112 
1119 GRK_API bool GRK_CALLCONV grk_initialize(const char* pluginPath, uint32_t numthreads);
1120 
1125 
1130 
1131 /*
1132  * Decrement ref count
1133  *
1134  */
1136 
1137 GRK_API void GRK_CALLCONV grk_set_msg_handlers(grk_msg_callback info_callback, void* info_user_data,
1138  grk_msg_callback warn_callback, void* warn_user_data,
1139  grk_msg_callback error_callback,
1140  void* error_user_data);
1141 
1151 GRK_API grk_image* GRK_CALLCONV grk_image_new(uint16_t numcmpts, grk_image_comp* cmptparms,
1152  GRK_COLOR_SPACE clrspc);
1153 
1155 
1162 
1173 GRK_API grk_stream* GRK_CALLCONV grk_stream_new(size_t buffer_size, bool is_input);
1174 
1182 
1190  grk_stream_write_fn func);
1191 
1199 
1207 GRK_API void GRK_CALLCONV grk_stream_set_user_data(grk_stream* stream, void* data,
1209 
1216 GRK_API void GRK_CALLCONV grk_stream_set_user_data_length(grk_stream* stream, uint64_t data_length);
1217 
1225  size_t buffer_size,
1226  bool is_read_stream);
1227 
1236 GRK_API grk_stream* GRK_CALLCONV grk_stream_create_mem_stream(uint8_t* buf, size_t buffer_len,
1237  bool ownsBuffer, bool is_read_stream);
1238 
1245 
1253  bool read_stream);
1254 
1264 
1271 
1281  grk_decompress_core_params* parameters);
1282 
1293  grk_header_info* header_info);
1294 
1304 
1313 
1327 GRK_API bool GRK_CALLCONV grk_decompress_set_window(grk_codec* codec, float start_x, float start_y,
1328  float end_x, float end_y);
1329 
1339 
1348 GRK_API bool GRK_CALLCONV grk_decompress_tile(grk_codec* codec, uint16_t tileIndex);
1349 
1356 
1357 /* COMPRESSION FUNCTIONS*/
1358 
1368 
1389 
1398  grk_image* image);
1399 
1407 
1415 
1436 GRK_API bool GRK_CALLCONV grk_compress_tile(grk_codec* codec, uint16_t tileIndex, uint8_t* data,
1437  uint64_t data_size);
1438 
1448 
1454 
1463 GRK_API void GRK_CALLCONV grk_dump_codec(grk_codec* codec, uint32_t info_flag, FILE* output_stream);
1464 
1475 GRK_API bool GRK_CALLCONV grk_set_MCT(grk_cparameters* parameters, float* encodingMatrix,
1476  int32_t* dc_shift, uint32_t nbComp);
1477 
1478 /*************************************************************************************
1479  Plugin Interface
1480  *************************************************************************************/
1481 
1482 /*
1483  Plugin management
1484  */
1486 typedef struct _grk_plugin_load_info
1488  const char* pluginPath;
1490 
1497 
1502 
1503 /* No debug is done on plugin. Production setting. */
1504 #define GRK_PLUGIN_STATE_NO_DEBUG 0x0
1505 
1506 /*
1507  For compress debugging, the plugin first performs a T1 compress.
1508  Then:
1509  1. perform host DWT on plugin MCT data, and write to host image
1510  This way, both plugin and host start from same point
1511  (assume MCT is equivalent for both host and plugin)
1512  2. map plugin DWT data, compare with host DWT, and then write to plugin image
1513  At this point in the code, the plugin image holds plugin DWT data. And if no warnings are
1514  triggered, then we can safely say that host and plugin DWT data are identical.
1515  3. Perform host compress, skipping MCT and DWT (they have already been performed)
1516  4. during host compress, each context that is formed is compared against context stream from plugin
1517  5. rate control - synch with plugin code stream, and compare
1518  6. T2 and store to disk
1519  */
1521 #define GRK_PLUGIN_STATE_DEBUG 0x1
1522 #define GRK_PLUGIN_STATE_PRE_TR1 0x2
1523 #define GRK_PLUGIN_STATE_DWT_QUANTIZATION 0x4
1524 #define GRK_PLUGIN_STATE_MCT_ONLY 0x8
1525 
1530 
1531 /*
1532  Plugin compressing
1533  */
1534 typedef struct _grk_plugin_init_info
1536  int32_t deviceId;
1537  bool verbose;
1539 
1547  const char* input_file_name;
1549  const char* output_file_name;
1553  uint8_t* compressBuffer;
1555  unsigned int error_code;
1560 
1567 GRK_API int32_t GRK_CALLCONV grk_plugin_compress(grk_cparameters* compress_parameters,
1569 
1581 GRK_API int32_t GRK_CALLCONV grk_plugin_batch_compress(const char* input_dir,
1582  const char* output_dir,
1583  grk_cparameters* compress_parameters,
1585 
1590 
1595 
1596 /*
1597  Plugin decompression
1598  */
1600 typedef int (*GROK_INIT_DECOMPRESSORS)(grk_header_info* header_info, grk_image* image);
1604  size_t deviceId;
1606  const char* input_file_name;
1607  const char* output_file_name;
1608  /* input file format 0: J2K, 1: JP2 */
1610  /* output file format 0: PGX, 1: PxM, 2: BMP etc */
1619  unsigned int error_code;
1621  uint32_t full_image_x0;
1622  uint32_t full_image_y0;
1623  void* user_data;
1627 
1636 
1648  const char* input_dir, const char* output_dir, grk_decompress_parameters* decompress_parameters,
1650 
1655 
1660 
1661 #ifdef __cplusplus
1662 }
1663 #endif
struct _grk_plugin_init_info grk_plugin_init_info
struct _grk_cparameters grk_cparameters
Compress parameters.
GRK_API bool GRK_CALLCONV grk_compress_tile(grk_codec *codec, uint16_t tileIndex, uint8_t *data, uint64_t data_size)
Compress uncompressed data stored in a buffer.
Definition: grok.cpp:457
GRK_API void GRK_CALLCONV grk_stream_set_seek_function(grk_stream *stream, grk_stream_seek_fn func)
Set (absolute) seek function (stream must be seekable)
Definition: grok.cpp:820
GRK_CHANNEL_TYPE_
Definition: grok.h:650
@ GRK_CHANNEL_TYPE_OPACITY
Definition: grok.h:653
@ GRK_CHANNEL_TYPE_PREMULTIPLIED_OPACITY
Definition: grok.h:654
@ GRK_CHANNEL_TYPE_COLOUR
Definition: grok.h:652
@ GRK_CHANNEL_TYPE_UNSPECIFIED
Definition: grok.h:655
struct _grk_progression grk_progression
Progression order change.
struct _grk_image grk_image
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:311
GRK_API void GRK_CALLCONV grk_plugin_stop_batch_compress(void)
Stop batch compress.
Definition: grok.cpp:693
enum grk_prec_mode grk_precision_mode
Precision mode.
GRK_API grk_image *GRK_CALLCONV grk_image_new(uint16_t numcmpts, grk_image_comp *cmptparms, GRK_COLOR_SPACE clrspc)
Create image.
Definition: grok.cpp:171
GRK_API void GRK_CALLCONV grk_plugin_stop_batch_decompress(void)
Stop batch decompress.
Definition: grok.cpp:791
struct _grk_channel_description grk_channel_description
Channel definition: channel index, type, association.
#define GRK_NUM_COMMENTS_SUPPORTED
Definition: grok.h:385
void(* grk_msg_callback)(const char *msg, void *client_data)
Logging callback.
Definition: grok.h:405
GRK_RATE_CONTROL_ALGORITHM
Definition: grok.h:59
@ GRK_RATE_CONTROL_PCRD_OPT
Definition: grok.h:61
@ GRK_RATE_CONTROL_BISECT
Definition: grok.h:60
struct _grk_serialize_buf grk_serialize_buf
GRK_API void GRK_CALLCONV grk_plugin_cleanup(void)
Release plugin resources.
Definition: grok.cpp:599
GRK_API bool GRK_CALLCONV grk_plugin_load(grk_plugin_load_info info)
Load plugin.
Definition: grok.cpp:557
GRK_API void GRK_CALLCONV grk_stream_set_user_data_length(grk_stream *stream, uint64_t data_length)
Set the length of the user data for the stream.
Definition: grok.cpp:843
GRK_API size_t GRK_CALLCONV grk_stream_get_write_mem_stream_length(grk_stream *stream)
Get length of memory stream.
Definition: grok.cpp:512
enum _GRK_CODEC_FORMAT GRK_CODEC_FORMAT
Supported codecs.
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:105
grk_object grk_stream
Definition: grok.h:1105
GRK_API void GRK_CALLCONV grk_stream_set_user_data(grk_stream *stream, void *data, grk_stream_free_user_data_fn func)
Set user data for JPEG 2000 stream.
Definition: grok.cpp:835
GRK_API bool GRK_CALLCONV grk_compress_end(grk_codec *codec)
End compression.
Definition: grok.cpp:448
GRK_API uint32_t GRK_CALLCONV grk_plugin_get_debug_state()
Get debug state of plugin.
Definition: grok.cpp:584
struct _grk_prec grk_precision
Precision.
struct _grk_plugin_decompress_callback_info grk_plugin_decompress_callback_info
GRK_API bool GRK_CALLCONV grk_decompress_init(grk_codec *codec, grk_decompress_core_params *parameters)
Set up decompressor with decompress parameters.
Definition: grok.cpp:226
GRK_API void GRK_CALLCONV grk_decompress_set_default_params(grk_decompress_core_params *parameters)
Initialize decompress parameters with default values.
Definition: grok.cpp:216
GRK_API int32_t GRK_CALLCONV grk_plugin_batch_decompress(void)
Initiate batch decompress.
Definition: grok.cpp:777
enum _GRK_PROG_ORDER GRK_PROG_ORDER
Progression order.
struct _grk_object grk_object
Base Grok ref-counted object.
enum GRK_CHANNEL_TYPE_ GRK_CHANNEL_TYPE
struct _grk_raw_cparameters grk_raw_cparameters
RAW image compress parameters.
GRK_API grk_codec *GRK_CALLCONV grk_decompress_create(GRK_CODEC_FORMAT format, grk_stream *stream)
Create j2k/jp2 decompression codec.
Definition: grok.cpp:192
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:640
struct _grk_decompress_core_params grk_decompress_core_params
Core decompress parameters.
GRK_API bool GRK_CALLCONV grk_compress(grk_codec *codec)
Compress image.
Definition: grok.cpp:435
struct _grk_image_meta grk_image_meta
struct _grk_asoc grk_asoc
GRK_API bool GRK_CALLCONV grk_compress_with_plugin(grk_codec *codec, grk_plugin_tile *tile)
Comopress an image into a JPEG 2000 code stream using plugin.
Definition: grok.cpp:439
grk_object grk_codec
Definition: grok.h:1102
#define GRK_J2K_MAXRLVLS
Definition: grok.h:91
struct _grk_palette_data grk_palette_data
Palette data.
#define GRK_API
Definition: grok.h:46
GRK_API bool GRK_CALLCONV grk_decompress_read_header(grk_codec *codec, grk_header_info *header_info)
Decompress JPEG 2000 header.
Definition: grok.cpp:241
GRK_TILE_CACHE_STRATEGY
Definition: grok.h:390
@ GRK_TILE_CACHE_IMAGE
Definition: grok.h:392
@ GRK_TILE_CACHE_NONE
Definition: grok.h:391
struct _grk_component_mapping_comp grk_component_mapping_comp
Note: "component" refers to an image component as decompressed from the code stream,...
GRK_API const char *GRK_CALLCONV grk_version(void)
Library version.
Definition: grok.cpp:166
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:81
struct grk_plugin_tile_component grk_plugin_tile_component
Plugin tile component.
GRK_API int32_t GRK_CALLCONV grk_plugin_batch_compress(const char *input_dir, const char *output_dir, grk_cparameters *compress_parameters, GRK_PLUGIN_COMPRESS_USER_CALLBACK callback)
Batch compress with plugin.
Definition: grok.cpp:656
GRK_API void GRK_CALLCONV grk_object_unref(grk_object *obj)
Definition: grok.cpp:96
grk_prec_mode
Precision mode.
Definition: grok.h:715
@ GRK_PREC_MODE_SCALE
Definition: grok.h:717
@ GRK_PREC_MODE_CLIP
Definition: grok.h:716
#define GRK_MAX_LAYERS
Definition: grok.h:81
GRK_API void GRK_CALLCONV grk_compress_set_default_params(grk_cparameters *parameters)
Set compressing parameters to default values:
Definition: grok.cpp:386
struct _grk_plugin_precinct grk_plugin_precinct
Plugin precinct.
GRK_API grk_stream *GRK_CALLCONV grk_stream_new(size_t buffer_size, bool is_input)
Create an abstract stream.
Definition: grok.cpp:805
GRK_API grk_stream *GRK_CALLCONV grk_stream_create_mapped_file_stream(const char *fname, bool read_stream)
Create mapped file stream.
Definition: grok.cpp:523
struct grk_plugin_compress_user_callback_info grk_plugin_compress_user_callback_info
GRK_API bool GRK_CALLCONV grk_decompress_end(grk_codec *codec)
End decompression.
Definition: grok.cpp:290
_GRK_COLOR_SPACE
Supported color spaces.
Definition: grok.h:338
@ GRK_CLRSPC_SRGB
sRGB
Definition: grok.h:340
@ GRK_CLRSPC_EYCC
extended YCC
Definition: grok.h:343
@ GRK_CLRSPC_UNKNOWN
unknown
Definition: grok.h:339
@ GRK_CLRSPC_SYCC
standard YCC (YUV)
Definition: grok.h:342
@ GRK_CLRSPC_DEFAULT_CIE
default CIE LAB
Definition: grok.h:345
@ GRK_CLRSPC_ICC
ICC profile.
Definition: grok.h:347
@ GRK_CLRSPC_CMYK
CMYK.
Definition: grok.h:344
@ GRK_CLRSPC_GRAY
grayscale
Definition: grok.h:341
@ GRK_CLRSPC_CUSTOM_CIE
custom CIE LAB
Definition: grok.h:346
GRK_API grk_stream *GRK_CALLCONV grk_stream_create_file_stream(const char *fname, size_t buffer_size, bool is_read_stream)
Create stream from a file identified with its filename with a specific buffer size.
Definition: grok.cpp:475
bool(* GRK_PLUGIN_COMPRESS_USER_CALLBACK)(grk_plugin_compress_user_callback_info *info)
Definition: grok.h:1558
GRK_API bool GRK_CALLCONV grk_plugin_is_batch_complete(void)
Check if batch job is complete.
Definition: grok.cpp:678
enum _GRK_COLOR_SPACE GRK_COLOR_SPACE
Supported color spaces.
#define GRK_PATH_LEN
Definition: grok.h:80
GRK_ENUM_COLOUR_SPACE
Definition: grok.h:352
@ GRK_ENUM_CLRSPC_ESRGB
Definition: grok.h:368
@ GRK_ENUM_CLRSPC_CMY
Definition: grok.h:359
@ GRK_ENUM_CLRSPC_EYCC
Definition: grok.h:372
@ GRK_ENUM_CLRSPC_CIEJAB
Definition: grok.h:367
@ GRK_ENUM_CLRSPC_GRAY
Definition: grok.h:365
@ GRK_ENUM_CLRSPC_CIE
Definition: grok.h:362
@ GRK_ENUM_CLRSPC_UNKNOWN
Definition: grok.h:353
@ GRK_ENUM_CLRSPC_YCBCR3
Definition: grok.h:357
@ GRK_ENUM_CLRSPC_ROMMRGB
Definition: grok.h:369
@ GRK_ENUM_CLRSPC_YPBPR60
Definition: grok.h:370
@ GRK_ENUM_CLRSPC_SRGB
Definition: grok.h:364
@ GRK_ENUM_CLRSPC_BILEVEL2
Definition: grok.h:363
@ GRK_ENUM_CLRSPC_SYCC
Definition: grok.h:366
@ GRK_ENUM_CLRSPC_PHOTO_YCC
Definition: grok.h:358
@ GRK_ENUM_CLRSPC_YCBCR1
Definition: grok.h:355
@ GRK_ENUM_CLRSPC_CMYK
Definition: grok.h:360
@ GRK_ENUM_CLRSPC_YCCK
Definition: grok.h:361
@ GRK_ENUM_CLRSPC_YPBPR50
Definition: grok.h:371
@ GRK_ENUM_CLRSPC_BILEVEL1
Definition: grok.h:354
@ GRK_ENUM_CLRSPC_YCBCR2
Definition: grok.h:356
GRK_API bool GRK_CALLCONV grk_compress_start(grk_codec *codec)
Start compressing image.
Definition: grok.cpp:426
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:255
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:742
GRK_API void GRK_CALLCONV grk_image_single_component_data_free(grk_image_comp *image)
Deallocate data for single image component.
Definition: grok.cpp:182
GRK_SUPPORTED_FILE_FMT
Definition: grok.h:65
@ GRK_TIF_FMT
Definition: grok.h:73
@ GRK_PAM_FMT
Definition: grok.h:71
@ GRK_RAWL_FMT
Definition: grok.h:76
@ GRK_JPG_FMT
Definition: grok.h:77
@ GRK_PNG_FMT
Definition: grok.h:75
@ GRK_PGX_FMT
Definition: grok.h:70
@ GRK_BMP_FMT
Definition: grok.h:72
@ GRK_PXM_FMT
Definition: grok.h:69
@ GRK_UNK_FMT
Definition: grok.h:66
@ GRK_JP2_FMT
Definition: grok.h:68
@ GRK_J2K_FMT
Definition: grok.h:67
@ GRK_RAW_FMT
Definition: grok.h:74
GRK_API void GRK_CALLCONV grk_stream_set_read_function(grk_stream *stream, grk_stream_read_fn func)
Set read function.
Definition: grok.cpp:812
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:300
GRK_API grk_image *GRK_CALLCONV grk_decompress_get_composited_image(grk_codec *codec)
Get decompressed composite image.
Definition: grok.cpp:350
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:759
bool(* grk_stream_seek_fn)(uint64_t numBytes, void *user_data)
Definition: grok.h:919
struct _grk_decompress_params grk_decompress_parameters
Decompress parameters.
GRK_API grk_stream *GRK_CALLCONV grk_stream_create_mem_stream(uint8_t *buf, size_t buffer_len, bool ownsBuffer, bool is_read_stream)
Create stream from buffer.
Definition: grok.cpp:518
GRK_API bool GRK_CALLCONV grk_decompress_tile(grk_codec *codec, uint16_t tileIndex)
Decompress a specific tile.
Definition: grok.cpp:279
bool(* grk_serialize_pixels_callback)(grk_serialize_buf buffer, void *user_data)
Definition: grok.h:822
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:1599
struct _grk_plugin_band grk_plugin_band
Plugin band.
_GRK_CODEC_FORMAT
Supported codecs.
Definition: grok.h:379
@ GRK_CODEC_J2K
JPEG 2000 code stream : read/write.
Definition: grok.h:381
@ GRK_CODEC_UNKNOWN
place-holder
Definition: grok.h:380
@ GRK_CODEC_JP2
JP2 file format : read/write.
Definition: grok.h:382
struct _grk_plugin_tile grk_plugin_tile
Plugin tile.
GRK_CHANNEL_ASSOC_
Definition: grok.h:661
@ GRK_CHANNEL_ASSOC_COLOUR_1
Definition: grok.h:664
@ GRK_CHANNEL_ASSOC_COLOUR_2
Definition: grok.h:665
@ GRK_CHANNEL_ASSOC_COLOUR_3
Definition: grok.h:666
@ GRK_CHANNEL_ASSOC_WHOLE_IMAGE
Definition: grok.h:663
@ GRK_CHANNEL_ASSOC_UNASSOCIATED
Definition: grok.h:667
#define GRK_CALLCONV
Definition: grok.h:48
GRK_API grk_codec *GRK_CALLCONV grk_compress_create(GRK_CODEC_FORMAT format, grk_stream *stream)
Creates a J2K/JP2 compression structure.
Definition: grok.cpp:363
size_t(* grk_stream_write_fn)(void *buffer, size_t numBytes, void *user_data)
Definition: grok.h:915
GRK_API grk_image_meta *GRK_CALLCONV grk_image_meta_new(void)
Definition: grok.cpp:177
void(* grk_stream_free_user_data_fn)(void *user_data)
Definition: grok.h:923
GRK_API grk_image *GRK_CALLCONV grk_decompress_get_tile_image(grk_codec *codec, uint16_t tileIndex)
Get decompressed tile image.
Definition: grok.cpp:340
#define GRK_NUM_ASOC_BOXES_SUPPORTED
Definition: grok.h:386
_GRK_PROG_ORDER
Progression order.
Definition: grok.h:308
@ GRK_RPCL
resolution-precinct-component-layer order
Definition: grok.h:312
@ GRK_CPRL
component-precinct-resolution-layer order
Definition: grok.h:314
@ GRK_RLCP
resolution-layer-component-precinct order
Definition: grok.h:311
@ GRK_PROG_UNKNOWN
place-holder
Definition: grok.h:309
@ GRK_LRCP
layer-resolution-component-precinct order
Definition: grok.h:310
@ GRK_NUM_PROGRESSION_ORDERS
Definition: grok.h:315
@ GRK_PCRL
precinct-component-resolution-layer order
Definition: grok.h:313
enum GRK_CHANNEL_ASSOC_ GRK_CHANNEL_ASSOC
GRK_API void GRK_CALLCONV grk_stream_set_write_function(grk_stream *stream, grk_stream_write_fn func)
Set write function.
Definition: grok.cpp:826
void(* grk_serialize_register_client_callback)(grk_serialize_callback reclaim_callback, void *serialize_user_data, void *reclaim_user_data)
Definition: grok.h:818
struct _grk_plugin_pass grk_plugin_pass
Plugin pass.
bool(* grk_serialize_callback)(grk_serialize_buf buffer, void *serialize_user_data)
Definition: grok.h:817
struct _grk_header_info grk_header_info
Header info.
int32_t(* grk_plugin_decompress_callback)(grk_plugin_decompress_callback_info *info)
Definition: grok.h:1625
GRK_API bool GRK_CALLCONV grk_compress_init(grk_codec *codec, grk_cparameters *parameters, grk_image *image)
Set up the compressor parameters using the current image and user parameters.
Definition: grok.cpp:415
GRK_API bool GRK_CALLCONV grk_initialize(const char *pluginPath, uint32_t numthreads)
Initialize library.
Definition: grok.cpp:68
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:604
size_t(* grk_stream_read_fn)(void *buffer, size_t numBytes, void *user_data)
Definition: grok.h:910
GRK_API grk_object *GRK_CALLCONV grk_object_ref(grk_object *obj)
Increment ref count.
Definition: grok.cpp:87
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:267
HWY_DLLEXPORT HWY_NORETURN void int const char * format
Definition: base.h:763
Definition: grok.h:704
const char * label
Definition: grok.h:706
uint8_t * xml
Definition: grok.h:707
uint32_t level
Definition: grok.h:705
uint32_t xml_len
Definition: grok.h:708
Channel definitions and number of definitions.
Definition: grok.h:685
uint16_t num_channel_descriptions
Definition: grok.h:687
grk_channel_description * descriptions
Definition: grok.h:686
Channel definition: channel index, type, association.
Definition: grok.h:675
uint16_t typ
Definition: grok.h:677
uint16_t asoc
Definition: grok.h:678
uint16_t channel
Definition: grok.h:676
ICC profile, palette, channel definition.
Definition: grok.h:694
grk_channel_definition * channel_definition
Definition: grok.h:698
char * icc_profile_name
Definition: grok.h:697
uint32_t icc_profile_len
Definition: grok.h:696
uint8_t * icc_profile_buf
Definition: grok.h:695
grk_palette_data * palette
Definition: grok.h:699
bool has_colour_specification_box
Definition: grok.h:700
Note: "component" refers to an image component as decompressed from the code stream,...
Definition: grok.h:622
uint8_t palette_column
Definition: grok.h:625
uint8_t mapping_type
Definition: grok.h:624
uint16_t component_index
Definition: grok.h:623
Compress parameters.
Definition: grok.h:484
uint32_t cblockw_init
initial code block width (default to 64)
Definition: grok.h:523
uint8_t numgbits
Definition: grok.h:513
char outfile[GRK_PATH_LEN]
output file name
Definition: grok.h:547
bool allocationByRateDistoration
rate control allocation by rate/distortion curve
Definition: grok.h:498
GRK_PROG_ORDER prog_order
progression order (default is LRCP)
Definition: grok.h:515
uint16_t comment_len[GRK_NUM_COMMENTS_SUPPORTED]
Definition: grok.h:507
uint32_t repeats
Definition: grok.h:606
uint32_t numThreads
Definition: grok.h:602
bool verbose
Definition: grok.h:609
uint32_t image_offset_x0
subimage compressing: origin image offset in x direction
Definition: grok.h:549
uint64_t max_cs_size
Maximum size (in bytes) for the whole code stream.
Definition: grok.h:581
grk_raw_cparameters raw_cp
Definition: grok.h:560
uint8_t numresolution
number of resolutions
Definition: grok.h:521
uint32_t image_offset_y0
subimage compressing: origin image offset in y direction
Definition: grok.h:551
bool isHT
Definition: grok.h:529
GRK_SUPPORTED_FILE_FMT decod_format
input file format
Definition: grok.h:557
uint8_t newTilePartProgressionDivider
new tile part progression divider
Definition: grok.h:569
uint32_t cblockh_init
initial code block height (default to 64)
Definition: grok.h:525
GRK_RATE_CONTROL_ALGORITHM rateControlAlgorithm
Definition: grok.h:601
bool allocationByQuality
rate control allocation by fixed_PSNR quality
Definition: grok.h:503
uint32_t roi_shift
region of interest: upshift value
Definition: grok.h:537
uint8_t subsampling_dy
subsampling value for dy
Definition: grok.h:555
bool tile_size_on
size of tile: tile_size_on = false (not in argument) or = true (in argument)
Definition: grok.h:486
uint32_t t_height
YTsiz.
Definition: grok.h:494
bool write_capture_resolution_from_file
Definition: grok.h:588
bool enableTilePartGeneration
Tile part generation.
Definition: grok.h:567
uint32_t res_spec
Definition: grok.h:539
uint8_t mct
MCT (multiple component transform)
Definition: grok.h:571
uint16_t numlayers
number of layers
Definition: grok.h:496
int32_t deviceId
Definition: grok.h:603
GRK_SUPPORTED_FILE_FMT cod_format
output file format
Definition: grok.h:559
double capture_resolution_from_file[2]
Definition: grok.h:589
uint32_t max_comp_size
Maximum size (in bytes) for each component.
Definition: grok.h:565
bool irreversible
1 : use the irreversible DWT 9-7, 0 : use lossless compression (default)
Definition: grok.h:532
uint32_t t_width
XTsiz.
Definition: grok.h:492
bool write_display_resolution
Definition: grok.h:594
uint8_t cblk_sty
code block style
Definition: grok.h:527
uint8_t csty
csty : coding style
Definition: grok.h:511
uint32_t prch_init[GRK_J2K_MAXRLVLS]
initial precinct height
Definition: grok.h:543
bool is_binary_comment[GRK_NUM_COMMENTS_SUPPORTED]
Definition: grok.h:508
uint16_t rsiz
RSIZ value To be used to combine GRK_PROFILE_*, GRK_EXTENSION_* and (sub)levels values.
Definition: grok.h:584
char infile[GRK_PATH_LEN]
input file name
Definition: grok.h:545
double layer_distortion[GRK_MAX_LAYERS]
layer PSNR values
Definition: grok.h:505
void * mct_data
Naive implementation of MCT restricted to a single reversible array based compressing without offset ...
Definition: grok.h:574
uint32_t tx0
XTOsiz.
Definition: grok.h:488
char * comment[GRK_NUM_COMMENTS_SUPPORTED]
Definition: grok.h:506
bool write_capture_resolution
Definition: grok.h:591
uint8_t subsampling_dx
subsampling value for dx
Definition: grok.h:553
bool writeTLM
Definition: grok.h:608
uint32_t prcw_init[GRK_J2K_MAXRLVLS]
initial precinct width
Definition: grok.h:541
size_t num_comments
Definition: grok.h:509
uint16_t framerate
Definition: grok.h:585
double display_resolution[2]
Definition: grok.h:595
bool writePLT
Definition: grok.h:607
int32_t roi_compno
region of interest: affected component in [0..3]; -1 indicates no ROI
Definition: grok.h:535
uint32_t ty0
YTOsiz.
Definition: grok.h:490
uint32_t duration
Definition: grok.h:604
double layer_rate[GRK_MAX_LAYERS]
layers rates expressed as compression ratios.
Definition: grok.h:501
uint32_t kernelBuildOptions
Definition: grok.h:605
grk_progression progression[GRK_J2K_MAXRLVLS]
progressions
Definition: grok.h:517
uint32_t numpocs
number of progression order changes (POCs), default to 0
Definition: grok.h:519
double capture_resolution[2]
Definition: grok.h:592
Core decompress parameters.
Definition: grok.h:828
uint32_t randomAccessFlags_
Definition: grok.h:846
void * serialize_user_data
Definition: grok.h:849
grk_serialize_pixels_callback serialize_buffer_callback
Definition: grok.h:848
GRK_TILE_CACHE_STRATEGY tileCacheStrategy
Definition: grok.h:844
uint8_t reduce
Set the number of highest resolution levels to be discarded.
Definition: grok.h:836
grk_serialize_register_client_callback serialize_register_client_callback
Definition: grok.h:850
uint16_t max_layers
Set the maximum number of quality layers to decompress.
Definition: grok.h:843
Decompress parameters.
Definition: grok.h:859
float dw_y1
Decompress window bottom boundary.
Definition: grok.h:877
int32_t deviceId
Definition: grok.h:899
float dw_x0
Decompress window left boundary.
Definition: grok.h:871
grk_precision * precision
Definition: grok.h:881
uint32_t numThreads
Definition: grok.h:903
GRK_SUPPORTED_FILE_FMT cod_format
output file format
Definition: grok.h:869
uint32_t kernelBuildOptions
Definition: grok.h:901
char infile[GRK_PATH_LEN]
input file name
Definition: grok.h:863
uint32_t compressionLevel
Definition: grok.h:896
bool force_rgb
Definition: grok.h:884
uint32_t compression
Definition: grok.h:891
bool singleTileDecompress
Definition: grok.h:880
GRK_SUPPORTED_FILE_FMT decod_format
input file format
Definition: grok.h:867
uint32_t repeats
Definition: grok.h:902
bool upsample
Definition: grok.h:886
grk_decompress_core_params core
core library parameters
Definition: grok.h:861
uint16_t tileIndex
tile number of the decompressed tile
Definition: grok.h:879
bool serialize_xml
Definition: grok.h:890
bool verbose_
Verbose mode.
Definition: grok.h:898
uint32_t duration
Definition: grok.h:900
float dw_y0
Decompress window up boundary.
Definition: grok.h:875
uint32_t numPrecision
Definition: grok.h:882
bool split_pnm
Definition: grok.h:888
float dw_x1
Decompress window right boundary.
Definition: grok.h:873
char outfile[GRK_PATH_LEN]
output file name
Definition: grok.h:865
Header info.
Definition: grok.h:733
uint32_t cblockh_init
initial code block height, default to 64
Definition: grok.h:752
uint16_t comment_len[GRK_NUM_COMMENTS_SUPPORTED]
Definition: grok.h:800
bool upsample
Definition: grok.h:739
bool forceRGB
Definition: grok.h:738
bool splitByComponent
Definition: grok.h:742
uint32_t num_asocs
Definition: grok.h:804
char * comment[GRK_NUM_COMMENTS_SUPPORTED]
Definition: grok.h:799
uint32_t t_width
XTsiz.
Definition: grok.h:783
uint32_t numresolutions
number of resolutions
Definition: grok.h:761
uint32_t prch_init[GRK_J2K_MAXRLVLS]
initial precinct height
Definition: grok.h:777
size_t xml_data_len
Definition: grok.h:797
size_t num_comments
Definition: grok.h:798
uint32_t numPrecision
Definition: grok.h:741
uint8_t csty
Definition: grok.h:767
uint32_t t_grid_height
tile grid height
Definition: grok.h:789
grk_asoc asocs[GRK_NUM_ASOC_BOXES_SUPPORTED]
Definition: grok.h:803
uint32_t tx0
XTOsiz.
Definition: grok.h:779
uint32_t ty0
YTOsiz.
Definition: grok.h:781
uint32_t cblockw_init
initial code block width, default to 64
Definition: grok.h:750
uint16_t rsiz
RSIZ value To be used to combine GRK_PROFILE_*, GRK_EXTENSION_* and (sub)levels values.
Definition: grok.h:759
uint32_t mct
multi-component transform identifier
Definition: grok.h:756
uint32_t prcw_init[GRK_J2K_MAXRLVLS]
initial precinct width
Definition: grok.h:775
grk_precision * precision
Definition: grok.h:740
uint32_t t_height
YTsiz.
Definition: grok.h:785
GRK_SUPPORTED_FILE_FMT decompressFormat
Definition: grok.h:737
uint8_t cblk_sty
Definition: grok.h:773
uint32_t t_grid_width
tile grid width
Definition: grok.h:787
uint8_t * xml_data
Definition: grok.h:796
bool isBinaryComment[GRK_NUM_COMMENTS_SUPPORTED]
Definition: grok.h:801
bool singleTileDecompress
Definition: grok.h:743
bool irreversible
1 : use the irreversible DWT 9-7, 0 : use lossless compression (default)
Definition: grok.h:754
uint16_t numlayers
number of layers
Definition: grok.h:791
Image component.
Definition: grok.h:929
uint32_t h
data height
Definition: grok.h:939
uint8_t dy
YRsiz: vertical separation of a sample of component with respect to the reference grid.
Definition: grok.h:945
GRK_CHANNEL_ASSOC association
Definition: grok.h:951
GRK_CHANNEL_TYPE type
Definition: grok.h:950
uint8_t dx
XRsiz: horizontal separation of a sample of component with respect to the reference grid.
Definition: grok.h:942
bool sgnd
Definition: grok.h:949
uint32_t w
data width
Definition: grok.h:935
uint8_t prec
precision
Definition: grok.h:947
uint16_t Ycrg
Definition: grok.h:953
int32_t * data
image component data
Definition: grok.h:955
uint32_t x0
x component offset compared to the whole image
Definition: grok.h:931
uint16_t Xcrg
Definition: grok.h:953
uint32_t y0
y component offset compared to the whole image
Definition: grok.h:933
uint32_t stride
data stride
Definition: grok.h:937
Definition: grok.h:960
grk_color color
Definition: grok.h:962
uint8_t * xmp_buf
Definition: grok.h:965
grk_object obj
Definition: grok.h:961
size_t xmp_len
Definition: grok.h:966
size_t iptc_len
Definition: grok.h:964
uint8_t * iptc_buf
Definition: grok.h:963
Definition: grok.h:970
uint16_t decompressNumComps
Definition: grok.h:998
grk_precision * precision
Definition: grok.h:994
bool has_capture_resolution
Definition: grok.h:987
uint16_t numcomps
number of components in the image
Definition: grok.h:983
uint64_t packedRowBytes
Definition: grok.h:1005
uint32_t y0
YOsiz: vertical offset from the origin of the reference grid to the top side of the image area.
Definition: grok.h:977
GRK_COLOR_SPACE color_space
Definition: grok.h:984
bool upsample
Definition: grok.h:993
grk_image_comp * comps
Definition: grok.h:1007
bool splitByComponent
Definition: grok.h:997
bool channelDefinitionApplied_
Definition: grok.h:986
uint32_t decompressWidth
Definition: grok.h:999
GRK_COLOR_SPACE decompressColourSpace
Definition: grok.h:1002
uint32_t x0
XOsiz: horizontal offset from the origin of the reference grid to the left side of the image area.
Definition: grok.h:974
uint8_t decompressPrec
Definition: grok.h:1001
grk_object obj
Definition: grok.h:971
uint32_t numPrecision
Definition: grok.h:995
bool has_display_resolution
Definition: grok.h:989
double display_resolution[2]
Definition: grok.h:990
grk_serialize_buf interleavedData
Definition: grok.h:1003
uint32_t y1
Ysiz: height of the reference grid.
Definition: grok.h:981
double capture_resolution[2]
Definition: grok.h:988
grk_image_meta * meta
Definition: grok.h:1006
bool multiTile
Definition: grok.h:996
uint32_t x1
Xsiz: width of the reference grid.
Definition: grok.h:979
GRK_SUPPORTED_FILE_FMT decompressFormat
Definition: grok.h:991
bool forceRGB
Definition: grok.h:992
uint32_t rowsPerStrip
Definition: grok.h:1004
uint32_t decompressHeight
Definition: grok.h:1000
bool paletteApplied_
Definition: grok.h:985
Base Grok ref-counted object.
Definition: grok.h:413
void * wrapper
Definition: grok.h:414
Palette data.
Definition: grok.h:632
grk_component_mapping_comp * component_mapping
Definition: grok.h:635
uint8_t num_channels
Definition: grok.h:636
int32_t * lut
Definition: grok.h:633
uint16_t num_entries
Definition: grok.h:634
bool * channel_sign
Definition: grok.h:637
uint8_t * channel_prec
Definition: grok.h:638
Plugin band.
Definition: grok.h:1056
float stepsize
Definition: grok.h:1060
uint8_t orientation
Definition: grok.h:1057
uint64_t numPrecincts
Definition: grok.h:1058
grk_plugin_precinct ** precincts
Definition: grok.h:1059
Plugin code block.
Definition: grok.h:1027
uint8_t * compressedData
Definition: grok.h:1035
uint32_t y0
Definition: grok.h:1031
size_t numPasses
Definition: grok.h:1038
unsigned int sortedIndex
Definition: grok.h:1040
uint8_t numBitPlanes
Definition: grok.h:1037
grk_plugin_pass passes[67]
Definition: grok.h:1039
uint32_t x0
Definition: grok.h:1031
unsigned int * contextStream
Definition: grok.h:1032
uint32_t y1
Definition: grok.h:1031
uint32_t numPix
Definition: grok.h:1034
uint32_t x1
Definition: grok.h:1031
uint32_t compressedDataLength
Definition: grok.h:1036
grk_codec * codec
Definition: grok.h:1612
GRK_SUPPORTED_FILE_FMT decod_format
Definition: grok.h:1608
uint32_t full_image_y0
Definition: grok.h:1621
unsigned int error_code
Definition: grok.h:1618
grk_decompress_parameters * decompressor_parameters
Definition: grok.h:1614
grk_header_info header_info
Definition: grok.h:1613
GRK_SUPPORTED_FILE_FMT cod_format
Definition: grok.h:1610
size_t deviceId
Definition: grok.h:1603
grk_plugin_tile * tile
Definition: grok.h:1617
uint32_t full_image_x0
Definition: grok.h:1620
void * user_data
Definition: grok.h:1622
bool plugin_owns_image
Definition: grok.h:1616
uint32_t decompress_flags
Definition: grok.h:1619
const char * output_file_name
Definition: grok.h:1606
GROK_INIT_DECOMPRESSORS init_decompressors_func
Definition: grok.h:1604
grk_stream * stream
Definition: grok.h:1611
const char * input_file_name
Definition: grok.h:1605
grk_image * image
Definition: grok.h:1615
Definition: grok.h:1534
bool verbose
Definition: grok.h:1536
int32_t deviceId
Definition: grok.h:1535
Definition: grok.h:1486
const char * pluginPath
Definition: grok.h:1487
Plugin pass.
Definition: grok.h:1017
size_t rate
Definition: grok.h:1019
size_t length
Definition: grok.h:1020
double distortionDecrease
Definition: grok.h:1018
Plugin precinct.
Definition: grok.h:1047
grk_plugin_code_block ** blocks
Definition: grok.h:1049
uint64_t numBlocks
Definition: grok.h:1048
Plugin resolution.
Definition: grok.h:1067
size_t numBands
Definition: grok.h:1069
size_t level
Definition: grok.h:1068
grk_plugin_band ** band
Definition: grok.h:1070
Plugin tile.
Definition: grok.h:1095
uint32_t decompress_flags
Definition: grok.h:1096
grk_plugin_tile_component ** tileComponents
Definition: grok.h:1098
size_t numComponents
Definition: grok.h:1097
Precision.
Definition: grok.h:724
uint8_t prec
Definition: grok.h:725
grk_precision_mode mode
Definition: grok.h:726
Progression order change.
Definition: grok.h:422
uint16_t comp_temp
Definition: grok.h:453
uint32_t tx1
Definition: grok.h:430
uint32_t tp_txE
Definition: grok.h:448
uint8_t res_temp
Definition: grok.h:454
GRK_PROG_ORDER specifiedCompressionPocProg
Definition: grok.h:425
uint32_t tx0
tile dimensions
Definition: grok.h:428
uint16_t compE
Definition: grok.h:434
uint8_t resS
Definition: grok.h:435
uint64_t prec_temp
Definition: grok.h:455
uint32_t tp_tyE
Definition: grok.h:450
uint64_t precE
Definition: grok.h:438
uint64_t precS
Definition: grok.h:437
uint32_t ty0
Definition: grok.h:429
uint32_t ty1
Definition: grok.h:431
uint32_t ty0_temp
Definition: grok.h:458
uint16_t tpCompE
Definition: grok.h:442
uint32_t tp_tyS
Definition: grok.h:449
uint32_t dy
Definition: grok.h:452
GRK_PROG_ORDER progression
Definition: grok.h:423
uint32_t dx
Definition: grok.h:451
uint16_t layE
Definition: grok.h:440
uint16_t layS
Definition: grok.h:439
char progressionString[5]
Definition: grok.h:424
uint8_t tpResE
Definition: grok.h:444
uint32_t tx0_temp
Definition: grok.h:457
uint32_t tileno
Definition: grok.h:426
uint16_t lay_temp
Definition: grok.h:456
uint16_t tpLayE
Definition: grok.h:446
uint64_t tpPrecE
Definition: grok.h:445
uint16_t tpCompS
Definition: grok.h:441
uint16_t compS
progression order bounds specified by POC
Definition: grok.h:433
uint32_t tp_txS
Definition: grok.h:447
uint8_t resE
Definition: grok.h:436
uint8_t tpResS
Definition: grok.h:443
RAW component compress parameters.
Definition: grok.h:463
uint8_t dy
subsampling in X direction
Definition: grok.h:465
uint8_t dx
Definition: grok.h:464
RAW image compress parameters.
Definition: grok.h:471
uint8_t prec
number of components of the raw image
Definition: grok.h:475
uint32_t width
Definition: grok.h:472
uint16_t numcomps
height of the raw image
Definition: grok.h:474
grk_raw_comp_cparameters * comps
signed/unsigned raw image
Definition: grok.h:477
bool sgnd
bit depth of the raw image
Definition: grok.h:476
uint32_t height
width of the raw image
Definition: grok.h:473
Definition: grok.h:808
uint8_t * data
Definition: grok.h:809
uint32_t index
Definition: grok.h:814
uint64_t allocLen
Definition: grok.h:812
uint64_t offset
Definition: grok.h:810
uint64_t dataLen
Definition: grok.h:811
bool pooled
Definition: grok.h:813
bool outputFileNameIsRelative
Definition: grok.h:1547
grk_cparameters * compressor_parameters
Definition: grok.h:1549
grk_image * image
Definition: grok.h:1550
grk_plugin_tile * tile
Definition: grok.h:1551
const char * output_file_name
Definition: grok.h:1548
bool transferExifTags
Definition: grok.h:1555
size_t compressBufferLen
Definition: grok.h:1553
unsigned int error_code
Definition: grok.h:1554
const char * input_file_name
Definition: grok.h:1546
uint8_t * compressBuffer
Definition: grok.h:1552
Plugin tile component.
Definition: grok.h:1077
grk_plugin_resolution ** resolutions
Definition: grok.h:1079
size_t numResolutions
Definition: grok.h:1078