Grok 12.0.1
CodeStreamCompress.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
24namespace grk
25{
26class CodeStream;
27
29{
30 public:
32 virtual ~CodeStreamCompress();
33
35 static uint16_t getPocSize(uint32_t numComponents, uint32_t l_nb_poc);
36
37 bool start(void);
40
41 private:
42 bool init_header_writing(void);
43 bool cacheEndOfHeader(void);
44 bool end(void);
45 bool writeTilePart(TileProcessor* tileProcessor);
46 bool writeTileParts(TileProcessor* tileProcessor);
47 bool updateRates(void);
48 bool compressValidation(void);
49 bool mct_validation(void);
50
55 bool write_soc();
56
61 bool write_siz();
62
67 bool write_cap();
68
73 bool write_com();
74
79 bool write_cod();
80
90
99
101
106 bool write_qcd();
107
117
127
129
134 bool writePoc();
135
140 bool write_tlm_end();
141
146 bool write_tlm_begin();
147
157
166
175
185
195
203
212
221
226 bool write_mco();
227
232 bool write_cbd();
233
238 bool write_all_coc();
239
244 bool write_all_qcc();
245
250 bool write_regions();
251
261
266 bool write_eoc();
267
273
285
297
310 uint8_t numResolutions, uint16_t numcomps, uint16_t numlayers);
311
313
315};
316
317} // namespace grk
Definition CodeStreamCompress.h:29
bool write_regions()
Writes regions of interests.
Definition CodeStreamCompress.cpp:1309
uint32_t get_SPCod_SPCoc_size(uint32_t comp_no)
Gets the size taken by writing a SPCod or SPCoc for the given tile and component.
Definition CodeStreamCompress.cpp:1491
bool write_siz()
Writes the SIZ marker (image and tile size)
Definition CodeStreamCompress.cpp:1014
bool start(void)
Definition CodeStreamCompress.cpp:97
bool init(grk_cparameters *p_param, GrkImage *p_image)
Definition CodeStreamCompress.cpp:115
bool compare_SQcd_SQcc(uint32_t first_comp_no, uint32_t second_comp_no)
Compares 2 SQcd or SQcc element, i.e.
Definition CodeStreamCompress.cpp:1580
bool init_mct_encoding(TileCodingParams *p_tcp, GrkImage *p_image)
Definition CodeStreamCompress.cpp:1719
bool compare_qcc(uint32_t first_comp_no, uint32_t second_comp_no)
Compare QCC markers (quantization component)
Definition CodeStreamCompress.cpp:1186
bool compressValidation(void)
Definition CodeStreamCompress.cpp:984
bool writeTilePart(TileProcessor *tileProcessor)
Definition CodeStreamCompress.cpp:808
virtual ~CodeStreamCompress()
Definition CodeStreamCompress.cpp:62
bool compare_coc(uint32_t first_comp_no, uint32_t second_comp_no)
Compares 2 COC markers (Coding style component)
Definition CodeStreamCompress.cpp:1124
bool write_com()
Writes the COM marker (comment)
Definition CodeStreamCompress.cpp:1025
bool write_all_qcc()
Writes QCC marker for each component.
Definition CodeStreamCompress.cpp:1296
bool mct_validation(void)
Definition CodeStreamCompress.cpp:73
bool getNumTileParts(uint16_t *p_nb_tile_parts, GrkImage *image)
Calculates the total number of tile parts needed by the compressor to compress such an image.
Definition CodeStreamCompress.cpp:1930
static char * convertProgressionOrder(GRK_PROG_ORDER prg_order)
Definition CodeStreamCompress.cpp:63
bool write_cbd()
Writes the CBD marker (Component bit depth definition)
Definition CodeStreamCompress.cpp:1449
bool write_SQcd_SQcc(uint32_t comp_no)
Writes a SQcd or SQcc element, i.e.
Definition CodeStreamCompress.cpp:1617
uint64_t compress(grk_plugin_tile *tile)
Definition CodeStreamCompress.cpp:613
bool write_qcd()
Writes the QCD marker (quantization default)
Definition CodeStreamCompress.cpp:1134
CompressorState compressorState_
Definition CodeStreamCompress.h:314
bool write_mco()
Writes the MCO marker (Multiple component transformation ordering)
Definition CodeStreamCompress.cpp:1419
bool write_rgn(uint16_t tile_no, uint32_t comp_no, uint32_t nb_comps)
Writes the RGN marker (Region Of Interest)
Definition CodeStreamCompress.cpp:699
bool write_mcc_record(grk_simple_mcc_decorrelation_data *p_mcc_record, BufferedStream *stream)
Writes the MCC marker (Multiple Component Collection)
Definition CodeStreamCompress.cpp:1323
bool cacheEndOfHeader(void)
Definition CodeStreamCompress.cpp:769
bool writePoc()
Writes the POC marker (Progression Order Change)
Definition CodeStreamCompress.cpp:1190
bool write_all_coc()
Writes COC marker for each component.
Definition CodeStreamCompress.cpp:1282
static uint16_t getPocSize(uint32_t numComponents, uint32_t l_nb_poc)
Definition CodeStreamCompress.cpp:1647
CodeStreamCompress(BufferedStream *stream)
Definition CodeStreamCompress.cpp:57
bool write_tlm_end()
End writing the updated tlm.
Definition CodeStreamCompress.cpp:1487
bool writeTileParts(TileProcessor *tileProcessor)
Definition CodeStreamCompress.cpp:858
bool write_mct_data_group()
Writes the CBD-MCT-MCC-MCO markers (Multi components transform)
Definition CodeStreamCompress.cpp:1257
bool write_cod()
Writes the COD marker (Coding style default)
Definition CodeStreamCompress.cpp:1059
bool write_tlm_begin()
Begin writing the TLM marker (Tile Length Marker)
Definition CodeStreamCompress.cpp:1480
bool write_eoc()
Writes the EOC marker (End of Codestream)
Definition CodeStreamCompress.cpp:733
bool write_coc(uint32_t comp_no, BufferedStream *stream)
Writes the COC marker (Coding style component)
bool end(void)
Definition CodeStreamCompress.cpp:689
bool write_qcc(uint16_t tileIndex, uint32_t comp_no, BufferedStream *stream)
Writes the QCC marker (quantization component)
bool init_header_writing(void)
Definition CodeStreamCompress.cpp:775
bool write_mct_record(grk_mct_data *p_mct_record, BufferedStream *stream)
Writes the MCT marker (Multiple Component Transform)
Definition CodeStreamCompress.cpp:740
bool write_SPCod_SPCoc(uint32_t comp_no)
Writes a SPCod or SPCoc element, i.e.
Definition CodeStreamCompress.cpp:1532
bool compare_SPCod_SPCoc(uint32_t first_comp_no, uint32_t second_comp_no)
Compare 2 a SPCod/ SPCoc elements, i.e.
Definition CodeStreamCompress.cpp:1503
uint32_t get_SQcd_SQcc_size(uint32_t comp_no)
Gets the size taken by writing SQcd or SQcc element, i.e.
Definition CodeStreamCompress.cpp:1569
uint64_t getNumTilePartsForProgression(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 CodeStreamCompress.cpp:1869
bool updateRates(void)
Definition CodeStreamCompress.cpp:908
bool validateProgressionOrders(const grk_progression *progressions, uint32_t numProgressions, uint8_t numResolutions, uint16_t numcomps, uint16_t numlayers)
Validate progression orders.
Definition CodeStreamCompress.cpp:1653
bool write_cap()
Writes the CAP marker.
Definition CodeStreamCompress.cpp:1020
bool write_soc()
Writes the SOC marker (Start Of Codestream)
Definition CodeStreamCompress.cpp:1010
Definition CodeStream.h:133
Definition GrkImage.h:24
enum _GRK_PROG_ORDER GRK_PROG_ORDER
Progression order.
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
Compress parameters.
Definition grok.h:976
Plugin tile.
Definition grok.h:808
Progression order change.
Definition grok.h:153
Definition BufferedStream.h:35
Definition CodingParams.h:341
Definition CodeStream.h:107
Tile coding parameters : this structure is used to store coding/decoding parameters common to all til...
Definition CodingParams.h:122
Definition TileProcessor.h:78
MCT data.
Definition CodingParams.h:96
MCC decorrelation data.
Definition CodingParams.h:108