Grok  7.6.6
CodingParams.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2016-2021 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 "HTParams.h"
25 
26 namespace grk {
27 
35  MCT_TYPE_DOUBLE = 3
36 };
37 
43 };
44 
45 
52  uint8_t csty;
54  uint8_t numresolutions;
56  uint8_t cblkw;
58  uint8_t cblkh;
59 
61 
63  uint8_t cblk_sty;
65  uint8_t qmfbid;
66  // true if quantization marker has been read for this component,
67  // false otherwise
69  // true if quantization marker was read from QCC otherwise false
70  bool fromQCC;
71  // true if quantization marker was read from tile header
74  uint8_t qntsty;
77  // number of step sizes read from QCC marker
78  uint8_t numStepSizes;
80  uint8_t numgbits;
82  uint8_t roishift;
89 };
90 
91 
92 
96 struct grk_mct_data {
99  uint32_t m_index;
100  uint8_t *m_data;
101  uint32_t m_data_size;
102 };
103 
108  uint32_t m_index;
109  uint32_t m_nb_comps;
112  uint32_t m_is_irreversible :1;
113 }
114 ;
115 
124 
125  void destroy();
126 
127  void setIsHT(bool ht);
128  bool getIsHT(void);
129 
131  uint8_t csty;
135  uint16_t numlayers;
138  uint8_t mct;
140  double rates[100];
142  uint32_t numpocs;
145 
150 
152  uint8_t *ppt_data;
154  uint8_t *ppt_buffer;
158  size_t ppt_len;
160  double distoratio[100];
161  // quantization style as read from main QCD marker
162  uint32_t main_qcd_qntsty;
163  // number of step sizes as read from main QCD marker
167  // current tile part number (-1 if not yet initialized
168  // NOTE: tile part index <= 254
170 
173 
175 
177  double *mct_norms;
194 
196  bool cod;
198  bool ppt;
200  bool POC;
202 private:
203  bool isHT;
204 };
205 
211  uint32_t m_tp_pos;
213  uint8_t m_tp_flag;
219  bool m_tp_on;
220  /* write plt marker */
221  bool writePLT;
222 
223  bool writeTLM;
224  /* rate control algorithm */
226 };
227 
230  uint8_t m_reduce;
232  uint16_t m_layer;
233 };
234 
238 struct CodingParams {
239 
240  grk_rect_u32 getTileBounds( const GrkImage *p_image,
241  uint32_t tile_x,
242  uint32_t tile_y) const;
243 
245  uint16_t rsiz;
246  /* Pcap */
247  uint32_t pcap;
248  /* Ccap */
249  uint16_t ccap[32];
251  uint32_t tx0;
253  uint32_t ty0;
255  uint32_t t_width;
257  uint32_t t_height;
259  size_t num_comments;
264  uint32_t t_grid_width;
266  uint32_t t_grid_height;
267 
269 
272 
273  union {
277 
280 
281  void destroy();
282 
283 };
284 
285 
294  J2K_DEC_STATE_MH = 0x0004,
295  J2K_DEC_STATE_TPH_SOT = 0x0008,
297  J2K_DEC_STATE_TPH = 0x0010,
298  J2K_DEC_STATE_NO_EOC = 0x0020,
300  J2K_DEC_STATE_DATA = 0x0040,
302  J2K_DEC_STATE_EOC = 0x0080,
303  J2K_DEC_STATE_ERR = 0x0100
304 };
305 
306 
307 struct DecoderState {
309  m_default_tcp(nullptr),
317  m_skip_tile_data(false)
318  {}
319 
320 
321  bool findNextTile(CodeStream *codeStream);
322 
325  uint16_t m_state;
326 
327  //store decoding parameters common to all tiles (information
328  // like COD, COC and RGN in main header)
335 
338 
345 
346  // Indicates that the last tile part header has been read, so that
347  // the tile's data can now be decompressed
349 
351 
352 };
353 
354 struct EncoderState {
355 
357 
360  uint16_t m_total_tile_parts; /* totnum_tp */
361 
362 };
363 
364 }
Definition: GrkImage.h:11
Definition: PPMMarker.h:34
Definition: Quantizer.h:54
#define GRK_NUM_COMMENTS_SUPPORTED
Definition: grok.h:350
enum _GRK_PROG_ORDER GRK_PROG_ORDER
Progression order.
#define GRK_J2K_MAXRLVLS
Maximum number of resolution levels authorized.
Definition: grok.h:82
#define GRK_J2K_MAXBANDS
Maximum number of sub-bands.
Definition: grok.h:83
Copyright (C) 2016-2021 Grok Image Compression Inc.
Definition: BitIO.cpp:23
J2K_STATUS
Status of decoding process when decoding main header.
Definition: CodingParams.h:290
@ J2K_DEC_STATE_EOC
the decoding process has encountered the EOC marker
Definition: CodingParams.h:302
@ J2K_DEC_STATE_TPH_SOT
the decoding process is in a tile part header and expects a SOT marker
Definition: CodingParams.h:295
@ J2K_DEC_STATE_TPH
the decoding process is in a tile part header
Definition: CodingParams.h:297
@ J2K_DEC_STATE_ERR
the decoding process has encountered an error
Definition: CodingParams.h:303
@ J2K_DEC_STATE_MH
the decoding process is in the main header
Definition: CodingParams.h:294
@ J2K_DEC_STATE_NO_EOC
the decoding process must not expect a EOC marker because the code stream is truncated
Definition: CodingParams.h:298
@ J2K_DEC_STATE_DATA
the decoding process is expecting to read tile data from the code stream
Definition: CodingParams.h:300
@ J2K_DEC_STATE_NONE
no decompress state
Definition: CodingParams.h:291
@ J2K_DEC_STATE_MH_SOC
a SOC marker is expected
Definition: CodingParams.h:292
@ J2K_DEC_STATE_MH_SIZ
a SIZ marker is expected
Definition: CodingParams.h:293
J2K_MCT_ARRAY_TYPE
Type of MCT array.
Definition: CodingParams.h:41
@ MCT_TYPE_OFFSET
Definition: CodingParams.h:42
@ MCT_TYPE_DECORRELATION
Definition: CodingParams.h:42
@ MCT_TYPE_DEPENDENCY
Definition: CodingParams.h:42
J2K_MCT_ELEMENT_TYPE
Type of elements storing in the MCT data.
Definition: CodingParams.h:31
@ MCT_TYPE_FLOAT
MCT data is stored as signed integers.
Definition: CodingParams.h:34
@ MCT_TYPE_INT16
Definition: CodingParams.h:32
@ MCT_TYPE_INT32
MCT data is stored as signed shorts.
Definition: CodingParams.h:33
@ MCT_TYPE_DOUBLE
MCT data is stored as floats.
Definition: CodingParams.h:35
Progression order change.
Definition: grok.h:377
Definition: ChunkBuffer.h:29
Definition: CodeStream.h:163
Coding parameters.
Definition: CodingParams.h:238
union grk::CodingParams::@0 m_coding_params
size_t num_comments
comments
Definition: CodingParams.h:259
uint32_t t_grid_width
number of tiles in width
Definition: CodingParams.h:264
void destroy()
Definition: CodingParams.cpp:46
TileCodingParams * tcps
tile coding parameters
Definition: CodingParams.h:271
uint32_t t_grid_height
number of tiles in height
Definition: CodingParams.h:266
uint16_t ccap[32]
Definition: CodingParams.h:249
uint32_t t_width
XTsiz.
Definition: CodingParams.h:255
PacketLengthMarkers * plm_markers
Definition: CodingParams.h:279
uint32_t pcap
Definition: CodingParams.h:247
uint32_t tx0
XTOsiz.
Definition: CodingParams.h:251
bool isBinaryComment[GRK_NUM_COMMENTS_SUPPORTED]
Definition: CodingParams.h:262
uint32_t t_height
YTsiz.
Definition: CodingParams.h:257
uint32_t ty0
YTOsiz.
Definition: CodingParams.h:253
uint16_t rsiz
Rsiz.
Definition: CodingParams.h:245
TileLengthMarkers * tlm_markers
Definition: CodingParams.h:278
grk_rect_u32 getTileBounds(const GrkImage *p_image, uint32_t tile_x, uint32_t tile_y) const
Definition: CodingParams.cpp:26
EncodingParams m_enc
Definition: CodingParams.h:275
char * comment[GRK_NUM_COMMENTS_SUPPORTED]
Definition: CodingParams.h:260
PPMMarker * ppm_marker
Definition: CodingParams.h:268
uint16_t comment_len[GRK_NUM_COMMENTS_SUPPORTED]
Definition: CodingParams.h:261
DecodingParams m_dec
Definition: CodingParams.h:274
Definition: CodingParams.h:307
bool m_last_tile_part_in_code_stream
Indicate that the current tile-part is assumed to be the last tile part of the code stream.
Definition: CodingParams.h:344
DecoderState()
Definition: CodingParams.h:308
uint32_t m_start_tile_x_index
Only tile indices in the correct range will be decompressed.
Definition: CodingParams.h:331
uint32_t m_start_tile_y_index
Definition: CodingParams.h:332
uint32_t m_end_tile_y_index
Definition: CodingParams.h:334
bool m_skip_tile_data
Definition: CodingParams.h:350
TileCodingParams * m_default_tcp
Definition: CodingParams.h:329
bool findNextTile(CodeStream *codeStream)
Definition: CodingParams.cpp:183
uint16_t m_state
Decoder state: used to indicate in which part of the code stream the decompressor is (main header,...
Definition: CodingParams.h:325
uint64_t m_last_sot_read_pos
Position of the last SOT marker read.
Definition: CodingParams.h:337
uint32_t m_end_tile_x_index
Definition: CodingParams.h:333
bool last_tile_part_was_read
Definition: CodingParams.h:348
Definition: CodingParams.h:228
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:230
uint16_t m_layer
if != 0, then only the first "layer" layers are decompressed; if == 0 or not used,...
Definition: CodingParams.h:232
Definition: CodingParams.h:354
EncoderState()
Definition: CodingParams.h:356
uint16_t m_total_tile_parts
Total num of tile parts in whole image = num tiles* num tileparts in each tile.
Definition: CodingParams.h:360
Definition: CodingParams.h:206
bool m_disto_alloc
allocation by rate/distortion
Definition: CodingParams.h:215
bool m_fixed_quality
allocation by fixed_quality
Definition: CodingParams.h:217
bool writePLT
Definition: CodingParams.h:221
bool m_tp_on
Enabling Tile part generation.
Definition: CodingParams.h:219
size_t m_max_comp_size
Maximum rate for each component.
Definition: CodingParams.h:209
uint8_t m_tp_flag
Flag determining tile part generation.
Definition: CodingParams.h:213
bool writeTLM
Definition: CodingParams.h:223
uint32_t rateControlAlgorithm
Definition: CodingParams.h:225
uint32_t m_tp_pos
Position of tile part flag in progression order.
Definition: CodingParams.h:211
Definition: LengthMarkers.h:88
Tile coding parameters : this structure is used to store coding/decoding parameters common to all til...
Definition: CodingParams.h:121
int16_t m_tile_part_index
Definition: CodingParams.h:169
GRK_PROG_ORDER prg
progression order
Definition: CodingParams.h:133
float * m_mct_decoding_matrix
the mct decoding matrix
Definition: CodingParams.h:179
uint32_t main_qcd_qntsty
Definition: CodingParams.h:162
bool POC
indicates if a POC marker has been used
Definition: CodingParams.h:200
grk_mct_data * m_mct_records
mct records
Definition: CodingParams.h:183
uint32_t m_nb_mcc_records
the number of mct records.
Definition: CodingParams.h:191
uint32_t main_qcd_numStepSizes
Definition: CodingParams.h:164
uint8_t * ppt_buffer
used to keep a track of the allocated memory
Definition: CodingParams.h:154
grk_progression progression[GRK_J2K_MAXRLVLS]
progression order changes
Definition: CodingParams.h:144
uint8_t csty
coding style
Definition: CodingParams.h:131
param_qcd qcd
Definition: CodingParams.h:201
uint8_t mct
multi-component transform identifier
Definition: CodingParams.h:138
float * m_mct_coding_matrix
the mct coding matrix
Definition: CodingParams.h:181
bool cod
If cod == true --> there was a COD marker for the present tile.
Definition: CodingParams.h:196
bool isHT
Definition: CodingParams.h:203
uint8_t m_nb_tile_parts
number of tile parts for the tile.
Definition: CodingParams.h:172
void destroy()
Definition: CodingParams.cpp:120
double distoratio[100]
fixed_quality
Definition: CodingParams.h:160
uint32_t m_nb_mct_records
the number of mct records.
Definition: CodingParams.h:185
bool ppt
If ppt == true --> there was a PPT marker for the present tile.
Definition: CodingParams.h:198
bool getIsHT(void)
Definition: CodingParams.cpp:116
TileComponentCodingParams * tccps
tile-component coding parameters
Definition: CodingParams.h:166
uint8_t * ppt_data
packet header store there for future use in t2_decode_packet
Definition: CodingParams.h:152
size_t ppt_data_size
Number of bytes stored inside ppt_data.
Definition: CodingParams.h:156
double * mct_norms
compressing norms
Definition: CodingParams.h:177
void setIsHT(bool ht)
Definition: CodingParams.cpp:111
uint16_t numlayers
number of layers
Definition: CodingParams.h:135
uint32_t ppt_markers_count
number of ppt markers (reserved size)
Definition: CodingParams.h:147
double rates[100]
rates of layers
Definition: CodingParams.h:140
uint32_t m_nb_max_mct_records
the max number of mct records.
Definition: CodingParams.h:187
TileCodingParams()
Definition: CodingParams.cpp:67
uint32_t m_nb_max_mcc_records
the max number of mct records.
Definition: CodingParams.h:193
size_t ppt_len
size of ppt_data
Definition: CodingParams.h:158
grk_ppx * ppt_markers
ppt markers data (table indexed by Zppt)
Definition: CodingParams.h:149
~TileCodingParams()
Definition: CodingParams.cpp:107
ChunkBuffer * m_tile_data
Definition: CodingParams.h:174
uint32_t numpocs
number of progression order changes
Definition: CodingParams.h:142
grk_simple_mcc_decorrelation_data * m_mcc_records
mcc records
Definition: CodingParams.h:189
uint16_t num_layers_to_decompress
Definition: CodingParams.h:136
Tile-component coding parameters.
Definition: CodingParams.h:49
grk_stepsize stepsizes[GRK_J2K_MAXBANDS]
stepsizes used for quantization
Definition: CodingParams.h:76
uint8_t csty
coding style
Definition: CodingParams.h:52
uint8_t cblkh
log2(code-blocks height)
Definition: CodingParams.h:58
uint8_t numgbits
number of guard bits
Definition: CodingParams.h:80
Quantizer quant
Definition: CodingParams.h:60
uint8_t cblk_sty
code-block mode
Definition: CodingParams.h:63
uint8_t qmfbid
discrete wavelet transform identifier
Definition: CodingParams.h:65
uint32_t prcw_exp[GRK_J2K_MAXRLVLS]
precinct width (power of 2 exponent, < 16)
Definition: CodingParams.h:84
int32_t m_dc_level_shift
the dc_level_shift
Definition: CodingParams.h:88
bool fromTileHeader
Definition: CodingParams.h:72
bool fromQCC
Definition: CodingParams.h:70
uint32_t prch_exp[GRK_J2K_MAXRLVLS]
precinct height (power of 2 exponent, < 16)
Definition: CodingParams.h:86
uint8_t numresolutions
number of resolutions
Definition: CodingParams.h:54
TileComponentCodingParams()
Definition: CodingParams.cpp:162
uint8_t roishift
Region Of Interest shift.
Definition: CodingParams.h:82
uint8_t cblkw
log2(code-blocks width)
Definition: CodingParams.h:56
uint8_t qntsty
quantisation style
Definition: CodingParams.h:74
uint8_t numStepSizes
Definition: CodingParams.h:78
bool quantizationMarkerSet
Definition: CodingParams.h:68
Definition: LengthMarkers.h:42
MCT data.
Definition: CodingParams.h:96
J2K_MCT_ARRAY_TYPE m_array_type
Definition: CodingParams.h:98
uint32_t m_index
Definition: CodingParams.h:99
J2K_MCT_ELEMENT_TYPE m_element_type
Definition: CodingParams.h:97
uint32_t m_data_size
Definition: CodingParams.h:101
uint8_t * m_data
Definition: CodingParams.h:100
Definition: PPMMarker.h:28
MCC decorrelation data.
Definition: CodingParams.h:107
grk_mct_data * m_offset_array
Definition: CodingParams.h:111
uint32_t m_index
Definition: CodingParams.h:108
uint32_t m_is_irreversible
Definition: CodingParams.h:112
grk_mct_data * m_decorrelation_array
Definition: CodingParams.h:110
uint32_t m_nb_comps
Definition: CodingParams.h:109
Quantization stepsize.
Definition: Quantizer.h:35
Definition: HTParams.h:78