Grok  7.6.0
CodingParams.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2016-2020 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 
51  uint8_t csty;
53  uint32_t numresolutions;
55  uint32_t cblkw;
57  uint32_t cblkh;
58 
60 
62  uint8_t cblk_sty;
64  uint8_t qmfbid;
65  // true if quantization marker was read from QCC otherwise false
66  bool fromQCC;
67  // true if quantization marker was read from tile header
70  uint8_t qntsty;
73  // number of step sizes read from QCC marker
74  uint8_t numStepSizes;
76  uint8_t numgbits;
78  uint32_t roishift;
85 };
86 
87 
88 
92 struct grk_mct_data {
95  uint32_t m_index;
96  uint8_t *m_data;
97  uint32_t m_data_size;
98 };
99 
104  uint32_t m_index;
105  uint32_t m_nb_comps;
108  uint32_t m_is_irreversible :1;
109 }
110 ;
111 
120 
121  void destroy();
122 
124  uint32_t csty;
128  uint32_t numlayers;
131  uint32_t mct;
133  double rates[100];
135  uint32_t numpocs;
138 
143 
145  uint8_t *ppt_data;
147  uint8_t *ppt_buffer;
151  size_t ppt_len;
153  double distoratio[100];
154  // quantization style as read from main QCD marker
155  uint32_t main_qcd_qntsty;
156  // number of step sizes as read from main QCD marker
160  // current tile part number (-1 if not yet initialized
162 
165 
167 
169  double *mct_norms;
186 
188  bool cod;
190  bool ppt;
192  bool POC;
193 
194  bool isHT;
196 };
197 
203  uint32_t m_tp_pos;
205  uint8_t m_tp_flag;
211  bool m_tp_on;
212  /* write plt marker */
213  bool writePLT;
214 
215  bool writeTLM;
216  /* rate control algorithm */
218 };
219 
222  uint32_t m_reduce;
224  uint32_t m_layer;
225 };
226 
230 struct CodingParams {
232  uint16_t rsiz;
233  /* Pcap */
234  uint32_t pcap;
235  /* Ccap */
236  uint16_t ccap;
238  uint32_t tx0;
240  uint32_t ty0;
242  uint32_t t_width;
244  uint32_t t_height;
246  size_t num_comments;
251  uint32_t t_grid_width;
253  uint32_t t_grid_height;
254 
256 
259 
260  union {
264 
267 
268  void destroy();
269 
270 };
271 
272 struct DecoderState {
274  m_default_tcp(nullptr),
280  m_last_tile_part(false),
282  m_discard_tiles(false),
283  m_skip_data(false)
284  {}
285 
286 
288 
291  uint32_t m_state;
292 
293  //store decoding parameters common to all tiles (information
294  // like COD, COC and RGN in main header)
301 
304 
311  // Indicates that a tile's data can be decoded
315 
316 };
317 
318 struct EncoderState {
319 
321 
324  uint16_t m_total_tile_parts; /* totnum_tp */
325 
326 };
327 
328 }
grk::TileCodingParams::numlayers
uint32_t numlayers
number of layers
Definition: CodingParams.h:128
grk::EncoderState::m_total_tile_parts
uint16_t m_total_tile_parts
Total num of tile parts in whole image = num tiles* num tileparts in each tile.
Definition: CodingParams.h:324
grk::TileCodingParams::ppt_data
uint8_t * ppt_data
packet header store there for future use in t2_decode_packet
Definition: CodingParams.h:145
grk::PPMMarker
Definition: PPMMarker.h:34
grk::TileComponentCodingParams::cblk_sty
uint8_t cblk_sty
code-block mode
Definition: CodingParams.h:62
grk::TileCodingParams::m_nb_mct_records
uint32_t m_nb_mct_records
the number of mct records.
Definition: CodingParams.h:177
grk::EncodingParams::m_tp_on
bool m_tp_on
Enabling Tile part generation.
Definition: CodingParams.h:211
grk::grk_ppx
Definition: PPMMarker.h:28
grk::CodingParams::t_width
uint32_t t_width
XTsiz.
Definition: CodingParams.h:242
grk::TileComponentCodingParams::fromQCC
bool fromQCC
Definition: CodingParams.h:66
grk::EncodingParams::rateControlAlgorithm
uint32_t rateControlAlgorithm
Definition: CodingParams.h:217
_grk_poc
Progression order changes.
Definition: grok.h:369
grk::TileCodingParams::m_tile_data
ChunkBuffer * m_tile_data
Definition: CodingParams.h:166
grk::CodingParams::m_enc
EncodingParams m_enc
Definition: CodingParams.h:262
grk::EncoderState::EncoderState
EncoderState()
Definition: CodingParams.h:320
grk::TileComponentCodingParams::roishift
uint32_t roishift
Region Of Interest shift.
Definition: CodingParams.h:78
grk::DecoderState::ready_to_decode_tile_part_data
bool ready_to_decode_tile_part_data
Definition: CodingParams.h:312
grk::TileCodingParams::prg
GRK_PROG_ORDER prg
progression order
Definition: CodingParams.h:126
grk::TileCodingParams::num_layers_to_decode
uint32_t num_layers_to_decode
Definition: CodingParams.h:129
grk::TileComponentCodingParams::numStepSizes
uint8_t numStepSizes
Definition: CodingParams.h:74
grk::TileCodingParams
Tile coding parameters : this structure is used to store coding/decoding parameters common to all til...
Definition: CodingParams.h:117
grk::TileCodingParams::POC
bool POC
indicates if a POC marker has been used
Definition: CodingParams.h:192
grk::TileCodingParams::distoratio
double distoratio[100]
fixed_quality
Definition: CodingParams.h:153
grk::grk_mct_data
MCT data.
Definition: CodingParams.h:92
grk::TileCodingParams::tccps
TileComponentCodingParams * tccps
tile-component coding parameters
Definition: CodingParams.h:159
grk::J2K_MCT_ELEMENT_TYPE
J2K_MCT_ELEMENT_TYPE
Type of elements storing in the MCT data.
Definition: CodingParams.h:31
grk::CodingParams::tx0
uint32_t tx0
XTOsiz.
Definition: CodingParams.h:238
grk::CodingParams::t_grid_width
uint32_t t_grid_width
number of tiles in width
Definition: CodingParams.h:251
grk::MCT_TYPE_INT32
@ MCT_TYPE_INT32
MCT data is stored as signed shorts.
Definition: CodingParams.h:33
grk::BufferedStream
Byte input-output stream.
Definition: BufferedStream.h:38
grk::EncodingParams::m_fixed_quality
bool m_fixed_quality
allocation by fixed_quality
Definition: CodingParams.h:209
grk::TileComponentCodingParams::fromTileHeader
bool fromTileHeader
Definition: CodingParams.h:68
grk::TileComponentCodingParams
Tile-component coding parameters.
Definition: CodingParams.h:49
grk::DecoderState::m_last_sot_read_pos
uint64_t m_last_sot_read_pos
Position of the last SOT marker read.
Definition: CodingParams.h:303
grk::grk_simple_mcc_decorrelation_data::m_is_irreversible
uint32_t m_is_irreversible
Definition: CodingParams.h:108
grk::CodingParams::destroy
void destroy()
grk::TileCodingParams::cod
bool cod
If cod == true --> there was a COD marker for the present tile.
Definition: CodingParams.h:188
grk::DecodingParams::m_reduce
uint32_t m_reduce
if != 0, then original dimension divided by 2^(reduce); if == 0 or not used, image is decoded to the ...
Definition: CodingParams.h:222
grk::CodingParams::m_coding_params
union grk::CodingParams::@0 m_coding_params
grk::TileCodingParams::pocs
grk_poc pocs[32]
progression order changes
Definition: CodingParams.h:137
grk::TileComponentCodingParams::quant
Quantizer quant
Definition: CodingParams.h:59
grk::CodingParams::t_grid_height
uint32_t t_grid_height
number of tiles in height
Definition: CodingParams.h:253
grk::EncodingParams::writeTLM
bool writeTLM
Definition: CodingParams.h:215
grk::grk_simple_mcc_decorrelation_data::m_offset_array
grk_mct_data * m_offset_array
Definition: CodingParams.h:107
grk::TileCodingParams::numpocs
uint32_t numpocs
number of progression order changes
Definition: CodingParams.h:135
grk::MCT_TYPE_DOUBLE
@ MCT_TYPE_DOUBLE
MCT data is stored as floats.
Definition: CodingParams.h:35
grk::TileCodingParams::m_nb_tile_parts
uint8_t m_nb_tile_parts
number of tile parts for the tile.
Definition: CodingParams.h:164
grk::DecoderState::findNextTile
bool findNextTile(BufferedStream *stream)
grk::MCT_TYPE_DEPENDENCY
@ MCT_TYPE_DEPENDENCY
Definition: CodingParams.h:42
grk::DecoderState::m_state
uint32_t m_state
Decoder state: used to indicate in which part of the code stream the decoder is (main header,...
Definition: CodingParams.h:291
grk::grk_simple_mcc_decorrelation_data::m_index
uint32_t m_index
Definition: CodingParams.h:104
grk::grk_mct_data::m_element_type
J2K_MCT_ELEMENT_TYPE m_element_type
Definition: CodingParams.h:93
grk::grk_stepsize
Quantization stepsize.
Definition: Quantizer.h:35
grk::TileComponentCodingParams::qmfbid
uint8_t qmfbid
discrete wavelet transform identifier
Definition: CodingParams.h:64
grk::TileCodingParams::ppt_markers
grk_ppx * ppt_markers
ppt markers data (table indexed by Zppt)
Definition: CodingParams.h:142
grk::J2K_MCT_ARRAY_TYPE
J2K_MCT_ARRAY_TYPE
Type of MCT array.
Definition: CodingParams.h:41
grk::CodingParams::t_height
uint32_t t_height
YTsiz.
Definition: CodingParams.h:244
grk::TileCodingParams::ppt
bool ppt
If ppt == true --> there was a PPT marker for the present tile.
Definition: CodingParams.h:190
grk::EncoderState
Definition: CodingParams.h:318
grk::TileCodingParams::qcd
param_qcd qcd
Definition: CodingParams.h:195
grk::TileCodingParams::mct_norms
double * mct_norms
encoding norms
Definition: CodingParams.h:169
grk::DecoderState
Definition: CodingParams.h:272
grk::TileCodingParams::m_mct_decoding_matrix
float * m_mct_decoding_matrix
the mct decoding matrix
Definition: CodingParams.h:171
grk::DecoderState::m_skip_data
bool m_skip_data
Definition: CodingParams.h:314
grk::DecoderState::DecoderState
DecoderState()
Definition: CodingParams.h:273
grk::TileCodingParams::ppt_len
size_t ppt_len
size of ppt_data
Definition: CodingParams.h:151
GRK_J2K_MAXBANDS
#define GRK_J2K_MAXBANDS
Maximum number of sub-bands.
Definition: grok.h:82
grk::DecodingParams
Definition: CodingParams.h:220
HTParams.h
grk::DecoderState::m_end_tile_y_index
uint32_t m_end_tile_y_index
Definition: CodingParams.h:300
GRK_PROG_ORDER
enum _GRK_PROG_ORDER GRK_PROG_ORDER
Progression order.
grk::TileCodingParams::~TileCodingParams
~TileCodingParams()
grk::param_qcd
Definition: HTParams.h:78
grk::CodingParams
Coding parameters.
Definition: CodingParams.h:230
grk::DecoderState::m_start_tile_y_index
uint32_t m_start_tile_y_index
Definition: CodingParams.h:298
grk::TileCodingParams::destroy
void destroy()
grk::TileCodingParams::main_qcd_qntsty
uint32_t main_qcd_qntsty
Definition: CodingParams.h:155
grk::TileCodingParams::m_mct_coding_matrix
float * m_mct_coding_matrix
the mct coding matrix
Definition: CodingParams.h:173
grk::CodingParams::pcap
uint32_t pcap
Definition: CodingParams.h:234
grk::grk_mct_data::m_index
uint32_t m_index
Definition: CodingParams.h:95
grk::TileComponentCodingParams::cblkw
uint32_t cblkw
log2(code-blocks width)
Definition: CodingParams.h:55
grk::TileCodingParams::csty
uint32_t csty
coding style
Definition: CodingParams.h:124
grk::CodingParams::comment
char * comment[GRK_NUM_COMMENTS_SUPPORTED]
Definition: CodingParams.h:247
grk::TileComponentCodingParams::numresolutions
uint32_t numresolutions
number of resolutions
Definition: CodingParams.h:53
grk::EncodingParams::writePLT
bool writePLT
Definition: CodingParams.h:213
grk::CodingParams::ccap
uint16_t ccap
Definition: CodingParams.h:236
grk::TileComponentCodingParams::numgbits
uint8_t numgbits
number of guard bits
Definition: CodingParams.h:76
grk::TileCodingParams::ppt_buffer
uint8_t * ppt_buffer
used to keep a track of the allocated memory
Definition: CodingParams.h:147
grk::CodingParams::ppm_marker
PPMMarker * ppm_marker
Definition: CodingParams.h:255
grk::TileCodingParams::m_mct_records
grk_mct_data * m_mct_records
mct records
Definition: CodingParams.h:175
grk::TileCodingParams::TileCodingParams
TileCodingParams()
grk::TileCodingParams::m_nb_mcc_records
uint32_t m_nb_mcc_records
the number of mct records.
Definition: CodingParams.h:183
GRK_NUM_COMMENTS_SUPPORTED
#define GRK_NUM_COMMENTS_SUPPORTED
Definition: grok.h:348
grk
Copyright (C) 2016-2020 Grok Image Compression Inc.
Definition: BitIO.h:27
grk::TileCodingParams::ppt_data_size
size_t ppt_data_size
Number of bytes stored inside ppt_data.
Definition: CodingParams.h:149
grk::TileCodingParams::m_tile_part_index
int16_t m_tile_part_index
Definition: CodingParams.h:161
grk::TileComponentCodingParams::qntsty
uint8_t qntsty
quantisation style
Definition: CodingParams.h:70
grk::EncodingParams::m_tp_flag
uint8_t m_tp_flag
Flag determining tile part generation.
Definition: CodingParams.h:205
grk::TileComponentCodingParams::prch
uint32_t prch[GRK_J2K_MAXRLVLS]
precinct height (power of 2 exponent)
Definition: CodingParams.h:82
grk::TileComponentCodingParams::m_dc_level_shift
int32_t m_dc_level_shift
the dc_level_shift
Definition: CodingParams.h:84
grk::TileComponentCodingParams::prcw
uint32_t prcw[GRK_J2K_MAXRLVLS]
precinct width (power of 2 exponent)
Definition: CodingParams.h:80
grk::grk_simple_mcc_decorrelation_data
MCC decorrelation data.
Definition: CodingParams.h:103
grk::CodingParams::tcps
TileCodingParams * tcps
tile coding parameters
Definition: CodingParams.h:258
grk::EncodingParams
Definition: CodingParams.h:198
grk::TileCodingParams::main_qcd_numStepSizes
uint32_t main_qcd_numStepSizes
Definition: CodingParams.h:157
grk::MCT_TYPE_FLOAT
@ MCT_TYPE_FLOAT
MCT data is stored as signed integers.
Definition: CodingParams.h:34
grk::DecoderState::m_last_tile_part
bool m_last_tile_part
Indicate that the current tile-part is assumed to be the last tile part of the code stream.
Definition: CodingParams.h:310
grk::TileCodingParams::rates
double rates[100]
rates of layers
Definition: CodingParams.h:133
grk::CodingParams::isBinaryComment
bool isBinaryComment[GRK_NUM_COMMENTS_SUPPORTED]
Definition: CodingParams.h:249
grk::DecoderState::m_start_tile_x_index
uint32_t m_start_tile_x_index
Only tile indices in the correct range will be decoded.
Definition: CodingParams.h:297
grk::MCT_TYPE_OFFSET
@ MCT_TYPE_OFFSET
Definition: CodingParams.h:42
grk::CodingParams::num_comments
size_t num_comments
comments
Definition: CodingParams.h:246
grk::ChunkBuffer
Definition: ChunkBuffer.h:29
grk::PacketLengthMarkers
Definition: LengthMarkers.h:88
grk::EncodingParams::m_max_comp_size
size_t m_max_comp_size
Maximum rate for each component.
Definition: CodingParams.h:201
grk::grk_mct_data::m_data
uint8_t * m_data
Definition: CodingParams.h:96
grk::TileCodingParams::m_nb_max_mct_records
uint32_t m_nb_max_mct_records
the max number of mct records.
Definition: CodingParams.h:179
grk::grk_mct_data::m_data_size
uint32_t m_data_size
Definition: CodingParams.h:97
grk::TileCodingParams::m_nb_max_mcc_records
uint32_t m_nb_max_mcc_records
the max number of mct records.
Definition: CodingParams.h:185
grk::MCT_TYPE_INT16
@ MCT_TYPE_INT16
Definition: CodingParams.h:32
grk::TileComponentCodingParams::stepsizes
grk_stepsize stepsizes[GRK_J2K_MAXBANDS]
stepsizes used for quantization
Definition: CodingParams.h:72
grk::TileLengthMarkers
Definition: LengthMarkers.h:42
grk::CodingParams::plm_markers
PacketLengthMarkers * plm_markers
Definition: CodingParams.h:266
grk::TileCodingParams::m_mcc_records
grk_simple_mcc_decorrelation_data * m_mcc_records
mcc records
Definition: CodingParams.h:181
grk::grk_simple_mcc_decorrelation_data::m_decorrelation_array
grk_mct_data * m_decorrelation_array
Definition: CodingParams.h:106
grk::TileCodingParams::mct
uint32_t mct
multi-component transform identifier
Definition: CodingParams.h:131
grk::CodingParams::m_dec
DecodingParams m_dec
Definition: CodingParams.h:261
grk::TileComponentCodingParams::csty
uint8_t csty
coding style
Definition: CodingParams.h:51
grk::DecoderState::m_default_tcp
TileCodingParams * m_default_tcp
Definition: CodingParams.h:295
GRK_J2K_MAXRLVLS
#define GRK_J2K_MAXRLVLS
Maximum number of resolution levels authorized.
Definition: grok.h:81
grk::TileCodingParams::ppt_markers_count
uint32_t ppt_markers_count
number of ppt markers (reserved size)
Definition: CodingParams.h:140
grk::EncodingParams::m_tp_pos
uint32_t m_tp_pos
Position of tile part flag in progression order.
Definition: CodingParams.h:203
grk::CodingParams::tlm_markers
TileLengthMarkers * tlm_markers
Definition: CodingParams.h:265
grk::EncodingParams::m_disto_alloc
bool m_disto_alloc
allocation by rate/distortion
Definition: CodingParams.h:207
grk::DecodingParams::m_layer
uint32_t m_layer
if != 0, then only the first "layer" layers are decoded; if == 0 or not used, all the quality layers ...
Definition: CodingParams.h:224
grk::DecoderState::m_discard_tiles
bool m_discard_tiles
Definition: CodingParams.h:313
grk::grk_simple_mcc_decorrelation_data::m_nb_comps
uint32_t m_nb_comps
Definition: CodingParams.h:105
grk::CodingParams::rsiz
uint16_t rsiz
Rsiz.
Definition: CodingParams.h:232
grk::TileComponentCodingParams::cblkh
uint32_t cblkh
log2(code-blocks height)
Definition: CodingParams.h:57
grk::grk_mct_data::m_array_type
J2K_MCT_ARRAY_TYPE m_array_type
Definition: CodingParams.h:94
grk::DecoderState::m_end_tile_x_index
uint32_t m_end_tile_x_index
Definition: CodingParams.h:299
grk::CodingParams::comment_len
uint16_t comment_len[GRK_NUM_COMMENTS_SUPPORTED]
Definition: CodingParams.h:248
grk::TileCodingParams::isHT
bool isHT
Definition: CodingParams.h:194
grk::MCT_TYPE_DECORRELATION
@ MCT_TYPE_DECORRELATION
Definition: CodingParams.h:42
grk::Quantizer
Definition: Quantizer.h:52
grk::CodingParams::ty0
uint32_t ty0
YTOsiz.
Definition: CodingParams.h:240