Grok 12.0.1
CodingParams.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2016-2024 Grok Image Compression Inc.
3 *
4 * This source code is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU Affero General Public License, version 3,
6 * as published by the Free Software Foundation.
7 *
8 * This source code is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU Affero General Public License for more details.
12 *
13 * You should have received a copy of the GNU Affero General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 *
17 * This source code incorporates work covered by the BSD 2-clause license.
18 * Please see the LICENSE file in the root directory for details.
19 *
20 */
21
22#pragma once
23
24#include "Quantizer.h"
25
26namespace grk
27{
38
48
53{
67 // true if quantization marker has been read for this component,
68 // false otherwise
70 // true if quantization marker was read from QCC otherwise false
71 bool fromQCC;
72 // true if quantization marker was read from tile header
78 // number of step sizes read from QCC marker
90};
91
103
115
122{
125
127 bool copy(const TileCodingParams* rhs, const GrkImage* image);
128 void setIsHT(bool ht, bool reversible, uint8_t guardBits);
129 bool isHT(void);
131 bool hasPoc(void);
132
159 size_t ppt_len;
162 // quantization style as read from main QCD marker
164 // number of step sizes as read from main QCD marker
168 // current tile part index, based on count of tile parts
169 // (-1 if never incremented)
170 // NOTES:
171 // 1. tile parts must appear in code stream in strictly increasing
172 // order
173 // 2. tile part index must be <= 255
179 double* mct_norms;
197 bool cod;
199 bool ppt;
201
202 private:
203 bool ht_;
204};
205
228
240
286
306
307class CodeStreamDecompress;
308
310{
312 bool findNextSOT(CodeStreamDecompress* codeStream);
313 uint16_t getState(void);
314 void setState(uint16_t state);
315 void orState(uint16_t state);
316 void andState(uint16_t state);
317 void setComplete(uint16_t tileIndex);
318
319 // store decoding parameters common to all tiles (information
320 // like COD, COC and RGN in main header)
322
324
333
334 private:
338};
339
341{
345 uint16_t total_tile_parts_; /* numTilePartsTotal */
346};
347
348} // namespace grk
Definition CodeStreamDecompress.h:38
Definition GrkImage.h:24
Definition PPMMarker.h:35
Definition TileSet.h:9
#define GRK_NUM_COMMENTS_SUPPORTED
Definition grok.h:108
enum _GRK_PROG_ORDER GRK_PROG_ORDER
Progression order.
#define GRK_J2K_MAXRLVLS
Definition grok.h:260
#define GRK_J2K_MAXBANDS
Definition grok.h:262
Copyright (C) 2016-2024 Grok Image Compression Inc.
Definition ICacheable.h:20
void grk_read(const uint8_t *buffer, TYPE *value, uint32_t numBytes)
Definition BufferedStream.h:239
const uint16_t maxCompressLayersGRK
Definition CodeStreamLimits.h:43
DECOMPRESS_STATE
Status of decoding process when decoding main header or tile header.
Definition CodingParams.h:292
@ DECOMPRESS_STATE_TPH
the decoding process is in a tile part header
Definition CodingParams.h:297
@ DECOMPRESS_STATE_MH_SIZ
a SIZ marker is expected
Definition CodingParams.h:295
@ DECOMPRESS_STATE_DATA
the decoding process is expecting to read tile data from the code stream
Definition CodingParams.h:300
@ DECOMPRESS_STATE_NONE
no decompress state
Definition CodingParams.h:293
@ DECOMPRESS_STATE_EOC
the decoding process has encountered the EOC marker
Definition CodingParams.h:302
@ DECOMPRESS_STATE_NO_EOC
the decoding process must not expect a EOC marker because the code stream is truncated
Definition CodingParams.h:303
@ DECOMPRESS_STATE_MH_SOC
a SOC marker is expected
Definition CodingParams.h:294
@ DECOMPRESS_STATE_TPH_SOT
the decoding process is in a tile part header and expects a SOT marker
Definition CodingParams.h:298
@ DECOMPRESS_STATE_MH
the decoding process is in the main header
Definition CodingParams.h:296
J2K_MCT_ARRAY_TYPE
Type of MCT array.
Definition CodingParams.h:43
@ MCT_TYPE_OFFSET
Definition CodingParams.h:46
@ MCT_TYPE_DECORRELATION
Definition CodingParams.h:45
@ MCT_TYPE_DEPENDENCY
Definition CodingParams.h:44
J2K_MCT_ELEMENT_TYPE
Type of elements storing in the MCT data.
Definition CodingParams.h:32
@ MCT_TYPE_FLOAT
MCT data is stored as signed integers.
Definition CodingParams.h:35
@ MCT_TYPE_INT16
Definition CodingParams.h:33
@ MCT_TYPE_INT32
MCT data is stored as signed shorts.
Definition CodingParams.h:34
@ MCT_TYPE_DOUBLE
MCT data is stored as floats.
Definition CodingParams.h:36
Progression order change.
Definition grok.h:153
Coding parameters.
Definition CodingParams.h:245
bool wholeTileDecompress_
Definition CodingParams.h:284
size_t num_comments
comments
Definition CodingParams.h:265
CodingParams()
Definition CodingParams.cpp:26
TileCodingParams * tcps
tile coding parameters
Definition CodingParams.h:276
uint16_t ccap[32]
Definition CodingParams.h:255
union grk::CodingParams::@0 coding_params_
uint32_t t_width
XTsiz.
Definition CodingParams.h:261
uint16_t t_grid_height
number of tiles in height
Definition CodingParams.h:273
uint32_t pcap
Definition CodingParams.h:253
DecodingParams dec_
Definition CodingParams.h:279
uint32_t tx0
XTOsiz.
Definition CodingParams.h:257
bool isBinaryComment[GRK_NUM_COMMENTS_SUPPORTED]
Definition CodingParams.h:268
EncodingParams enc_
Definition CodingParams.h:280
uint32_t t_height
YTsiz.
Definition CodingParams.h:263
uint32_t ty0
YTOsiz.
Definition CodingParams.h:259
uint16_t rsiz
Rsiz.
Definition CodingParams.h:251
TileLengthMarkers * tlm_markers
Definition CodingParams.h:282
uint16_t t_grid_width
number of tiles in width
Definition CodingParams.h:271
char * comment[GRK_NUM_COMMENTS_SUPPORTED]
Definition CodingParams.h:266
PPMMarker * ppm_marker
Definition CodingParams.h:274
grk_rect32 getTileBounds(const GrkImage *p_image, uint32_t tile_x, uint32_t tile_y) const
Definition CodingParams.cpp:45
PLMarkerMgr * plm_markers
Definition CodingParams.h:283
~CodingParams()
Definition CodingParams.cpp:33
uint16_t comment_len[GRK_NUM_COMMENTS_SUPPORTED]
Definition CodingParams.h:267
Definition CodingParams.h:341
CompressorState()
Definition CodingParams.h:342
uint16_t total_tile_parts_
Total num of tile parts in whole image = num tiles* num tileparts in each tile.
Definition CodingParams.h:345
Definition CodingParams.h:230
uint16_t layers_to_decompress_
if != 0, then only the first "layer" layers are decompressed; if == 0 or not used,...
Definition CodingParams.h:236
uint32_t randomAccessFlags_
Definition CodingParams.h:238
uint8_t reduce_
if != 0, then original dimension divided by 2^(reduce); if == 0 or not used, image is decompressed to...
Definition CodingParams.h:233
Definition CodingParams.h:310
TileSet tilesToDecompress_
Definition CodingParams.h:323
bool lastTilePartInCodeStream
Indicate that the current tile-part is assumed to be the last tile part of the code stream.
Definition CodingParams.h:332
uint64_t lastSotReadPosition
Position of the last SOT marker read.
Definition CodingParams.h:326
TileCodingParams * default_tcp_
Definition CodingParams.h:321
void andState(uint16_t state)
Definition CodingParams.cpp:263
void orState(uint16_t state)
Definition CodingParams.cpp:259
DecompressorState()
Definition CodingParams.cpp:246
uint16_t state_
Decoder state: used to indicate in which part of the code stream the decompressor is (main header,...
Definition CodingParams.h:337
void setComplete(uint16_t tileIndex)
Definition CodingParams.cpp:267
bool findNextSOT(CodeStreamDecompress *codeStream)
Definition CodingParams.cpp:272
uint16_t getState(void)
Definition CodingParams.cpp:251
void setState(uint16_t state)
Definition CodingParams.cpp:255
Definition CodingParams.h:207
uint32_t newTilePartProgressionPosition
Position of tile part flag in progression order.
Definition CodingParams.h:212
bool writePLT
Definition CodingParams.h:222
bool allocationByRateDistortion_
allocation by rate/distortion
Definition CodingParams.h:216
bool writeTLM
Definition CodingParams.h:224
bool enableTilePartGeneration_
Enabling Tile part generation.
Definition CodingParams.h:220
uint8_t newTilePartProgressionDivider_
Flag determining tile part generation.
Definition CodingParams.h:214
size_t max_comp_size_
Maximum rate for each component.
Definition CodingParams.h:210
bool allocationByFixedQuality_
allocation by fixed_quality
Definition CodingParams.h:218
uint32_t rateControlAlgorithm
Definition CodingParams.h:226
Definition PLMarkerMgr.h:30
Definition Quantizer.h:39
Definition SparseBuffer.h:28
Tile coding parameters : this structure is used to store coding/decoding parameters common to all til...
Definition CodingParams.h:122
grk_mct_data * mct_records_
mct records
Definition CodingParams.h:185
bool hasPoc(void)
Definition CodingParams.cpp:230
GRK_PROG_ORDER prg
progression order
Definition CodingParams.h:136
uint8_t tilePartCounter_
Definition CodingParams.h:174
uint8_t numTileParts_
number of tile parts for the tile.
Definition CodingParams.h:176
uint32_t main_qcd_qntsty
Definition CodingParams.h:163
bool advanceTilePartCounter(uint16_t tileIndex, uint8_t tilePartIndex)
Definition CodingParams.cpp:111
uint32_t main_qcd_numStepSizes
Definition CodingParams.h:165
uint8_t * ppt_buffer
used to keep a track of the allocated memory
Definition CodingParams.h:155
uint8_t csty
coding style
Definition CodingParams.h:134
double rates[maxCompressLayersGRK]
rates of layers
Definition CodingParams.h:143
uint8_t mct
multi-component transform identifier
Definition CodingParams.h:141
bool cod
If cod == true --> there was a COD marker for the present tile.
Definition CodingParams.h:197
bool ppt
If ppt == true --> there was a PPT marker for the present tile.
Definition CodingParams.h:199
uint16_t max_layers_
number of layers
Definition CodingParams.h:138
uint32_t nb_mct_records_
the number of mct records.
Definition CodingParams.h:187
TileComponentCodingParams * tccps
tile-component coding parameters
Definition CodingParams.h:167
uint8_t * ppt_data
packet header store there for future use in t2_decode_packet
Definition CodingParams.h:153
uint16_t numLayersToDecompress
Definition CodingParams.h:139
size_t ppt_data_size
Number of bytes stored inside ppt_data.
Definition CodingParams.h:157
bool isHT(void)
Definition CodingParams.cpp:222
float * mct_coding_matrix_
the mct coding matrix
Definition CodingParams.h:183
double * mct_norms
compressing norms
Definition CodingParams.h:179
void setIsHT(bool ht, bool reversible, uint8_t guardBits)
Definition CodingParams.cpp:215
uint32_t ppt_markers_count
number of ppt markers (reserved size)
Definition CodingParams.h:149
uint32_t nb_max_mcc_records_
the max number of mct records.
Definition CodingParams.h:195
bool copy(const TileCodingParams *rhs, const GrkImage *image)
Definition CodingParams.cpp:129
uint32_t getNumProgressions(void)
Definition CodingParams.cpp:226
TileCodingParams()
Definition CodingParams.cpp:65
uint32_t nb_max_mct_records_
the max number of mct records.
Definition CodingParams.h:189
size_t ppt_len
size of ppt_data
Definition CodingParams.h:159
uint32_t nb_mcc_records_
the number of mct records.
Definition CodingParams.h:193
grk_ppx * ppt_markers
ppt markers data (table indexed by Zppt)
Definition CodingParams.h:151
float * mct_decoding_matrix_
the mct decoding matrix
Definition CodingParams.h:181
~TileCodingParams()
Definition CodingParams.cpp:81
double distortion[maxCompressLayersGRK]
fixed_quality
Definition CodingParams.h:161
SparseBuffer * compressedTileData_
Definition CodingParams.h:177
grk_simple_mcc_decorrelation_data * mcc_records_
mcc records
Definition CodingParams.h:191
uint32_t numpocs
number of progression order changes
Definition CodingParams.h:145
grk_progression progressionOrderChange[GRK_J2K_MAXRLVLS]
progression order changes
Definition CodingParams.h:147
Quantizer * qcd_
Definition CodingParams.h:200
bool ht_
Definition CodingParams.h:203
Tile-component coding parameters.
Definition CodingParams.h:53
grk_stepsize stepsizes[GRK_J2K_MAXBANDS]
stepsizes used for quantization
Definition CodingParams.h:77
uint8_t csty
coding style
Definition CodingParams.h:56
int32_t dc_level_shift_
the dc_level_shift
Definition CodingParams.h:89
uint8_t cblkh
log2(code-blocks height)
Definition CodingParams.h:62
uint8_t numgbits
number of guard bits
Definition CodingParams.h:81
uint8_t cblk_sty
code-block mode
Definition CodingParams.h:64
uint8_t qmfbid
discrete wavelet transform identifier
Definition CodingParams.h:66
bool fromTileHeader
Definition CodingParams.h:73
bool fromQCC
Definition CodingParams.h:71
uint8_t numresolutions
number of resolutions
Definition CodingParams.h:58
TileComponentCodingParams()
Definition CodingParams.cpp:234
uint32_t precWidthExp[GRK_J2K_MAXRLVLS]
precinct width (power of 2 exponent, < 16)
Definition CodingParams.h:85
uint8_t roishift
Region Of Interest shift.
Definition CodingParams.h:83
uint8_t cblkw
log2(code-blocks width)
Definition CodingParams.h:60
uint32_t precHeightExp[GRK_J2K_MAXRLVLS]
precinct height (power of 2 exponent, < 16)
Definition CodingParams.h:87
uint8_t qntsty
quantisation style
Definition CodingParams.h:75
uint8_t numStepSizes
Definition CodingParams.h:79
bool quantizationMarkerSet
Definition CodingParams.h:69
Definition LengthCache.h:107
MCT data.
Definition CodingParams.h:96
J2K_MCT_ARRAY_TYPE array_type_
Definition CodingParams.h:98
uint32_t data_size_
Definition CodingParams.h:101
J2K_MCT_ELEMENT_TYPE element_type_
Definition CodingParams.h:97
uint32_t index_
Definition CodingParams.h:99
uint8_t * data_
Definition CodingParams.h:100
Definition PPMMarker.h:29
MCC decorrelation data.
Definition CodingParams.h:108
grk_mct_data * decorrelation_array_
Definition CodingParams.h:111
uint32_t index_
Definition CodingParams.h:109
uint32_t nb_comps_
Definition CodingParams.h:110
uint32_t is_irreversible_
Definition CodingParams.h:113
grk_mct_data * offset_array_
Definition CodingParams.h:112
Quantization stepsize.
Definition Quantizer.h:30