Grok  9.7.5
FileFormatCompress.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 #pragma once
22 
23 namespace grk
24 {
26 {
27  public:
29  virtual ~FileFormatCompress();
30 
31  bool init(grk_cparameters* p_param, GrkImage* p_image);
32  bool start(void);
33  bool compress(grk_plugin_tile* tile);
34  bool compressTile(uint16_t tileIndex, uint8_t* p_data, uint64_t data_size);
35  bool end(void);
36 
37  private:
38  bool validate_icc(GRK_COLOR_SPACE colourSpace, uint8_t* iccbuf, uint32_t icclen);
39  grk_color* getColour(void);
40  void find_cf(double x, uint32_t* num, uint32_t* den);
41  void write_res_box(double resx, double resy, uint32_t box_id, uint8_t** current_res_ptr);
42  uint8_t* write_res(uint32_t* p_nb_bytes_written);
43  uint8_t* write_bpc(uint32_t* p_nb_bytes_written);
44  uint8_t* write_colr(uint32_t* p_nb_bytes_written);
45  uint8_t* write_component_mapping(uint32_t* p_nb_bytes_written);
46  uint8_t* write_palette_clr(uint32_t* p_nb_bytes_written);
47  uint8_t* write_channel_definition(uint32_t* p_nb_bytes_written);
48  bool write_jp2h(void);
49  uint8_t* write_ihdr(uint32_t* p_nb_bytes_written);
50  uint8_t* write_buffer(uint32_t boxId, grk_buf8* buffer, uint32_t* p_nb_bytes_written);
51  bool write_uuids(void);
52  bool write_ftyp(void);
53  bool write_jp2c(void);
54  bool write_jp(void);
55  bool default_validation(void);
56  void init_header_writing();
57  void init_end_header_writing(void);
58  void init_compressValidation(void);
59  uint8_t* write_xml(uint32_t* p_nb_bytes_written);
60  bool skip_jp2c(void);
61 
66 };
67 
68 } // namespace grk
Definition: CodeStreamCompress.h:29
Definition: FileFormatCompress.h:26
bool validate_icc(GRK_COLOR_SPACE colourSpace, uint8_t *iccbuf, uint32_t icclen)
Definition: FileFormatCompress.cpp:715
uint8_t * write_channel_definition(uint32_t *p_nb_bytes_written)
Definition: FileFormatCompress.cpp:422
uint8_t * write_colr(uint32_t *p_nb_bytes_written)
Definition: FileFormatCompress.cpp:362
FileFormatCompress(IBufferedStream *stream)
Definition: FileFormatCompress.cpp:43
void write_res_box(double resx, double resy, uint32_t box_id, uint8_t **current_res_ptr)
Definition: FileFormatCompress.cpp:564
CodeStreamCompress * codeStream
Definition: FileFormatCompress.h:62
uint8_t * write_bpc(uint32_t *p_nb_bytes_written)
Definition: FileFormatCompress.cpp:470
uint8_t * write_ihdr(uint32_t *p_nb_bytes_written)
Definition: FileFormatCompress.cpp:640
grk_color * getColour(void)
Definition: FileFormatCompress.cpp:54
uint64_t j2k_codestream_offset
Definition: FileFormatCompress.h:64
uint8_t * write_res(uint32_t *p_nb_bytes_written)
Definition: FileFormatCompress.cpp:498
bool skip_jp2c(void)
Definition: FileFormatCompress.cpp:977
bool init(grk_cparameters *p_param, GrkImage *p_image)
Definition: FileFormatCompress.cpp:749
GrkImage * inputImage_
Definition: FileFormatCompress.h:65
bool write_uuids(void)
Definition: FileFormatCompress.cpp:166
bool end(void)
Definition: FileFormatCompress.cpp:951
bool compress(grk_plugin_tile *tile)
Definition: FileFormatCompress.cpp:943
bool write_jp2c(void)
Definition: FileFormatCompress.cpp:77
uint8_t * write_buffer(uint32_t boxId, grk_buf8 *buffer, uint32_t *p_nb_bytes_written)
Definition: FileFormatCompress.cpp:612
uint8_t * write_palette_clr(uint32_t *p_nb_bytes_written)
Definition: FileFormatCompress.cpp:283
bool default_validation(void)
Definition: FileFormatCompress.cpp:987
bool write_jp2h(void)
Definition: FileFormatCompress.cpp:192
bool start(void)
Definition: FileFormatCompress.cpp:687
bool needs_xl_jp2c_box_length
Definition: FileFormatCompress.h:63
bool write_ftyp(void)
Definition: FileFormatCompress.cpp:121
bool write_jp(void)
Definition: FileFormatCompress.cpp:61
uint8_t * write_xml(uint32_t *p_nb_bytes_written)
Definition: FileFormatCompress.cpp:608
void find_cf(double x, uint32_t *num, uint32_t *den)
Definition: FileFormatCompress.cpp:535
uint8_t * write_component_mapping(uint32_t *p_nb_bytes_written)
Definition: FileFormatCompress.cpp:333
bool compressTile(uint16_t tileIndex, uint8_t *p_data, uint64_t data_size)
Definition: FileFormatCompress.cpp:947
virtual ~FileFormatCompress()
Definition: FileFormatCompress.cpp:47
void init_header_writing()
Definition: FileFormatCompress.cpp:969
void init_end_header_writing(void)
Definition: FileFormatCompress.cpp:961
void init_compressValidation(void)
Definition: FileFormatCompress.cpp:965
JPEG 2000 file format reader/writer.
Definition: FileFormat.h:132
Definition: GrkImage.h:22
enum _GRK_COLOR_SPACE GRK_COLOR_SPACE
Supported color spaces.
Copyright (C) 2016-2022 Grok Image Compression Inc.
Definition: ICacheable.h:20
ICC profile, palette, channel definition.
Definition: grok.h:694
Compress parameters.
Definition: grok.h:484
Plugin tile.
Definition: grok.h:1095
Definition: IBufferedStream.h:20
Definition: CodeStream.h:101