28#define GPUP_CALLCONV __stdcall
33#define GPUP_API __declspec(dllexport)
35#define GPUP_API __declspec(dllimport)
41#define GPUP_API __attribute__((visibility("hidden")))
43#define GPUP_API __attribute__((visibility("default")))
49#define GPUP_PATH_LEN 4096
50#define GPUP_MAX_LAYERS 256
51#define GPUP_MAX_DECOMP_LVLS 32
52#define GPUP_MAXRLVLS (GPUP_MAX_DECOMP_LVLS + 1)
53#define GPUP_MAXBANDS (3 * GPUP_MAXRLVLS - 2)
54#define GPUP_MAX_SUPPORTED_PREC 16
55#define GPUP_BIBO_EXTRA_BITS 7
56#define GPUP_MAX_PASSES (3 * (GPUP_MAX_SUPPORTED_PREC + GPUP_BIBO_EXTRA_BITS) - 2)
57#define GPUP_NUM_COMMENTS 256
58#define GPUP_BUFFER_ALIGNMENT 64
127#define GPUP_DECODE_HEADER (1 << 0)
128#define GPUP_DECODE_T2 (1 << 1)
129#define GPUP_DECODE_T1 (1 << 2)
130#define GPUP_DECODE_POST_T1 (1 << 3)
131#define GPUP_DECODE_CLEAN (1 << 4)
132#define GPUP_DECODE_ALL \
133 (GPUP_DECODE_CLEAN | GPUP_DECODE_HEADER | GPUP_DECODE_T2 | GPUP_DECODE_T1 | GPUP_DECODE_POST_T1)
137#define GPUP_STATE_NO_DEBUG 0x0
138#define GPUP_STATE_DEBUG 0x1
139#define GPUP_STATE_PRE_TR1 0x2
140#define GPUP_STATE_DWT_QUANTIZATION 0x4
141#define GPUP_STATE_MCT_ONLY 0x8
145#define GPUP_PROFILE_NONE 0x0000
146#define GPUP_PROFILE_0 0x0001
147#define GPUP_PROFILE_1 0x0002
148#define GPUP_PROFILE_CINEMA_2K 0x0003
149#define GPUP_PROFILE_CINEMA_4K 0x0004
150#define GPUP_PROFILE_CINEMA_S2K 0x0005
151#define GPUP_PROFILE_CINEMA_S4K 0x0006
152#define GPUP_PROFILE_CINEMA_LTS 0x0007
153#define GPUP_PROFILE_BC_SINGLE 0x0100
154#define GPUP_PROFILE_BC_MULTI 0x0200
155#define GPUP_PROFILE_BC_MULTI_R 0x0300
156#define GPUP_PROFILE_BC_MASK 0x030F
157#define GPUP_PROFILE_IMF_2K 0x0400
158#define GPUP_PROFILE_IMF_4K 0x0500
159#define GPUP_PROFILE_IMF_8K 0x0600
160#define GPUP_PROFILE_IMF_2K_R 0x0700
161#define GPUP_PROFILE_IMF_4K_R 0x0800
162#define GPUP_PROFILE_IMF_8K_R 0x0900
163#define GPUP_PROFILE_MASK 0x0FFF
164#define GPUP_PROFILE_PART2 0x8000
165#define GPUP_PROFILE_PART2_EXTENSIONS_MASK 0x3FFF
167#define GPUP_EXTENSION_NONE 0x0000
168#define GPUP_EXTENSION_MCT 0x0100
169#define GPUP_IS_PART2(v) ((v) & GPUP_PROFILE_PART2)
170#define GPUP_IS_CINEMA(v) (((v) >= GPUP_PROFILE_CINEMA_2K) && ((v) <= GPUP_PROFILE_CINEMA_S4K))
171#define GPUP_IS_STORAGE(v) ((v) == GPUP_PROFILE_CINEMA_LTS)
172#define GPUP_IS_BROADCAST(v) \
173 (((v) >= GPUP_PROFILE_BC_SINGLE) && ((v) <= (GPUP_PROFILE_BC_MULTI_R | 0x000b)) && \
174 (((v) & 0xf) <= 0xb))
175#define GPUP_IS_IMF(v) \
176 (((v) >= GPUP_PROFILE_IMF_2K) && ((v) <= (GPUP_PROFILE_IMF_8K_R | 0x009b)) && \
177 (((v) & 0xf) <= 0xb) && (((v) & 0xf0) <= 0x90))
181#define GPUP_CBLKSTY_LAZY 0x001
182#define GPUP_CBLKSTY_RESET 0x002
183#define GPUP_CBLKSTY_TERMALL 0x004
184#define GPUP_CBLKSTY_VSC 0x008
185#define GPUP_CBLKSTY_PTERM 0x010
186#define GPUP_CBLKSTY_SEGSYM 0x020
187#define GPUP_CBLKSTY_HT 0x040
188#define GPUP_CBLKSTY_HT_MIXED 0x080
189#define GPUP_CBLKSTY_HT_PHLD 0x100
463static inline uint32_t gpup_make_aligned_width(uint32_t width)
474#ifndef GPUP_TYPES_ONLY
481 img->numcomps = numcmpts;
482 img->color_space = clrspc;
483 if(numcmpts > 0 && cmptparms)
486 for(uint16_t i = 0; i < numcmpts; i++)
488 img->comps[i] = cmptparms[i];
489 if(alloc_data && cmptparms[i].w > 0 && cmptparms[i].h > 0)
491 auto stride = gpup_make_aligned_width(cmptparms[i].w);
492 size_t dataSize = (size_t)stride * cmptparms[i].h *
sizeof(int32_t);
496 if(img->comps[i].data)
497 memset(img->comps[i].data, 0, dataSize);
498 img->comps[i].stride = stride;
499 img->comps[i].owns_data =
true;
506inline void gpup_image_destroy(
gpup_image* img)
512 for(uint16_t i = 0; i < img->
numcomps; i++)
#define GPUP_MAXRLVLS
Definition gpu_plugin_shared.h:52
struct _gpup_tile_component gpup_tile_component
struct _gpup_compress_batch_info gpup_compress_batch_info
gpup_prog_order
Definition gpu_plugin_shared.h:71
@ GPUP_PROG_UNKNOWN
Definition gpu_plugin_shared.h:72
@ GPUP_RLCP
Definition gpu_plugin_shared.h:74
@ GPUP_NUM_PROGRESSION_ORDERS
Definition gpu_plugin_shared.h:78
@ GPUP_RPCL
Definition gpu_plugin_shared.h:75
@ GPUP_LRCP
Definition gpu_plugin_shared.h:73
@ GPUP_CPRL
Definition gpu_plugin_shared.h:77
@ GPUP_PCRL
Definition gpu_plugin_shared.h:76
struct _gpup_resolution gpup_resolution
int(* GPUP_INIT_DECOMPRESSORS)(gpup_header_info *header_info, gpup_image *image)
Definition gpu_plugin_shared.h:406
struct _gpup_tile gpup_tile
struct _gpup_compress_params gpup_compress_params
struct _gpup_pass gpup_pass
uint64_t(* GPUP_COMPRESS_USER_CALLBACK)(gpup_compress_callback_info *info)
Definition gpu_plugin_shared.h:421
struct _gpup_decompress_params gpup_decompress_params
struct _gpup_image gpup_image
struct _gpup_code_block gpup_code_block
void(* gpup_msg_callback)(const char *msg, void *client_data)
Definition gpu_plugin_shared.h:62
struct _gpup_precinct gpup_precinct
int32_t(* GPUP_DECOMPRESS_USER_CALLBACK)(gpup_decompress_callback_info *info)
Definition gpu_plugin_shared.h:453
struct _gpup_band gpup_band
struct _gpup_stream_params gpup_stream_params
struct _gpup_compress_callback_info gpup_compress_callback_info
#define GPUP_MAX_PASSES
Definition gpu_plugin_shared.h:56
struct _gpup_init_info gpup_init_info
struct _gpup_header_info gpup_header_info
struct _gpup_decompress_core_params gpup_decompress_core_params
gpup_file_fmt
Definition gpu_plugin_shared.h:95
@ GPUP_FMT_PAM
Definition gpu_plugin_shared.h:101
@ GPUP_FMT_RAW
Definition gpu_plugin_shared.h:104
@ GPUP_FMT_MJ2
Definition gpu_plugin_shared.h:108
@ GPUP_FMT_PXM
Definition gpu_plugin_shared.h:99
@ GPUP_FMT_PGX
Definition gpu_plugin_shared.h:100
@ GPUP_FMT_JP2
Definition gpu_plugin_shared.h:98
@ GPUP_FMT_JPG
Definition gpu_plugin_shared.h:107
@ GPUP_FMT_TIF
Definition gpu_plugin_shared.h:103
@ GPUP_FMT_PNG
Definition gpu_plugin_shared.h:105
@ GPUP_FMT_BMP
Definition gpu_plugin_shared.h:102
@ GPUP_FMT_RAWL
Definition gpu_plugin_shared.h:106
@ GPUP_FMT_J2K
Definition gpu_plugin_shared.h:97
@ GPUP_FMT_UNK
Definition gpu_plugin_shared.h:96
gpup_codec_fmt
Definition gpu_plugin_shared.h:112
@ GPUP_CODEC_JP2
Definition gpu_plugin_shared.h:115
@ GPUP_CODEC_UNK
Definition gpu_plugin_shared.h:113
@ GPUP_CODEC_J2K
Definition gpu_plugin_shared.h:114
@ GPUP_CODEC_MJ2
Definition gpu_plugin_shared.h:116
gpup_rate_control
Definition gpu_plugin_shared.h:120
@ GPUP_RATE_CONTROL_BISECT
Definition gpu_plugin_shared.h:121
@ GPUP_RATE_CONTROL_PCRD_OPT
Definition gpu_plugin_shared.h:122
#define GPUP_MAX_LAYERS
Definition gpu_plugin_shared.h:50
#define GPUP_PATH_LEN
Definition gpu_plugin_shared.h:49
gpup_color_space
Definition gpu_plugin_shared.h:82
@ GPUP_CLRSPC_CMYK
Definition gpu_plugin_shared.h:88
@ GPUP_CLRSPC_UNKNOWN
Definition gpu_plugin_shared.h:83
@ GPUP_CLRSPC_GRAY
Definition gpu_plugin_shared.h:85
@ GPUP_CLRSPC_SRGB
Definition gpu_plugin_shared.h:84
@ GPUP_CLRSPC_CUSTOM_CIE
Definition gpu_plugin_shared.h:90
@ GPUP_CLRSPC_EYCC
Definition gpu_plugin_shared.h:87
@ GPUP_CLRSPC_SYCC
Definition gpu_plugin_shared.h:86
@ GPUP_CLRSPC_ICC
Definition gpu_plugin_shared.h:91
@ GPUP_CLRSPC_DEFAULT_CIE
Definition gpu_plugin_shared.h:89
struct _gpup_decompress_callback_info gpup_decompress_callback_info
#define GPUP_BUFFER_ALIGNMENT
Definition gpu_plugin_shared.h:58
struct _gpup_image_comp gpup_image_comp
void gpup_codec
Definition gpu_plugin_shared.h:66
Definition gpu_plugin_shared.h:249
uint64_t numPrecincts
Definition gpu_plugin_shared.h:251
float stepsize
Definition gpu_plugin_shared.h:253
gpup_precinct ** precincts
Definition gpu_plugin_shared.h:252
uint8_t orientation
Definition gpu_plugin_shared.h:250
Definition gpu_plugin_shared.h:228
uint32_t y0
Definition gpu_plugin_shared.h:230
uint32_t numPix
Definition gpu_plugin_shared.h:233
uint32_t compressedDataLength
Definition gpu_plugin_shared.h:235
size_t numPasses
Definition gpu_plugin_shared.h:237
uint8_t numBitPlanes
Definition gpu_plugin_shared.h:236
uint8_t * compressedData
Definition gpu_plugin_shared.h:234
unsigned int sortedIndex
Definition gpu_plugin_shared.h:239
uint32_t x0
Definition gpu_plugin_shared.h:230
gpup_pass passes[GPUP_MAX_PASSES]
Definition gpu_plugin_shared.h:238
uint32_t y1
Definition gpu_plugin_shared.h:230
unsigned int * contextStream
Definition gpu_plugin_shared.h:231
uint32_t x1
Definition gpu_plugin_shared.h:230
Definition gpu_plugin_shared.h:424
const char * input_dir
Definition gpu_plugin_shared.h:425
GPUP_COMPRESS_USER_CALLBACK callback
Definition gpu_plugin_shared.h:428
gpup_compress_params * compress_parameters
Definition gpu_plugin_shared.h:427
const char * output_dir
Definition gpu_plugin_shared.h:426
Definition gpu_plugin_shared.h:409
const char * output_file_name
Definition gpu_plugin_shared.h:412
gpup_tile * tile
Definition gpu_plugin_shared.h:415
gpup_compress_params * compressor_parameters
Definition gpu_plugin_shared.h:413
const char * input_file_name
Definition gpu_plugin_shared.h:410
unsigned int error_code
Definition gpu_plugin_shared.h:417
void * host_data
Definition gpu_plugin_shared.h:418
gpup_stream_params stream_params
Definition gpu_plugin_shared.h:416
bool outputFileNameIsRelative
Definition gpu_plugin_shared.h:411
gpup_image * image
Definition gpu_plugin_shared.h:414
Definition gpu_plugin_shared.h:304
uint8_t csty
Definition gpu_plugin_shared.h:312
gpup_file_fmt decod_format
Definition gpu_plugin_shared.h:332
uint64_t max_comp_size
Definition gpu_plugin_shared.h:338
uint8_t newTilePartProgressionDivider
Definition gpu_plugin_shared.h:335
bool irreversible
Definition gpu_plugin_shared.h:320
uint8_t numgbits
Definition gpu_plugin_shared.h:313
bool allocationByQuality
Definition gpu_plugin_shared.h:310
uint32_t prch_init[GPUP_MAXRLVLS]
Definition gpu_plugin_shared.h:325
bool verbose
Definition gpu_plugin_shared.h:347
uint8_t mct
Definition gpu_plugin_shared.h:336
uint8_t subsampling_dx
Definition gpu_plugin_shared.h:330
uint32_t repeats
Definition gpu_plugin_shared.h:346
bool allocationByRateDistoration
Definition gpu_plugin_shared.h:308
uint16_t rsiz
Definition gpu_plugin_shared.h:339
uint32_t kernelBuildOptions
Definition gpu_plugin_shared.h:345
uint32_t res_spec
Definition gpu_plugin_shared.h:323
uint16_t numlayers
Definition gpu_plugin_shared.h:307
uint8_t numresolution
Definition gpu_plugin_shared.h:316
gpup_file_fmt cod_format
Definition gpu_plugin_shared.h:333
gpup_prog_order prog_order
Definition gpu_plugin_shared.h:314
char outfile[GPUP_PATH_LEN]
Definition gpu_plugin_shared.h:327
uint32_t numpocs
Definition gpu_plugin_shared.h:315
uint64_t max_cs_size
Definition gpu_plugin_shared.h:337
uint32_t image_offset_y0
Definition gpu_plugin_shared.h:329
bool sharedMemoryInterface
Definition gpu_plugin_shared.h:348
int32_t roi_compno
Definition gpu_plugin_shared.h:321
bool enableTilePartGeneration
Definition gpu_plugin_shared.h:334
uint32_t image_offset_x0
Definition gpu_plugin_shared.h:328
char infile[GPUP_PATH_LEN]
Definition gpu_plugin_shared.h:326
uint8_t subsampling_dy
Definition gpu_plugin_shared.h:331
uint32_t prcw_init[GPUP_MAXRLVLS]
Definition gpu_plugin_shared.h:324
uint32_t duration
Definition gpu_plugin_shared.h:344
uint8_t cblk_sty
Definition gpu_plugin_shared.h:319
double layer_distortion[GPUP_MAX_LAYERS]
Definition gpu_plugin_shared.h:311
uint32_t roi_shift
Definition gpu_plugin_shared.h:322
uint32_t ty0
Definition gpu_plugin_shared.h:306
uint32_t t_width
Definition gpu_plugin_shared.h:306
uint32_t cblockh_init
Definition gpu_plugin_shared.h:318
uint32_t cblockw_init
Definition gpu_plugin_shared.h:317
uint16_t framerate
Definition gpu_plugin_shared.h:340
uint32_t numThreads
Definition gpu_plugin_shared.h:342
double layer_rate[GPUP_MAX_LAYERS]
Definition gpu_plugin_shared.h:309
gpup_rate_control rateControlAlgorithm
Definition gpu_plugin_shared.h:341
uint32_t t_height
Definition gpu_plugin_shared.h:306
int32_t deviceId
Definition gpu_plugin_shared.h:343
uint32_t tx0
Definition gpu_plugin_shared.h:306
bool tile_size_on
Definition gpu_plugin_shared.h:305
Definition gpu_plugin_shared.h:432
gpup_decompress_params * decompressor_parameters
Definition gpu_plugin_shared.h:441
const char * output_file_name
Definition gpu_plugin_shared.h:436
void * codec
Definition gpu_plugin_shared.h:439
gpup_codec_fmt decod_format
Definition gpu_plugin_shared.h:437
gpup_header_info header_info
Definition gpu_plugin_shared.h:440
unsigned int error_code
Definition gpu_plugin_shared.h:445
bool plugin_owns_image
Definition gpu_plugin_shared.h:443
gpup_image * image
Definition gpu_plugin_shared.h:442
GPUP_INIT_DECOMPRESSORS init_decompressors_func
Definition gpu_plugin_shared.h:434
const char * input_file_name
Definition gpu_plugin_shared.h:435
size_t deviceId
Definition gpu_plugin_shared.h:433
gpup_file_fmt cod_format
Definition gpu_plugin_shared.h:438
void * format_private
Definition gpu_plugin_shared.h:450
uint32_t decompress_flags
Definition gpu_plugin_shared.h:446
gpup_tile * tile
Definition gpu_plugin_shared.h:444
uint32_t full_image_y0
Definition gpu_plugin_shared.h:448
uint32_t full_image_x0
Definition gpu_plugin_shared.h:447
void * user_data
Definition gpu_plugin_shared.h:449
Definition gpu_plugin_shared.h:356
uint8_t reduce
Definition gpu_plugin_shared.h:357
uint16_t layers_to_decompress_
Definition gpu_plugin_shared.h:358
Definition gpu_plugin_shared.h:362
char infile[GPUP_PATH_LEN]
Definition gpu_plugin_shared.h:364
void * user_data
Definition gpu_plugin_shared.h:375
gpup_codec_fmt decod_format
Definition gpu_plugin_shared.h:366
double dw_x0
Definition gpu_plugin_shared.h:368
double dw_y0
Definition gpu_plugin_shared.h:368
uint32_t numThreads
Definition gpu_plugin_shared.h:373
char outfile[GPUP_PATH_LEN]
Definition gpu_plugin_shared.h:365
double dw_y1
Definition gpu_plugin_shared.h:368
bool verbose_
Definition gpu_plugin_shared.h:374
gpup_decompress_core_params core
Definition gpu_plugin_shared.h:363
uint32_t kernelBuildOptions
Definition gpu_plugin_shared.h:371
int32_t deviceId
Definition gpu_plugin_shared.h:370
gpup_file_fmt cod_format
Definition gpu_plugin_shared.h:367
uint32_t repeats
Definition gpu_plugin_shared.h:372
double dw_x1
Definition gpu_plugin_shared.h:368
uint16_t tileIndex
Definition gpu_plugin_shared.h:369
Definition gpu_plugin_shared.h:196
bool owns_data
Definition gpu_plugin_shared.h:205
uint32_t y0
Definition gpu_plugin_shared.h:197
int32_t * data
Definition gpu_plugin_shared.h:204
uint8_t dx
Definition gpu_plugin_shared.h:201
uint32_t h
Definition gpu_plugin_shared.h:200
uint32_t stride
Definition gpu_plugin_shared.h:199
bool sgnd
Definition gpu_plugin_shared.h:203
uint32_t w
Definition gpu_plugin_shared.h:198
uint8_t dy
Definition gpu_plugin_shared.h:201
uint32_t x0
Definition gpu_plugin_shared.h:197
uint8_t prec
Definition gpu_plugin_shared.h:202
Definition gpu_plugin_shared.h:209
gpup_color_space color_space
Definition gpu_plugin_shared.h:212
uint32_t y0
Definition gpu_plugin_shared.h:210
uint32_t y1
Definition gpu_plugin_shared.h:210
gpup_image_comp * comps
Definition gpu_plugin_shared.h:213
uint16_t numcomps
Definition gpu_plugin_shared.h:211
uint32_t x0
Definition gpu_plugin_shared.h:210
uint32_t x1
Definition gpu_plugin_shared.h:210
Definition gpu_plugin_shared.h:383
const char * license
Definition gpu_plugin_shared.h:386
int32_t deviceId
Definition gpu_plugin_shared.h:384
bool verbose
Definition gpu_plugin_shared.h:385
const char * server
Definition gpu_plugin_shared.h:387
Definition gpu_plugin_shared.h:221
size_t length
Definition gpu_plugin_shared.h:224
size_t rate
Definition gpu_plugin_shared.h:223
double distortionDecrease
Definition gpu_plugin_shared.h:222
Definition gpu_plugin_shared.h:243
uint64_t numBlocks
Definition gpu_plugin_shared.h:244
gpup_code_block ** blocks
Definition gpu_plugin_shared.h:245
Definition gpu_plugin_shared.h:257
gpup_band ** band
Definition gpu_plugin_shared.h:260
size_t level
Definition gpu_plugin_shared.h:258
size_t numBands
Definition gpu_plugin_shared.h:259
Definition gpu_plugin_shared.h:395
size_t buf_len
Definition gpu_plugin_shared.h:398
const char * file
Definition gpu_plugin_shared.h:396
size_t buf_compressed_len
Definition gpu_plugin_shared.h:399
uint8_t * buf
Definition gpu_plugin_shared.h:397
Definition gpu_plugin_shared.h:264
size_t numResolutions
Definition gpu_plugin_shared.h:265
gpup_resolution ** resolutions
Definition gpu_plugin_shared.h:266
Definition gpu_plugin_shared.h:270
gpup_tile_component ** tileComponents
Definition gpu_plugin_shared.h:273
uint32_t decompress_flags
Definition gpu_plugin_shared.h:271
size_t numComponents
Definition gpu_plugin_shared.h:272