Go to the documentation of this file.
62 #define J2K_CP_CSTY_PRT 0x01
63 #define J2K_CP_CSTY_SOP 0x02
64 #define J2K_CP_CSTY_EPH 0x04
65 #define J2K_CCP_CSTY_PRT 0x01
66 #define J2K_CCP_QNTSTY_NOQNT 0 // no quantization
67 #define J2K_CCP_QNTSTY_SIQNT 1 // derived quantization
68 #define J2K_CCP_QNTSTY_SEQNT 2 // expounded quantization
70 #define GRK_J2K_DEFAULT_CBLK_DATA_SIZE 8192
72 #define J2K_MS_SOC 0xff4f
73 #define J2K_MS_SOT 0xff90
74 #define J2K_MS_SOD 0xff93
75 #define J2K_MS_EOC 0xffd9
76 #define J2K_MS_CAP 0xff50
77 #define J2K_MS_SIZ 0xff51
78 #define J2K_MS_COD 0xff52
79 #define J2K_MS_COC 0xff53
80 #define J2K_MS_RGN 0xff5e
81 #define J2K_MS_QCD 0xff5c
82 #define J2K_MS_QCC 0xff5d
83 #define J2K_MS_POC 0xff5f
84 #define J2K_MS_TLM 0xff55
85 #define J2K_MS_PLM 0xff57
86 #define J2K_MS_PLT 0xff58
87 #define J2K_MS_PPM 0xff60
88 #define J2K_MS_PPT 0xff61
89 #define J2K_MS_SOP 0xff91
90 #define J2K_MS_EPH 0xff92
91 #define J2K_MS_CRG 0xff63
92 #define J2K_MS_COM 0xff64
93 #define J2K_MS_CBD 0xff78
94 #define J2K_MS_MCC 0xff75
95 #define J2K_MS_MCT 0xff74
96 #define J2K_MS_MCO 0xff77
106 bool grk_image_single_component_data_alloc( grk_image_comp *image);
108 struct TileProcessor;
145 uint32_t start_x, uint32_t end_x, uint32_t start_y, uint32_t end_y) = 0;
153 virtual bool compress_tile(uint16_t tile_index, uint8_t *p_data, uint64_t data_size) = 0;
157 virtual void dump(int32_t flag, FILE *out_stream) = 0;
189 bool compress_tile(uint16_t tile_index, uint8_t *p_data, uint64_t data_size);
193 void dump(int32_t flag, FILE *out_stream);
273 bool exec(std::vector<j2k_procedure> &p_procedure_list);
295 bool read_unk(uint16_t *output_marker);
~CodeStream()
Definition: CodeStream.cpp:985
@ J2K_DEC_STATE_ERR
the decoding process has encountered an error
Definition: CodingParams.h:295
bool j2k_read_sot(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size)
Read SOT (Start of tile part) marker.
Definition: markers.cpp:1163
bool j2k_init_mct_encoding(TileCodingParams *p_tcp, grk_image *p_image)
Definition: CodeStream.cpp:451
Code stream index info.
Definition: grok.h:1147
void GRK_CALLCONV grk_image_single_component_data_free(grk_image_comp *comp)
Deallocate data for single image component.
Definition: grok.cpp:569
const uint32_t default_numbers_segments
Definition: CodeStream.h:57
virtual void init_decompress(grk_dparameters *p_param)=0
Set up decompressor function handler.
uint16_t m_total_tile_parts
Total num of tile parts in whole image = num tiles* num tileparts in each tile.
Definition: CodingParams.h:352
bool set_decompress_window(grk_image *p_image, uint32_t start_x, uint32_t start_y, uint32_t end_x, uint32_t end_y)
Sets the given area to be decompressed.
Definition: CodeStream.cpp:1846
EncoderState m_encoder
Definition: CodeStream.h:300
@ J2K_DEC_STATE_TPH_SOT
the decoding process is in a tile part header and expects a SOT marker
Definition: CodingParams.h:287
uint32_t t_width
XTsiz.
Definition: grok.h:447
uint16_t compno0
Definition: grok.h:374
GRK_PROG_ORDER enum_prog
Definition: CodeStream.cpp:29
@ J2K_DEC_STATE_NONE
no decompress state
Definition: CodingParams.h:283
bool mct_validation(void)
Definition: CodeStream.cpp:3255
uint16_t cp_layer
Set the maximum number of quality layers to decompress.
Definition: grok.h:685
uint8_t cblk_sty
code-block mode
Definition: CodingParams.h:63
const uint32_t grk_marker_length
Definition: CodeStream.h:33
Definition: ThreadPool.hpp:37
uint32_t m_nb_mct_records
the number of mct records.
Definition: CodingParams.h:182
const GRK_PROG_ORDER GRK_COMP_PARAM_DEFAULT_PROG_ORDER
Definition: CodeStream.h:42
bool m_tp_on
Enabling Tile part generation.
Definition: CodingParams.h:216
const uint32_t default_number_mct_records
Definition: CodeStream.h:60
virtual bool set_decompress_window(grk_image *p_image, uint32_t start_x, uint32_t end_x, uint32_t start_y, uint32_t end_y)=0
Set decompress window function handler.
grk_codestream_info_v2 * j2k_get_cstr_info(CodeStream *codeStream)
Get the code stream info from a JPEG2000 codec.
Definition: Dump.cpp:282
bool decompress_tile_t1(void)
T1 decompress.
Definition: TileProcessor.cpp:881
uint32_t t_width
XTsiz.
Definition: CodingParams.h:247
int32_t roi_compno
region of interest: affected component in [0..3]; -1 indicates no ROI
Definition: grok.h:489
bool decompress(grk_plugin_tile *tile, grk_image *p_image)
Definition: CodeStream.cpp:1113
uint32_t rateControlAlgorithm
Definition: CodingParams.h:222
uint32_t rateControlAlgorithm
Definition: grok.h:552
bool j2k_read_soc(CodeStream *codeStream)
Reads a SOC marker (Start of Codestream)
Definition: markers.cpp:148
Progression order changes.
Definition: grok.h:371
grk_palette_data * palette
Definition: grok.h:608
bool copy_decompressed_tile_to_output_image(grk_image *p_output_image)
tile_data stores only the decompressed resolutions, in the actual precision of the decompressed image...
Definition: TileProcessor.cpp:1236
uint32_t states
value of the state when the marker can appear
Definition: CodeStream.h:120
uint16_t m_marker_scratch_size
Definition: CodeStream.h:356
bool j2k_read_plm(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size)
Reads a PLM marker (Packet length, main header marker)
Definition: markers.cpp:970
virtual bool read_header(grk_header_info *header_info, grk_image **p_image)=0
Main header reading function handler.
DecoderState m_decompressor
Definition: CodeStream.h:299
EncodingParams m_enc
Definition: CodingParams.h:267
#define GRK_PROFILE_CINEMA_4K
Definition: grok.h:127
BufferedStream * getStream()
Definition: CodeStream.cpp:999
bool j2k_read_mcc(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size)
Reads a MCC marker (Multiple Component Collection)
Definition: markers.cpp:1616
#define J2K_MS_PPM
PPM marker value.
Definition: CodeStream.h:87
const uint32_t max_passes_per_segment
Definition: CodeStream.h:48
uint32_t stride
data stride
Definition: grok.h:856
GRK_PROG_ORDER prg
progression order
Definition: CodingParams.h:130
Tile compressor/decompressor.
Definition: TileProcessor.h:63
static ThreadPool * get()
Definition: ThreadPool.hpp:51
uint8_t numStepSizes
Definition: CodingParams.h:78
int32_t m_tile_ind_to_dec
index of single tile to decompress; !!! initialized to -1 !!!
Definition: CodeStream.h:352
Tile coding parameters : this structure is used to store coding/decoding parameters common to all til...
Definition: CodingParams.h:121
const uint32_t max_num_tile_parts
Definition: CodeStream.h:51
bool POC
indicates if a POC marker has been used
Definition: CodingParams.h:197
void generate(uint8_t guard_bits, uint32_t decomps, bool is_reversible, uint32_t max_bit_depth, bool color_transform, bool is_signed)
Definition: HTParams.cpp:182
double distoratio[100]
fixed_quality
Definition: CodingParams.h:157
bool get_sot_values(uint8_t *p_header_data, uint32_t header_size, uint16_t *tile_no, uint32_t *p_tot_len, uint8_t *p_current_part, uint8_t *p_num_parts)
Reads values from a SOT marker (Start of tile-part)
Definition: SOTMarker.cpp:76
@ GRK_LRCP
layer-resolution-component-precinct order
Definition: grok.h:291
static void lupInvert(float *pSrcMatrix, float *pDestMatrix, uint32_t nb_compo, uint32_t *pPermutations, float *p_src_temp, float *p_dest_temp, float *p_swap_area)
LUP inversion (call with the result of lupDecompose)
Definition: CodeStream.cpp:911
MCT data.
Definition: CodingParams.h:96
TileComponentCodingParams * tccps
tile-component coding parameters
Definition: CodingParams.h:163
#define GRK_EXTENSION_NONE
JPEG 2000 Part-2 extensions.
Definition: grok.h:148
bool exec(std::vector< j2k_procedure > &p_procedure_list)
Executes the given procedures on the given codec.
Definition: CodeStream.cpp:2668
grk_jp2_color color
Definition: grok.h:896
bool read_header_procedure(void)
Definition: CodeStream.cpp:2395
#define J2K_MS_RGN
RGN marker value.
Definition: CodeStream.h:80
uint8_t resno1
Definition: grok.h:377
Definition: grk_exceptions.h:28
uint32_t tx0
XTOsiz.
Definition: CodingParams.h:243
uint32_t t_grid_width
number of tiles in width
Definition: CodingParams.h:256
bool j2k_write_poc(CodeStream *codeStream)
Writes the POC marker (Progression Order Change)
Definition: markers.cpp:781
bool decompress_tiles(void)
Definition: CodeStream.cpp:2701
const uint32_t tlm_len_per_tile_part
Definition: CodeStream.h:37
Byte input-output stream.
Definition: BufferedStream.h:38
bool decompress_tile_t2(TileProcessor *tileProcessor)
Definition: CodeStream.cpp:2676
bool m_fixed_quality
allocation by fixed_quality
Definition: CodingParams.h:214
@ J2K_DEC_STATE_MH_SOC
a SOC marker is expected
Definition: CodingParams.h:284
static bool is_cinema_compliant(grk_image *image, uint16_t rsiz)
Definition: Profile.cpp:1039
grk_image_comp * comps
image components
Definition: grok.h:895
void init_decompress(grk_dparameters *p_param)
Set up decompressor function handler.
Definition: CodeStream.cpp:1229
grk_rectangle< int64_t > grk_rect
Definition: util.h:47
#define J2K_MS_EOC
EOC marker value.
Definition: CodeStream.h:75
Tile-component coding parameters.
Definition: CodingParams.h:49
static bool is_imf_compliant(grk_cparameters *parameters, grk_image *image)
Definition: Profile.cpp:147
double tcp_rates[100]
rates of layers, expressed as compression ratios.
Definition: grok.h:471
CodeStream(bool decompress, BufferedStream *stream)
Definition: CodeStream.cpp:932
uint64_t m_last_sot_read_pos
Position of the last SOT marker read.
Definition: CodingParams.h:329
uint32_t m_is_irreversible
Definition: CodingParams.h:112
static bool j2k_calculate_tp(CodingParams *cp, uint16_t *p_nb_tile_parts, grk_image *image)
Calculates the total number of tile parts needed by the compressor to compress such an image.
Definition: CodeStream.cpp:685
void GRK_WARN(const char *fmt,...)
Definition: logger.cpp:49
void destroy()
Definition: CodingParams.cpp:26
bool j2k_read_tlm(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size)
Reads a TLM marker (Tile Length Marker)
Definition: markers.cpp:2063
Definition: grk_exceptions.h:24
bool update_rates(void)
Definition: CodeStream.cpp:3065
#define J2K_MS_CBD
CBD marker value.
Definition: CodeStream.h:93
bool end_compress(void)
Definition: CodeStream.cpp:1834
static bool lupDecompose(float *matrix, uint32_t *permutations, float *p_swap_area, uint32_t nb_compo)
LUP decomposition.
Definition: CodeStream.cpp:761
@ J2K_DEC_STATE_TPH
the decoding process is in a tile part header
Definition: CodingParams.h:289
virtual grk_codestream_info_v2 * get_cstr_info(void)=0
void dump(int32_t flag, FILE *out_stream)
Definition: CodeStream.cpp:1954
void j2k_destroy_cstr_index(grk_codestream_index *p_cstr_ind)
Destroys a code stream index structure.
Definition: Dump.cpp:502
void * grk_calloc(size_t num, size_t size)
Allocate a memory block with elements initialized to 0.
Definition: MemManager.cpp:111
union grk::CodingParams::@0 m_coding_params
bool tile_size_on
size of tile: tile_size_on = false (not in argument) or = true (in argument)
Definition: grok.h:441
uint32_t cblockh_init
initial code block height (default to 64)
Definition: grok.h:479
GRK_PROG_ORDER prog_order
progression order (default GRK_LRCP)
Definition: grok.h:462
uint32_t m_nb_tile_parts_correction
Definition: CodeStream.h:364
static bool j2k_read_header_procedure(CodeStream *codeStream)
The read header procedure.
Definition: CodeStream.cpp:361
bool j2k_write_qcd(CodeStream *codeStream)
Writes the QCD marker (quantization default)
Definition: markers.cpp:633
grk_tile * tile
info on image tile
Definition: TileProcessor.h:146
uint32_t prch_init[GRK_J2K_MAXRLVLS]
initial precinct height
Definition: grok.h:497
void pull(grk_stepsize *stepptr, bool reversible)
Definition: HTParams.cpp:157
grk_codestream_info_v2 * get_cstr_info(void)
Definition: CodeStream.cpp:1958
TileProcessor * currentProcessor(void)
Definition: CodeStream.cpp:1017
static j2k_prog_order j2k_prog_order_list[]
Definition: CodeStream.cpp:33
grk_poc pocs[32]
progression order changes
Definition: CodingParams.h:141
#define GRK_PROFILE_CINEMA_S4K
Definition: grok.h:129
uint32_t t_grid_height
number of tiles in height
Definition: CodingParams.h:258
bool writeTLM
Definition: CodingParams.h:220
grk_mct_data * m_offset_array
Definition: CodingParams.h:111
@ GRK_CLRSPC_SYCC
standard YCC (YUV)
Definition: grok.h:322
uint32_t numpocs
number of progression order changes
Definition: CodingParams.h:139
bool grk_image_single_component_data_alloc(grk_image_comp *comp)
Allocate data for single image component.
Definition: CodeStream.cpp:200
uint16_t id
marker value
Definition: CodeStream.h:118
uint8_t m_tile_part_index
Compressing Only index of tile part being currently coding.
Definition: TileProcessor.h:132
uint8_t tp_on
Tile part generation.
Definition: grok.h:521
bool compress_tile_part(uint32_t *tile_bytes_written)
Compress tile part.
Definition: TileProcessor.cpp:811
#define GRK_EXTENSION_MCT
Definition: grok.h:149
const char *GRK_CALLCONV grk_version(void)
library version
Definition: grok.cpp:140
uint8_t csty
coding style
Definition: CodingParams.h:128
const uint32_t max_precision_jpeg_2000
Definition: CodeStream.h:46
static bool j2k_update_rates(CodeStream *codeStream)
Updates the rates of the tcp.
Definition: CodeStream.cpp:621
#define J2K_CP_CSTY_PRT
Definition: CodeStream.h:62
uint16_t m_curr_marker
Only valid for decoding.
Definition: CodeStream.h:360
bool j2k_write_eoc(CodeStream *codeStream)
Writes the EOC marker (End of Codestream)
Definition: markers.cpp:1205
const uint32_t default_header_size
Definition: CodeStream.h:58
void grk_free(void *ptr)
Deallocates or frees a memory block.
Definition: MemManager.cpp:141
uint8_t numresolutions
number of resolutions
Definition: CodingParams.h:54
grk_image * m_input_image
internal/private encoded / decompressed image
Definition: CodeStream.h:303
virtual bool init_compress(grk_cparameters *p_param, grk_image *p_image)=0
uint32_t prcw_init[GRK_J2K_MAXRLVLS]
initial precinct width
Definition: grok.h:495
bool(* marker_callback)(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size)
Definition: CodeStream.h:111
uint16_t numcomps
number of components in the image
Definition: grok.h:891
grk_codestream_index * cstr_index
helper used to write the index file
Definition: CodeStream.h:318
#define J2K_MS_MCT
MCT marker value.
Definition: CodeStream.h:95
virtual grk_codestream_index * get_cstr_index(void)=0
uint32_t m_index
Definition: CodingParams.h:108
Plugin tile.
Definition: grok.h:1240
#define J2K_MS_PPT
PPT marker value.
Definition: CodeStream.h:88
TileComponentWindowBuffer< int32_t > * getBuffer() const
Definition: TileComponent.cpp:321
J2K_MCT_ELEMENT_TYPE m_element_type
Definition: CodingParams.h:97
#define GRK_IS_BROADCAST(v)
Definition: grok.h:214
bool m_nb_tile_parts_correction_checked
Definition: CodeStream.h:363
const uint32_t MCT_ELEMENT_SIZE[]
Definition: markers.h:26
bool j2k_write_siz(CodeStream *codeStream)
Writes the SIZ marker (image and tile size)
Definition: markers.cpp:178
uint8_t qmfbid
discrete wavelet transform identifier
Definition: CodingParams.h:65
bool compress_tile(uint16_t tile_index, uint8_t *p_data, uint64_t data_size)
Definition: CodeStream.cpp:1800
bool write(void)
Writes the SOT marker (Start of tile-part)
Definition: SOTMarker.cpp:43
bool j2k_read_siz(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size)
Reads a SIZ marker (image and tile size)
Definition: markers.cpp:286
uint32_t roi_shift
region of interest: upshift value
Definition: grok.h:491
char * j2k_convert_progression_order(GRK_PROG_ORDER prg_order)
Converts an enum type progression order to string type.
Definition: CodeStream.cpp:625
uint32_t w
data width
Definition: grok.h:854
uint32_t t_height
YTsiz.
Definition: CodingParams.h:249
#define J2K_MS_QCD
QCD marker value.
Definition: CodeStream.h:81
grk_image * m_output_image
Definition: CodeStream.h:306
Definition: CodingParams.h:346
TileProcessor * m_tileProcessor
current TileProcessor
Definition: CodeStream.h:342
uint32_t grk_make_aligned_width(uint32_t width)
Definition: MemManager.cpp:40
param_qcd qcd
Definition: CodingParams.h:200
bool wholeTileDecompress
Definition: CodeStream.h:361
const uint32_t default_number_mcc_records
Definition: CodeStream.h:59
double * mct_norms
compressing norms
Definition: CodingParams.h:174
void j2k_dump(CodeStream *codeStream, int32_t flag, FILE *out_stream)
Dump some elements from the J2K decompression structure .
Definition: Dump.cpp:87
bool writePLT
Definition: grok.h:558
bool j2k_read_crg(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size)
Reads a CRG marker (Component registration)
Definition: markers.cpp:940
Definition: CodingParams.h:299
static void set_cinema_parameters(grk_cparameters *parameters, grk_image *image)
Definition: Profile.cpp:899
bool j2k_read_mco(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size)
Reads a MCO marker (Multiple Component Transform Ordering)
Definition: markers.cpp:1873
bool j2k_read_ppt(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size)
Reads a PPT marker (Packed packet headers, tile-part header)
Definition: markers.cpp:1034
void GRK_CALLCONV grk_image_all_components_data_free(grk_image *image)
Deallocate all component data for an image.
Definition: grok.cpp:561
uint8_t * m_marker_scratch
Definition: CodeStream.h:355
#define J2K_CCP_QNTSTY_NOQNT
Definition: CodeStream.h:66
float * m_mct_decoding_matrix
the mct decoding matrix
Definition: CodingParams.h:176
#define GRK_MAX_COMMENT_LENGTH
Definition: grok.h:351
bool do_decompress(grk_image *p_image)
Definition: CodeStream.cpp:1102
uint16_t compno1
Definition: grok.h:378
grk_image * grk_image_create0(void)
Definition: CodeStream.cpp:196
bool read_short(uint16_t *val)
Definition: CodeStream.cpp:2031
bool j2k_write_tlm_end(CodeStream *codeStream)
End writing the updated tlm.
Definition: markers.cpp:2087
#define GRK_IS_IMF(v)
Definition: grok.h:245
uint32_t res_spec
Definition: grok.h:493
virtual bool end_decompress(void)=0
Reading function used after code stream if necessary.
void j2k_write_float_to_int16(const void *p_src_data, void *p_dest_data, uint64_t nb_elem)
Definition: markers.cpp:86
bool j2k_write_cod(CodeStream *codeStream)
Writes the COD marker (Coding style default)
Definition: markers.cpp:385
#define J2K_MS_SOD
SOD marker value.
Definition: CodeStream.h:74
virtual bool end_compress(void)=0
bool get_end_header(void)
Definition: CodeStream.cpp:2959
static bool j2k_decompress_validation(CodeStream *codeStream)
The default decoding validation procedure without any extension.
Definition: CodeStream.cpp:356
BufferedStream * m_stream
Definition: CodeStream.h:344
bool init_compress(grk_cparameters *p_param, grk_image *p_image)
Definition: CodeStream.cpp:1255
#define GRK_PROFILE_CINEMA_S2K
Definition: grok.h:128
enum _GRK_PROG_ORDER GRK_PROG_ORDER
Progression order.
TileComponent * comps
Definition: TileProcessor.h:35
uint32_t numpocs
number of progression order changes (POCs), default to 0
Definition: grok.h:466
size_t cp_num_comments
Definition: grok.h:458
Definition: CodeStream.cpp:28
Coding parameters.
Definition: CodingParams.h:235
void * grk_aligned_malloc(size_t size)
Allocate memory aligned to a 16 byte boundary.
Definition: MemManager.cpp:119
uint8_t cblkh
log2(code-blocks height)
Definition: CodingParams.h:58
bool j2k_read_com(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size)
Reads a COM marker (comments)
Definition: markers.cpp:335
uint8_t m_reduce
if != 0, then original dimension divided by 2^(reduce); if == 0 or not used, image is decompressed to...
Definition: CodingParams.h:227
const uint32_t max_num_components
Definition: CodeStream.h:47
Definition: CodeStream.h:164
static bool j2k_init_info(CodeStream *codeStream)
Inits the Info.
Definition: CodeStream.cpp:600
bool j2k_read_plt(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size)
Reads a PLT marker (Packet length, tile-part header)
Definition: markers.cpp:988
uint32_t pino
Compressing Only Current packet iterator number.
Definition: TileProcessor.h:143
uint8_t resno0
Resolution num start, component num start, given by POC.
Definition: grok.h:373
#define J2K_MS_COD
COD marker value.
Definition: CodeStream.h:78
bool init_header_writing(void)
Definition: CodeStream.cpp:2362
uint32_t ty0
YTOsiz.
Definition: grok.h:445
bool j2k_write_cap(CodeStream *codeStream)
Writes the CAP marker.
Definition: markers.cpp:227
CodingParams m_cp
Coding parameters.
Definition: CodeStream.h:309
bool j2k_write_tlm_begin(CodeStream *codeStream)
Begin writing the TLM marker (Tile Length Marker)
Definition: markers.cpp:2073
size_t num_threads()
Definition: ThreadPool.hpp:49
Image component.
Definition: grok.h:848
@ J2K_DEC_STATE_NO_EOC
the decoding process must not expect a EOC marker because the code stream is truncated
Definition: CodingParams.h:290
Definition: CodeStream.h:113
grk_codestream_index * j2k_create_cstr_index(void)
Definition: Dump.cpp:483
const uint32_t sot_marker_segment_len
Definition: CodeStream.h:32
bool j2k_write_soc(CodeStream *codeStream)
Writes the SOC marker (Start Of Codestream)
Definition: markers.cpp:136
const uint32_t SPCod_SPCoc_len
Definition: CodeStream.h:35
#define J2K_CCP_CSTY_PRT
Definition: CodeStream.h:65
uint32_t dy
YRsiz: vertical separation of a sample of with component with respect to the reference grid.
Definition: grok.h:852
float * m_mct_coding_matrix
the mct coding matrix
Definition: CodingParams.h:178
static const j2k_mct_function j2k_mct_write_functions_from_float[]
Definition: CodeStream.cpp:38
uint16_t getPocSize(uint32_t nb_comp, uint32_t nb_poc)
Definition: markers.cpp:775
Core decompress parameters.
Definition: grok.h:670
uint32_t m_index
Definition: CodingParams.h:99
#define J2K_MS_SOT
SOT marker value.
Definition: CodeStream.h:73
uint16_t layno1
Layer num end, resolution num end, component num end, given by POC.
Definition: grok.h:376
uint32_t tx0
XTOsiz.
Definition: grok.h:443
char * comment[GRK_NUM_COMMENTS_SUPPORTED]
Definition: CodingParams.h:252
bool j2k_add_mhmarker(grk_codestream_index *cstr_index, uint32_t type, uint64_t pos, uint32_t len)
Add main header marker information.
Definition: markers.cpp:106
Component mappings: component index, mapping type, palette column.
Definition: grok.h:583
static bool j2k_check_poc_val(const grk_poc *p_pocs, uint32_t nb_pocs, uint32_t nb_resolutions, uint32_t numcomps, uint32_t numlayers)
Checks the progression order changes values.
Definition: CodeStream.cpp:383
const uint32_t GRK_COMP_PARAM_DEFAULT_CBLOCKW
Definition: CodeStream.h:40
@ GRK_RPCL
resolution-precinct-component-layer order
Definition: grok.h:293
bool write_psot(uint32_t tile_part_bytes_written)
Definition: SOTMarker.cpp:32
Code stream info v2.
Definition: grok.h:1090
grk_plugin_tile * current_plugin_tile
Definition: CodeStream.h:362
bool m_first_poc_tile_part
Compressing Only true for first POC tile part, otherwise false.
Definition: TileProcessor.h:126
uint16_t rsiz
RSIZ value To be used to combine GRK_PROFILE_*, GRK_EXTENSION_* and (sub)levels values.
Definition: grok.h:538
bool writePLT
Definition: CodingParams.h:218
bool j2k_read_poc(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size)
Reads a POC marker (Progression Order Change)
Definition: markers.cpp:846
bool j2k_read_cap(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size)
Reads a CAP marker.
Definition: markers.cpp:193
bool decompress_tile_t2(ChunkBuffer *src_buf)
T2 decompress.
Definition: TileProcessor.cpp:853
const uint32_t max_num_tile_parts_per_tile
Definition: CodeStream.h:50
auto enqueue(F &&f, Args &&... args) -> std::future< typename std::invoke_result< F, Args... >::type >
Definition: ThreadPool.hpp:151
char str_prog[5]
Definition: CodeStream.cpp:30
virtual bool decompress_tile(grk_image *p_image, uint16_t tile_index)=0
decompress tile
bool sgnd
Definition: grok.h:867
std::map< uint16_t, marker_handler * > marker_map
Definition: CodeStream.h:339
grk_mct_data * m_mct_records
mct records
Definition: CodingParams.h:180
#define J2K_MS_PLT
PLT marker value.
Definition: CodeStream.h:86
#define GRK_IS_CINEMA(v)
Definition: grok.h:152
std::vector< j2k_procedure > m_procedure_list
the list of procedures to exec
Definition: CodeStream.h:312
bool cp_disto_alloc
allocation by rate/distortion
Definition: grok.h:451
static bool j2k_decompress_tiles(CodeStream *codeStream)
Read the tiles.
Definition: CodeStream.cpp:372
bool j2k_read_cod(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size)
Reads a COD marker (Coding Style defaults)
Definition: markers.cpp:430
bool decompress_tile(grk_image *p_image, uint16_t tile_index)
decompress tile
Definition: CodeStream.cpp:1132
uint32_t m_nb_mcc_records
the number of mct records.
Definition: CodingParams.h:188
uint8_t numresolution
number of resolutions
Definition: grok.h:475
uint32_t y0
YOsiz: vertical offset from the origin of the reference grid to the top side of the image area.
Definition: grok.h:885
bool decompress_validation(void)
Definition: CodeStream.cpp:2848
bool j2k_write_all_coc(CodeStream *codeStream)
Writes COC marker for each component.
Definition: markers.cpp:1296
void transfer(T **buffer, bool *owns, uint32_t *stride)
Definition: TileComponentWindowBuffer.h:459
bool compress_validation(void)
Definition: CodeStream.cpp:3152
#define GRK_PROFILE_NONE
JPEG 2000 Profiles, see Table A.10 from 15444-1 (updated in various AMDs)
Definition: grok.h:123
uint8_t tp_flag
Flag for tile part generation.
Definition: grok.h:523
#define GRK_DECODE_POST_T1
Definition: grok.h:1233
@ GRK_PCRL
precinct-component-resolution-layer order
Definition: grok.h:294
bool j2k_write_com(CodeStream *codeStream)
Writes the COM marker (comment)
Definition: markers.cpp:293
bool j2k_read_qcc(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size)
Reads a QCC marker (Quantization component)
Definition: markers.cpp:731
Copyright (C) 2016-2020 Grok Image Compression Inc.
Definition: BitIO.cpp:23
bool process_marker(const marker_handler *marker_handler, uint16_t marker_size)
Definition: CodeStream.cpp:1970
int32_t tileIndexToDecode()
Definition: CodeStream.cpp:1003
int16_t m_tile_part_index
Definition: CodingParams.h:166
static bool j2k_copy_default_tcp(CodeStream *codeStream)
Copies the decoding tile parameters onto all the tile parameters.
Definition: CodeStream.cpp:617
static void grk_copy_image_header(const grk_image *image_src, grk_image *image_dest)
Copy only header of image and its component header (no data are copied) if dest image have data,...
Definition: CodeStream.cpp:228
void * mct_data
Naive implementation of MCT restricted to a single reversible array based compressing without offset ...
Definition: grok.h:528
uint8_t qntsty
quantisation style
Definition: CodingParams.h:74
uint8_t m_tp_flag
Flag determining tile part generation.
Definition: CodingParams.h:210
uint32_t prch[GRK_J2K_MAXRLVLS]
precinct height (power of 2 exponent)
Definition: CodingParams.h:86
#define J2K_MS_CAP
CAP marker value.
Definition: CodeStream.h:76
bool copy_default_tcp(void)
Definition: CodeStream.cpp:2965
#define J2K_CCP_QNTSTY_SIQNT
Definition: CodeStream.h:67
int32_t m_dc_level_shift
the dc_level_shift
Definition: CodingParams.h:88
uint32_t prcw[GRK_J2K_MAXRLVLS]
precinct width (power of 2 exponent)
Definition: CodingParams.h:84
bool j2k_merge_ppt(TileCodingParams *p_tcp)
Merges all PPT markers read (Packed packet headers, tile-part header)
Definition: markers.cpp:1112
@ J2K_DEC_STATE_EOC
the decoding process has encountered the EOC marker
Definition: CodingParams.h:294
void * grk_malloc(size_t size)
Allocate an uninitialized memory block.
Definition: MemManager.cpp:105
MCC decorrelation data.
Definition: CodingParams.h:107
TileCodingParams * tcps
tile coding parameters
Definition: CodingParams.h:263
static uint64_t j2k_get_num_tp(CodingParams *cp, uint32_t pino, uint16_t tileno)
Gets the number of tile parts used for the given change of progression (if any) and the given tile.
Definition: CodeStream.cpp:635
uint32_t h
data height
Definition: grok.h:858
bool isDecodingTilePartHeader()
Definition: CodeStream.cpp:2019
#define GRK_JPH_RSIZ_FLAG
for JPH, bit 14 of RSIZ must be set to 1
Definition: grok.h:102
#define J2K_MS_TLM
TLM marker value.
Definition: CodeStream.h:84
bool cp_is_binary_comment[GRK_NUM_COMMENTS_SUPPORTED]
Definition: grok.h:457
bool j2k_allocate_tile_element_cstr_index(CodeStream *codeStream)
Definition: Dump.cpp:461
@ GRK_CLRSPC_EYCC
extended YCC
Definition: grok.h:323
@ MCT_TYPE_FLOAT
MCT data is stored as signed integers.
Definition: CodingParams.h:34
const uint32_t GRK_COMP_PARAM_DEFAULT_CBLOCKH
Definition: CodeStream.h:41
#define J2K_MS_SIZ
SIZ marker value.
Definition: CodeStream.h:77
#define GRK_IS_STORAGE(v)
Definition: grok.h:153
bool irreversible
1 : use the irreversible DWT 9-7, 0 : use lossless compression (default)
Definition: grok.h:486
#define J2K_MS_UNK
UNKNOWN marker value.
Definition: CodeStream.h:98
int32_t * data
image component data
Definition: grok.h:869
grk_codestream_index * j2k_get_cstr_index(CodeStream *codeStream)
Get the code stream index from a JPEG2000 codec.
Definition: Dump.cpp:352
#define J2K_MS_MCC
MCC marker value.
Definition: CodeStream.h:94
const uint32_t max_supported_precision
Definition: CodeStream.h:56
#define J2K_CCP_QNTSTY_SEQNT
Definition: CodeStream.h:68
@ J2K_DEC_STATE_DATA
the decoding process is expecting to read tile data from the code stream
Definition: CodingParams.h:292
marker_handler(uint16_t ID, uint32_t flags, marker_callback cb)
Definition: CodeStream.h:114
#define J2K_MS_PLM
PLM marker value.
Definition: CodeStream.h:85
static bool update_image_dimensions(grk_image *image, uint32_t reduce)
Definition: CodeStream.cpp:287
const marker_handler * get_marker_handler(uint16_t id)
Reads the lookup table containing all the marker, status and action, and returns the handler associat...
Definition: CodeStream.cpp:2073
GRK_PROG_ORDER prg1
Progression order enum.
Definition: grok.h:383
virtual bool compress(grk_plugin_tile *tile)=0
std::vector< j2k_procedure > m_validation_list
the list of validation procedures to follow to make sure the code is valid
Definition: CodeStream.h:315
double tcp_distoratio[100]
different psnr for successive layers
Definition: grok.h:473
const uint32_t max_num_tiles
Definition: CodeStream.h:49
#define GRK_PROFILE_PART2
Definition: grok.h:142
bool j2k_read_ppm(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size)
Reads a PPM marker (Packed packet headers, main header)
Definition: markers.cpp:1008
void j2k_write_float_to_float64(const void *p_src_data, void *p_dest_data, uint64_t nb_elem)
Definition: markers.cpp:98
virtual void dump(int32_t flag, FILE *out_stream)=0
uint16_t tcp_numlayers
number of layers
Definition: grok.h:468
static void transfer_image_data(grk_image *src, grk_image *dest)
Transfer data from src to dest for each component, and null out src data.
Definition: CodeStream.cpp:335
bool parse_tile_header_markers(bool *can_decode_tile_data)
Definition: CodeStream.cpp:2099
uint8_t mct
multi-component transform identifier
Definition: CodingParams.h:135
bool writeTLM
Definition: grok.h:559
static void set_imf_parameters(grk_cparameters *parameters, grk_image *image)
Definition: Profile.cpp:79
bool j2k_read_coc(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size)
Reads a COC marker (Coding Style Component)
Definition: markers.cpp:593
bool j2k_read_rgn(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size)
Reads a RGN marker (Region Of Interest)
Definition: markers.cpp:1224
uint16_t m_tile_index
index of tile being currently compressed/decompressed
Definition: TileProcessor.h:122
double rates[100]
rates of layers
Definition: CodingParams.h:137
@ J2K_DEC_STATE_MH_SIZ
a SIZ marker is expected
Definition: CodingParams.h:285
bool read_unk(uint16_t *output_marker)
Reads an unknown marker.
Definition: CodeStream.cpp:3275
void * grk_realloc(void *ptr, size_t new_size)
Reallocate memory blocks.
Definition: MemManager.cpp:135
const uint32_t GRK_COMP_PARAM_DEFAULT_NUMRESOLUTION
Definition: CodeStream.h:43
bool j2k_read_qcd(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size)
Reads a QCD marker (Quantization defaults)
Definition: markers.cpp:662
#define J2K_MS_POC
POC marker value.
Definition: CodeStream.h:83
bool alloc_multi_tile_output_data(grk_image *p_output_image)
Allocate output buffer for multiple tile decompress.
Definition: CodeStream.cpp:2046
bool isBinaryComment[GRK_NUM_COMMENTS_SUPPORTED]
Definition: CodingParams.h:254
uint8_t tcp_mct
MCT (multiple component transform)
Definition: grok.h:525
static void calculate_norms(double *pNorms, uint32_t nb_comps, float *pMatrix)
Calculate norm of MCT transform.
Definition: mct.cpp:504
virtual bool start_compress(void)=0
bool j2k_read_mct(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size)
Reads a MCT marker (Multiple Component Transform)
Definition: markers.cpp:1395
@ MCT_TYPE_OFFSET
Definition: CodingParams.h:42
size_t num_comments
comments
Definition: CodingParams.h:251
GRK_COLOR_SPACE color_space
color space: sRGB, Greyscale or YUV
Definition: grok.h:893
uint16_t numlayers
number of layers
Definition: CodingParams.h:132
TileProcessor * allocateProcessor(uint16_t tile_index)
Definition: CodeStream.cpp:1007
void pi_update_encoding_parameters(const grk_image *p_image, CodingParams *p_cp, uint16_t tile_no)
Updates the compressing parameters of the codec.
Definition: PacketIter.cpp:1381
grk_poc POC[32]
progression order changes
Definition: grok.h:464
grk_plugin_tile * current_plugin_tile
Definition: TileProcessor.h:149
bool j2k_merge_ppm(CodingParams *p_cp)
Merges all PPM markers read (Packed headers, main header)
Definition: markers.cpp:1022
@ GRK_CPRL
component-precinct-resolution-layer order
Definition: grok.h:295
uint16_t m_marker
Definition: grk_exceptions.h:33
size_t m_max_comp_size
Maximum rate for each component.
Definition: CodingParams.h:206
uint8_t * m_data
Definition: CodingParams.h:100
uint32_t m_nb_max_mct_records
the max number of mct records.
Definition: CodingParams.h:184
uint32_t m_data_size
Definition: CodingParams.h:101
uint64_t max_cs_size
Maximum size (in bytes) for the whole code stream.
Definition: grok.h:535
uint16_t m_layer
if != 0, then only the first "layer" layers are decompressed; if == 0 or not used,...
Definition: CodingParams.h:229
#define J2K_MS_MCO
MCO marker value.
Definition: CodeStream.h:96
uint32_t m_nb_max_mcc_records
the max number of mct records.
Definition: CodingParams.h:190
TileCodingParams * get_current_decode_tcp(void)
Definition: CodeStream.cpp:2022
uint32_t cblockw_init
initial code block width (default to 64)
Definition: grok.h:477
static bool j2k_get_end_header(CodeStream *codeStream)
Gets the offset of the header.
Definition: CodeStream.cpp:608
#define J2K_MS_QCC
QCC marker value.
Definition: CodeStream.h:82
bool m_corrupt_packet
Definition: TileProcessor.h:163
static void set_broadcast_parameters(grk_cparameters *parameters)
Definition: Profile.cpp:597
bool cp_fixed_quality
allocation by fixed_quality
Definition: grok.h:453
#define J2K_MS_SOP
SOP marker value.
Definition: CodeStream.h:89
std::map< uint32_t, TileProcessor * > m_processors
Definition: CodeStream.h:347
void j2k_update_tlm(CodeStream *codeStream, uint16_t tile_index, uint32_t tile_part_size)
Updates the Tile Length Marker.
Definition: markers.cpp:2082
void(* j2k_mct_function)(const void *p_src_data, void *p_dest_data, uint64_t nb_elem)
Definition: markers.h:29
void j2k_write_float_to_int32(const void *p_src_data, void *p_dest_data, uint64_t nb_elem)
Definition: markers.cpp:90
uint32_t dx
XRsiz: horizontal separation of a sample of with component with respect to the reference grid.
Definition: grok.h:850
marker_callback callback
action linked to the marker
Definition: CodeStream.h:122
static bool j2k_decompress_tile(CodeStream *codeStream)
Definition: CodeStream.cpp:379
uint32_t decompress_flags
Definition: grok.h:1241
static void lupSolve(float *pResult, float *pMatrix, float *pVector, uint32_t *pPermutations, uint32_t nb_compo, float *p_intermediate_data)
LUP solving.
Definition: CodeStream.cpp:857
bool start_compress(void)
Definition: CodeStream.cpp:1236
static bool matrix_inversion_f(float *pSrcMatrix, float *pDestMatrix, uint32_t n)
Calculate a n x n double matrix inversion with a LUP method.
Definition: CodeStream.cpp:731
void j2k_write_float_to_float(const void *p_src_data, void *p_dest_data, uint64_t nb_elem)
Definition: markers.cpp:94
Definition: CodeStream.h:125
#define GRK_IS_PART2(v)
Definition: grok.h:150
bool j2k_write_mct_data_group(CodeStream *codeStream)
Writes the CBD-MCT-MCC-MCO markers (Multi components transform)
Definition: markers.cpp:1269
bool read_header(grk_header_info *header_info, grk_image **p_image)
Main header reading function handler.
Definition: CodeStream.cpp:1023
bool j2k_write_regions(CodeStream *codeStream)
Writes regions of interests.
Definition: markers.cpp:1325
uint32_t x1
Xsiz: width of the reference grid.
Definition: grok.h:887
@ J2K_DEC_STATE_MH
the decoding process is in the main header
Definition: CodingParams.h:286
#define J2K_MS_COC
COC marker value.
Definition: CodeStream.h:79
bool(* j2k_procedure)(CodeStream *codeStream)
Definition: CodeStream.h:109
grk_simple_mcc_decorrelation_data * m_mcc_records
mcc records
Definition: CodingParams.h:186
uint16_t cp_comment_len[GRK_NUM_COMMENTS_SUPPORTED]
Definition: grok.h:456
uint32_t tile
Tile number.
Definition: grok.h:387
grk_mct_data * m_decorrelation_array
Definition: CodingParams.h:110
static bool j2k_compress_validation(CodeStream *codeStream)
The default compressing validation procedure without any extension.
Definition: CodeStream.cpp:447
uint8_t * icc_profile_buf
Definition: grok.h:605
uint32_t max_comp_size
Maximum size (in bytes) for each component.
Definition: grok.h:519
DecodingParams m_dec
Definition: CodingParams.h:266
uint8_t csty
coding style
Definition: CodingParams.h:52
uint8_t cp_reduce
Set the number of highest resolution levels to be discarded.
Definition: grok.h:678
bool write_tile_part(TileProcessor *tileProcessor)
Definition: CodeStream.cpp:2860
virtual ~ICodeStream()
Definition: CodeStream.h:127
TileCodingParams * m_default_tcp
Definition: CodingParams.h:321
static bool j2k_end_encoding(CodeStream *codeStream)
Ends the compressing, i.e.
Definition: CodeStream.cpp:595
#define J2K_MS_CRG
CRG marker value.
Definition: CodeStream.h:91
bool j2k_write_epc(CodeStream *codeStream)
Writes EPC ????
Definition: markers.cpp:1341
bool isHT
Definition: grok.h:483
uint8_t csty
csty : coding style
Definition: grok.h:460
#define GRK_J2K_MAXRLVLS
Maximum number of resolution levels authorized.
Definition: grok.h:82
Image.
Definition: grok.h:879
void GRK_INFO(const char *fmt,...)
Definition: logger.cpp:41
uint32_t t_height
YTsiz.
Definition: grok.h:449
const size_t default_align
Definition: MemManager.h:28
grk_codestream_index * get_cstr_index()
Definition: CodeStream.cpp:1963
char * cp_comment[GRK_NUM_COMMENTS_SUPPORTED]
comment for coding
Definition: grok.h:455
Compress parameters.
Definition: grok.h:439
uint32_t m_tp_pos
Position of tile part flag in progression order.
Definition: CodingParams.h:208
uint64_t packno
Definition: TileProcessor.h:38
const uint32_t cod_coc_len
Definition: CodeStream.h:36
virtual bool decompress(grk_plugin_tile *tile, grk_image *p_image)=0
uint32_t y1
Ysiz: height of the reference grid.
Definition: grok.h:889
static bool j2k_mct_validation(CodeStream *codeStream)
The mct compressing validation procedure.
Definition: CodeStream.cpp:443
uint8_t prec
precision
Definition: grok.h:866
bool decompress_tile()
Definition: CodeStream.cpp:2566
bool decompress_tile_t2t1(TileProcessor *tileProcessor, bool multi_tile)
Definition: CodeStream.cpp:2501
uint8_t cblk_sty
code block style
Definition: grok.h:481
Definition: SOTMarker.h:28
@ GRK_RLCP
resolution-layer-component-precinct order
Definition: grok.h:292
void GRK_ERROR(const char *fmt,...)
Definition: logger.cpp:57
bool m_disto_alloc
allocation by rate/distortion
Definition: CodingParams.h:212
bool owns_data
Definition: grok.h:871
uint32_t m_nb_comps
Definition: CodingParams.h:109
uint16_t rsiz
Rsiz.
Definition: CodingParams.h:237
bool compress(grk_plugin_tile *tile)
Definition: CodeStream.cpp:1715
void GRK_CALLCONV grk_image_destroy(grk_image *image)
Deallocate all resources associated with an image.
Definition: grok.cpp:201
J2K_MCT_ARRAY_TYPE m_array_type
Definition: CodingParams.h:98
const uint32_t max_tile_part_size
Definition: CodeStream.h:53
uint8_t cblkw
log2(code-blocks width)
Definition: CodingParams.h:56
uint16_t comment_len[GRK_NUM_COMMENTS_SUPPORTED]
Definition: CodingParams.h:253
bool need_nb_tile_parts_correction(bool *p_correction_needed)
Checks for invalid number of tile-parts in SOT marker (TPsot==TNsot).
Definition: CodeStream.cpp:3184
bool isHT
Definition: CodingParams.h:199
bool read_marker(void)
Definition: CodeStream.cpp:2084
@ MCT_TYPE_DECORRELATION
Definition: CodingParams.h:42
bool end_decompress(void)
Reading function used after code stream if necessary.
Definition: CodeStream.cpp:1224
virtual bool compress_tile(uint16_t tile_index, uint8_t *p_data, uint64_t data_size)=0
#define J2K_MS_COM
COM marker value.
Definition: CodeStream.h:92
bool j2k_read_cbd(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size)
Reads a CBD marker (Component bit depth definition)
Definition: markers.cpp:2024
bool j2k_write_all_qcc(CodeStream *codeStream)
Writes QCC marker for each component.
Definition: markers.cpp:1311
uint32_t ty0
YTOsiz.
Definition: CodingParams.h:245
uint32_t x0
XOsiz: horizontal offset from the origin of the reference grid to the left side of the image area.
Definition: grok.h:882
static bool is_broadcast_compliant(grk_cparameters *parameters, grk_image *image)
Definition: Profile.cpp:638
bool post_write_tile(TileProcessor *tileProcessor)
Definition: CodeStream.cpp:2909