Grok  9.7.5
CodeStreamCompress.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2016-2022 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 namespace grk
25 {
26 class CodeStream;
27 
29 {
30  public:
32  virtual ~CodeStreamCompress();
33 
34  static char* convertProgressionOrder(GRK_PROG_ORDER prg_order);
35  static uint16_t getPocSize(uint32_t numComponents, uint32_t l_nb_poc);
36 
37  bool start(void);
38  bool init(grk_cparameters* p_param, GrkImage* p_image);
39  bool compress(grk_plugin_tile* tile);
40  bool compressTile(uint16_t tileIndex, uint8_t* p_data, uint64_t data_size);
41  bool end(void);
42 
43  private:
44  bool init_header_writing(void);
45  bool get_end_header(void);
46  bool writeTilePart(TileProcessor* tileProcessor);
47  bool writeTileParts(TileProcessor* tileProcessor);
48  bool updateRates(void);
49  bool compressValidation(void);
50  bool mct_validation(void);
51 
56  bool write_soc();
57 
62  bool write_siz();
63 
68  bool write_cap();
69 
74  bool write_com();
75 
80  bool write_cod();
81 
90  bool compare_coc(uint32_t first_comp_no, uint32_t second_comp_no);
91 
99  bool write_coc(uint32_t comp_no, IBufferedStream* stream);
100 
101  bool write_coc(uint32_t comp_no);
102 
107  bool write_qcd();
108 
117  bool compare_qcc(uint32_t first_comp_no, uint32_t second_comp_no);
118 
127  bool write_qcc(uint16_t tileIndex, uint32_t comp_no, IBufferedStream* stream);
128 
129  bool write_qcc(uint32_t comp_no);
130 
135  bool writePoc();
136 
141  bool write_tlm_end();
142 
147  bool write_tlm_begin();
148 
157  bool compare_SPCod_SPCoc(uint32_t first_comp_no, uint32_t second_comp_no);
158 
166  bool write_SPCod_SPCoc(uint32_t comp_no);
167 
175  uint32_t get_SPCod_SPCoc_size(uint32_t comp_no);
176 
185  uint32_t get_SQcd_SQcc_size(uint32_t comp_no);
186 
195  bool compare_SQcd_SQcc(uint32_t first_comp_no, uint32_t second_comp_no);
196 
203  bool write_SQcd_SQcc(uint32_t comp_no);
204 
212  bool write_mct_record(grk_mct_data* p_mct_record, IBufferedStream* stream);
213 
222 
227  bool write_mco();
228 
233  bool write_cbd();
234 
239  bool write_all_coc();
240 
245  bool write_all_qcc();
246 
251  bool write_regions();
252 
261  bool write_rgn(uint16_t tile_no, uint32_t comp_no, uint32_t nb_comps);
262 
267  bool write_eoc();
268 
273  bool write_mct_data_group();
274 
285  bool getNumTileParts(uint16_t* p_nb_tile_parts, GrkImage* image);
286 
297  uint64_t getNumTilePartsForProgression(uint32_t pino, uint16_t tileno);
298 
310  bool validateProgressionOrders(const grk_progression* progressions, uint32_t numProgressions,
311  uint8_t numResolutions, uint16_t numcomps, uint16_t numlayers);
312 
313  bool init_mct_encoding(TileCodingParams* p_tcp, GrkImage* p_image);
314 
316 };
317 
318 } // namespace grk
Definition: CodeStreamCompress.h:29
bool write_regions()
Writes regions of interests.
Definition: CodeStreamCompress.cpp:1330
CodeStreamCompress(IBufferedStream *stream)
Definition: CodeStreamCompress.cpp:57
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:1512
bool write_siz()
Writes the SIZ marker (image and tile size)
Definition: CodeStreamCompress.cpp:1036
bool start(void)
Definition: CodeStreamCompress.cpp:94
bool init(grk_cparameters *p_param, GrkImage *p_image)
Definition: CodeStreamCompress.cpp:112
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:1602
bool init_mct_encoding(TileCodingParams *p_tcp, GrkImage *p_image)
Definition: CodeStreamCompress.cpp:1741
bool compare_qcc(uint32_t first_comp_no, uint32_t second_comp_no)
Compare QCC markers (quantization component)
Definition: CodeStreamCompress.cpp:1207
bool compressValidation(void)
Definition: CodeStreamCompress.cpp:1006
bool writeTilePart(TileProcessor *tileProcessor)
Definition: CodeStreamCompress.cpp:830
bool write_qcc(uint16_t tileIndex, uint32_t comp_no, IBufferedStream *stream)
Writes the QCC marker (quantization component)
virtual ~CodeStreamCompress()
Definition: CodeStreamCompress.cpp:59
bool compare_coc(uint32_t first_comp_no, uint32_t second_comp_no)
Compares 2 COC markers (Coding style component)
Definition: CodeStreamCompress.cpp:1145
bool write_com()
Writes the COM marker (comment)
Definition: CodeStreamCompress.cpp:1047
bool write_all_qcc()
Writes QCC marker for each component.
Definition: CodeStreamCompress.cpp:1317
bool mct_validation(void)
Definition: CodeStreamCompress.cpp:70
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:1952
static char * convertProgressionOrder(GRK_PROG_ORDER prg_order)
Definition: CodeStreamCompress.cpp:60
bool write_cbd()
Writes the CBD marker (Component bit depth definition)
Definition: CodeStreamCompress.cpp:1470
bool write_SQcd_SQcc(uint32_t comp_no)
Writes a SQcd or SQcc element, i.e.
Definition: CodeStreamCompress.cpp:1639
bool write_qcd()
Writes the QCD marker (quantization default)
Definition: CodeStreamCompress.cpp:1155
CompressorState compressorState_
Definition: CodeStreamCompress.h:315
bool write_mco()
Writes the MCO marker (Multiple component transformation ordering)
Definition: CodeStreamCompress.cpp:1440
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:721
bool write_coc(uint32_t comp_no, IBufferedStream *stream)
Writes the COC marker (Coding style component)
bool writePoc()
Writes the POC marker (Progression Order Change)
Definition: CodeStreamCompress.cpp:1211
bool write_all_coc()
Writes COC marker for each component.
Definition: CodeStreamCompress.cpp:1303
static uint16_t getPocSize(uint32_t numComponents, uint32_t l_nb_poc)
Definition: CodeStreamCompress.cpp:1669
bool write_tlm_end()
End writing the updated tlm.
Definition: CodeStreamCompress.cpp:1508
bool write_mcc_record(grk_simple_mcc_decorrelation_data *p_mcc_record, IBufferedStream *stream)
Writes the MCC marker (Multiple Component Collection)
Definition: CodeStreamCompress.cpp:1344
bool writeTileParts(TileProcessor *tileProcessor)
Definition: CodeStreamCompress.cpp:880
bool get_end_header(void)
Definition: CodeStreamCompress.cpp:791
bool write_mct_data_group()
Writes the CBD-MCT-MCC-MCO markers (Multi components transform)
Definition: CodeStreamCompress.cpp:1278
bool compressTile(uint16_t tileIndex, uint8_t *p_data, uint64_t data_size)
Definition: CodeStreamCompress.cpp:679
bool write_cod()
Writes the COD marker (Coding style default)
Definition: CodeStreamCompress.cpp:1080
bool write_tlm_begin()
Begin writing the TLM marker (Tile Length Marker)
Definition: CodeStreamCompress.cpp:1501
bool write_eoc()
Writes the EOC marker (End of Codestream)
Definition: CodeStreamCompress.cpp:755
bool end(void)
Definition: CodeStreamCompress.cpp:711
bool init_header_writing(void)
Definition: CodeStreamCompress.cpp:797
bool write_mct_record(grk_mct_data *p_mct_record, IBufferedStream *stream)
Writes the MCT marker (Multiple Component Transform)
Definition: CodeStreamCompress.cpp:762
bool write_SPCod_SPCoc(uint32_t comp_no)
Writes a SPCod or SPCoc element, i.e.
Definition: CodeStreamCompress.cpp:1553
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:1524
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:1591
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:1891
bool updateRates(void)
Definition: CodeStreamCompress.cpp:929
bool validateProgressionOrders(const grk_progression *progressions, uint32_t numProgressions, uint8_t numResolutions, uint16_t numcomps, uint16_t numlayers)
Validate progression orders.
Definition: CodeStreamCompress.cpp:1675
bool write_cap()
Writes the CAP marker.
Definition: CodeStreamCompress.cpp:1042
bool compress(grk_plugin_tile *tile)
Definition: CodeStreamCompress.cpp:605
bool write_soc()
Writes the SOC marker (Start Of Codestream)
Definition: CodeStreamCompress.cpp:1032
Definition: CodeStream.h:130
Definition: GrkImage.h:22
enum _GRK_PROG_ORDER GRK_PROG_ORDER
Progression order.
Copyright (C) 2016-2022 Grok Image Compression Inc.
Definition: ICacheable.h:20
Compress parameters.
Definition: grok.h:484
Plugin tile.
Definition: grok.h:1095
Progression order change.
Definition: grok.h:422
Definition: CodingParams.h:344
Definition: IBufferedStream.h:20
Definition: CodeStream.h:101
Tile coding parameters : this structure is used to store coding/decoding parameters common to all til...
Definition: CodingParams.h:122
Tile processor for decompression and compression.
Definition: TileProcessor.h:76
MCT data.
Definition: CodingParams.h:96
MCC decorrelation data.
Definition: CodingParams.h:108