Grok  7.6.6
markers.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 namespace grk {
25 
26 const uint32_t MCT_ELEMENT_SIZE[] = { 2, 4, 4, 8 };
27 
28 
29 typedef void (*j2k_mct_function)(const void *p_src_data, void *p_dest_data,
30  uint64_t nb_elem);
31 
32 
33 void j2k_read_int16_to_float(const void *p_src_data, void *p_dest_data,
34  uint64_t nb_elem);
35 void j2k_read_int32_to_float(const void *p_src_data, void *p_dest_data,
36  uint64_t nb_elem);
37 void j2k_read_float32_to_float(const void *p_src_data, void *p_dest_data,
38  uint64_t nb_elem);
39 void j2k_read_float64_to_float(const void *p_src_data, void *p_dest_data,
40  uint64_t nb_elem);
41 
42 void j2k_read_int16_to_int32(const void *p_src_data, void *p_dest_data,
43  uint64_t nb_elem);
44 void j2k_read_int32_to_int32(const void *p_src_data, void *p_dest_data,
45  uint64_t nb_elem);
46 void j2k_read_float32_to_int32(const void *p_src_data, void *p_dest_data,
47  uint64_t nb_elem);
48 void j2k_read_float64_to_int32(const void *p_src_data, void *p_dest_data,
49  uint64_t nb_elem);
50 
51 void j2k_write_float_to_int16(const void *p_src_data, void *p_dest_data,
52  uint64_t nb_elem);
53 void j2k_write_float_to_int32(const void *p_src_data, void *p_dest_data,
54  uint64_t nb_elem);
55 void j2k_write_float_to_float(const void *p_src_data, void *p_dest_data,
56  uint64_t nb_elem);
57 void j2k_write_float_to_float64(const void *p_src_data,
58  void *p_dest_data, uint64_t nb_elem);
59 
67 bool j2k_add_mhmarker( grk_codestream_index *cstr_index, uint32_t type,
68  uint64_t pos, uint32_t len);
69 
75 bool j2k_write_soc(CodeStream *codeStream);
76 
81 bool j2k_read_soc(CodeStream *codeStream);
82 
88 bool j2k_write_siz(CodeStream *codeStream);
89 
97 bool j2k_read_siz(CodeStream *codeStream, uint8_t *p_header_data,
98  uint16_t header_size);
99 
107 bool j2k_read_cap(CodeStream *codeStream, uint8_t *p_header_data,
108  uint16_t header_size);
109 
115 bool j2k_write_cap(CodeStream *codeStream);
116 
122 bool j2k_write_com(CodeStream *codeStream);
123 
132 bool j2k_read_com(CodeStream *codeStream, uint8_t *p_header_data,
133  uint16_t header_size);
139 bool j2k_write_cod(CodeStream *codeStream);
140 
149 bool j2k_read_cod(CodeStream *codeStream, uint8_t *p_header_data,uint16_t header_size);
150 
160 bool j2k_compare_coc(CodeStream *codeStream, uint32_t first_comp_no,
161  uint32_t second_comp_no);
162 
171 bool j2k_write_coc(CodeStream *codeStream, uint32_t comp_no,
172  BufferedStream *stream);
173 
182 bool j2k_read_coc(CodeStream *codeStream, uint8_t *p_header_data,
183  uint16_t header_size);
184 
190 bool j2k_write_qcd(CodeStream *codeStream);
191 
199 bool j2k_read_qcd(CodeStream *codeStream, uint8_t *p_header_data,
200  uint16_t header_size);
201 
211 bool j2k_compare_qcc(CodeStream *codeStream, uint32_t first_comp_no,
212  uint32_t second_comp_no);
213 
223 bool j2k_write_qcc(CodeStream *codeStream, uint16_t tile_index, uint32_t comp_no,
224  BufferedStream *stream);
233 bool j2k_read_qcc(CodeStream *codeStream, uint8_t *p_header_data,
234  uint16_t header_size);
235 
236 uint16_t getPocSize(uint32_t l_nb_comp, uint32_t l_nb_poc);
237 
243 bool j2k_write_poc(CodeStream *codeStream);
244 
245 
253 bool j2k_read_poc(CodeStream *codeStream, uint8_t *p_header_data,
254  uint16_t header_size);
255 
264 bool j2k_read_crg(CodeStream *codeStream, uint8_t *p_header_data,
265  uint16_t header_size);
273 bool j2k_read_tlm(CodeStream *codeStream, uint8_t *p_header_data,
274  uint16_t header_size);
275 
281 bool j2k_write_tlm_end(CodeStream *codeStream);
282 
283 
289 bool j2k_write_tlm_begin(CodeStream *codeStream);
290 
291 
300 bool j2k_read_plm(CodeStream *codeStream, uint8_t *p_header_data,
301  uint16_t header_size);
310 bool j2k_read_plt(CodeStream *codeStream, uint8_t *p_header_data,
311  uint16_t header_size);
312 
322 bool j2k_read_ppm(CodeStream *codeStream, uint8_t *p_header_data,
323  uint16_t header_size);
324 
331 bool j2k_merge_ppm(CodingParams *p_cp);
332 
341 bool j2k_read_ppt(CodeStream *codeStream, uint8_t *p_header_data,
342  uint16_t header_size);
343 
350 bool j2k_merge_ppt(TileCodingParams *p_tcp);
351 
360 bool j2k_read_sot(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size);
361 
362 
372 bool j2k_compare_SPCod_SPCoc(CodeStream *codeStream,
373  uint32_t first_comp_no, uint32_t second_comp_no);
374 
383 bool j2k_write_SPCod_SPCoc(CodeStream *codeStream, uint32_t comp_no);
384 
393 uint32_t j2k_get_SPCod_SPCoc_size(CodeStream *codeStream, uint32_t comp_no);
394 
403 bool j2k_read_SPCod_SPCoc(CodeStream *codeStream,
404  uint32_t compno, uint8_t *p_header_data, uint16_t *header_size);
405 
414 uint32_t j2k_get_SQcd_SQcc_size(CodeStream *codeStream, uint32_t comp_no);
415 
425 bool j2k_compare_SQcd_SQcc(CodeStream *codeStream,
426  uint32_t first_comp_no, uint32_t second_comp_no);
427 
435 bool j2k_write_SQcd_SQcc(CodeStream *codeStream,uint32_t comp_no);
436 
440 void j2k_update_tlm(CodeStream *codeStream, uint16_t tile_index, uint32_t tile_part_size);
441 
454 bool j2k_read_SQcd_SQcc(CodeStream *codeStream, bool fromQCC,uint32_t compno,
455  uint8_t *p_header_data, uint16_t *header_size);
456 
464 bool j2k_write_mct_record(grk_mct_data *p_mct_record, BufferedStream *stream);
465 
474 bool j2k_read_mct(CodeStream *codeStream, uint8_t *p_header_data,
475  uint16_t header_size);
476 
485  BufferedStream *stream);
486 
495 bool j2k_read_mcc(CodeStream *codeStream, uint8_t *p_header_data,
496  uint16_t header_size);
497 
503 bool j2k_write_mco(CodeStream *codeStream);
504 
513 bool j2k_read_mco(CodeStream *codeStream, uint8_t *p_header_data,
514  uint16_t header_size);
515 
516 bool j2k_add_mct(TileCodingParams *p_tcp, GrkImage *p_image, uint32_t index);
517 
518 
524 bool j2k_write_cbd(CodeStream *codeStream);
525 
534 bool j2k_read_cbd(CodeStream *codeStream, uint8_t *p_header_data,
535  uint16_t header_size);
536 
542 bool j2k_write_all_coc(CodeStream *codeStream);
543 
549 bool j2k_write_all_qcc(CodeStream *codeStream);
550 
556 bool j2k_write_regions(CodeStream *codeStream);
557 
563 bool j2k_write_epc(CodeStream *codeStream);
564 
565 void j2k_update_tlm(CodeStream *codeStream, uint16_t tile_index, uint32_t tile_part_size) ;
566 
576 bool j2k_write_rgn(CodeStream *codeStream, uint16_t tile_no, uint32_t comp_no,
577  uint32_t nb_comps);
578 
586 bool j2k_read_rgn(CodeStream *codeStream, uint8_t *p_header_data,
587  uint16_t header_size);
588 
594 bool j2k_write_eoc(CodeStream *codeStream);
595 
601 bool j2k_write_mct_data_group(CodeStream *codeStream);
602 
603 }
604 
Definition: GrkImage.h:11
Copyright (C) 2016-2021 Grok Image Compression Inc.
Definition: BitIO.cpp:23
void(* j2k_mct_function)(const void *p_src_data, void *p_dest_data, uint64_t nb_elem)
Definition: markers.h:29
bool j2k_read_qcd(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size)
Reads a QCD marker (Quantization defaults)
Definition: markers.cpp:660
bool j2k_add_mct(TileCodingParams *p_tcp, GrkImage *p_image, uint32_t index)
Definition: markers.cpp:1910
void j2k_write_float_to_float(const void *p_src_data, void *p_dest_data, uint64_t nb_elem)
Definition: markers.cpp:94
bool j2k_read_mcc(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size)
Reads a MCC marker (Multiple Component Collection)
Definition: markers.cpp:1608
void j2k_write_float_to_float64(const void *p_src_data, void *p_dest_data, uint64_t nb_elem)
Definition: markers.cpp:98
void j2k_read_int16_to_int32(const void *p_src_data, void *p_dest_data, uint64_t nb_elem)
Definition: markers.cpp:70
const uint32_t MCT_ELEMENT_SIZE[]
Definition: markers.h:26
bool j2k_write_cap(CodeStream *codeStream)
Writes the CAP marker.
Definition: markers.cpp:227
bool j2k_read_poc(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size)
Reads a POC marker (Progression Order Change)
Definition: markers.cpp:844
void j2k_read_int16_to_float(const void *p_src_data, void *p_dest_data, uint64_t nb_elem)
Definition: markers.cpp:54
bool j2k_read_mct(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size)
Reads a MCT marker (Multiple Component Transform)
Definition: markers.cpp:1392
bool j2k_write_coc(CodeStream *codeStream, uint32_t comp_no)
Definition: markers.cpp:534
bool j2k_write_mcc_record(grk_simple_mcc_decorrelation_data *p_mcc_record, BufferedStream *stream)
Writes the MCC marker (Multiple Component Collection)
Definition: markers.cpp:1515
bool j2k_write_tlm_begin(CodeStream *codeStream)
Begin writing the TLM marker (Tile Length Marker)
Definition: markers.cpp:2065
bool j2k_write_soc(CodeStream *codeStream)
Writes the SOC marker (Start Of Codestream)
Definition: markers.cpp:136
bool j2k_read_cap(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size)
Reads a CAP marker.
Definition: markers.cpp:193
void j2k_read_float32_to_float(const void *p_src_data, void *p_dest_data, uint64_t nb_elem)
Definition: markers.cpp:62
void j2k_read_float32_to_int32(const void *p_src_data, void *p_dest_data, uint64_t nb_elem)
Definition: markers.cpp:78
uint32_t j2k_get_SPCod_SPCoc_size(CodeStream *codeStream, uint32_t comp_no)
Gets the size taken by writing a SPCod or SPCoc for the given tile and component.
Definition: markers.cpp:2084
bool j2k_add_mhmarker(grk_codestream_index *cstr_index, uint32_t type, uint64_t pos, uint32_t len)
Add main header marker information.
Definition: markers.cpp:106
void j2k_write_float_to_int32(const void *p_src_data, void *p_dest_data, uint64_t nb_elem)
Definition: markers.cpp:90
bool j2k_write_tlm_end(CodeStream *codeStream)
End writing the updated tlm.
Definition: markers.cpp:2079
bool j2k_merge_ppm(CodingParams *p_cp)
Merges all PPM markers read (Packed headers, main header)
Definition: markers.cpp:1019
bool j2k_read_crg(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size)
Reads a CRG marker (Component registration)
Definition: markers.cpp:937
bool j2k_read_rgn(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size)
Reads a RGN marker (Region Of Interest)
Definition: markers.cpp:1221
bool j2k_compare_SQcd_SQcc(CodeStream *codeStream, uint32_t first_comp_no, uint32_t second_comp_no)
Compares 2 SQcd or SQcc element, i.e.
Definition: markers.cpp:2299
bool j2k_write_rgn(CodeStream *codeStream, uint16_t tile_no, uint32_t comp_no, uint32_t nb_comps)
Writes the RGN marker (Region Of Interest)
Definition: markers.cpp:1167
bool j2k_write_qcd(CodeStream *codeStream)
Writes the QCD marker (quantization default)
Definition: markers.cpp:631
bool j2k_write_all_coc(CodeStream *codeStream)
Writes COC marker for each component.
Definition: markers.cpp:1293
bool j2k_write_eoc(CodeStream *codeStream)
Writes the EOC marker (End of Codestream)
Definition: markers.cpp:1202
void j2k_update_tlm(CodeStream *codeStream, uint16_t tile_index, uint32_t tile_part_size)
Updates the Tile Length Marker.
Definition: markers.cpp:2074
void j2k_read_int32_to_float(const void *p_src_data, void *p_dest_data, uint64_t nb_elem)
Definition: markers.cpp:58
bool j2k_write_epc(CodeStream *codeStream)
Writes EPC ????
Definition: markers.cpp:1338
bool j2k_read_coc(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size)
Reads a COC marker (Coding Style Component)
Definition: markers.cpp:591
bool j2k_write_cbd(CodeStream *codeStream)
Writes the CBD marker (Component bit depth definition)
Definition: markers.cpp:1977
bool j2k_write_mco(CodeStream *codeStream)
Writes the MCO marker (Multiple component transformation ordering)
Definition: markers.cpp:1826
bool j2k_read_SPCod_SPCoc(CodeStream *codeStream, uint32_t compno, uint8_t *p_header_data, uint16_t *header_size)
Reads a SPCod or SPCoc element, i.e.
Definition: markers.cpp:2170
void j2k_write_float_to_int16(const void *p_src_data, void *p_dest_data, uint64_t nb_elem)
Definition: markers.cpp:86
bool j2k_read_sot(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size)
Read SOT (Start of tile part) marker.
Definition: markers.cpp:1160
bool j2k_read_tlm(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size)
Reads a TLM marker (Tile Length Marker)
Definition: markers.cpp:2055
bool j2k_merge_ppt(TileCodingParams *p_tcp)
Merges all PPT markers read (Packed packet headers, tile-part header)
Definition: markers.cpp:1109
bool j2k_write_mct_record(grk_mct_data *p_mct_record, BufferedStream *stream)
Writes the MCT marker (Multiple Component Transform)
Definition: markers.cpp:1354
bool j2k_compare_qcc(CodeStream *codeStream, uint32_t first_comp_no, uint32_t second_comp_no)
Compare QCC markers (quantization component)
Definition: markers.cpp:717
uint16_t getPocSize(uint32_t nb_comp, uint32_t nb_poc)
Definition: markers.cpp:773
void j2k_read_float64_to_float(const void *p_src_data, void *p_dest_data, uint64_t nb_elem)
Definition: markers.cpp:66
bool j2k_write_siz(CodeStream *codeStream)
Writes the SIZ marker (image and tile size)
Definition: markers.cpp:178
bool j2k_read_cbd(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size)
Reads a CBD marker (Component bit depth definition)
Definition: markers.cpp:2016
bool j2k_write_all_qcc(CodeStream *codeStream)
Writes QCC marker for each component.
Definition: markers.cpp:1308
uint32_t j2k_get_SQcd_SQcc_size(CodeStream *codeStream, uint32_t comp_no)
Gets the size taken by writing SQcd or SQcc element, i.e.
Definition: markers.cpp:2289
bool j2k_write_SPCod_SPCoc(CodeStream *codeStream, uint32_t comp_no)
Writes a SPCod or SPCoc element, i.e.
Definition: markers.cpp:2131
bool j2k_read_plm(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size)
Reads a PLM marker (Packet length, main header marker)
Definition: markers.cpp:967
void j2k_read_float64_to_int32(const void *p_src_data, void *p_dest_data, uint64_t nb_elem)
Definition: markers.cpp:82
bool j2k_read_plt(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size)
Reads a PLT marker (Packet length, tile-part header)
Definition: markers.cpp:985
bool j2k_write_poc(CodeStream *codeStream)
Writes the POC marker (Progression Order Change)
Definition: markers.cpp:779
bool j2k_read_siz(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size)
Reads a SIZ marker (image and tile size)
Definition: markers.cpp:286
bool j2k_read_soc(CodeStream *codeStream)
Reads a SOC marker (Start of Codestream)
Definition: markers.cpp:148
bool j2k_compare_coc(CodeStream *codeStream, uint32_t first_comp_no, uint32_t second_comp_no)
Compares 2 COC markers (Coding style component)
Definition: markers.cpp:570
bool j2k_read_qcc(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size)
Reads a QCC marker (Quantization component)
Definition: markers.cpp:729
void j2k_read_int32_to_int32(const void *p_src_data, void *p_dest_data, uint64_t nb_elem)
Definition: markers.cpp:74
bool j2k_read_mco(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size)
Reads a MCO marker (Multiple Component Transform Ordering)
Definition: markers.cpp:1865
bool j2k_read_com(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size)
Reads a COM marker (comments)
Definition: markers.cpp:335
bool j2k_read_cod(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size)
Reads a COD marker (Coding Style defaults)
Definition: markers.cpp:430
bool j2k_write_cod(CodeStream *codeStream)
Writes the COD marker (Coding style default)
Definition: markers.cpp:385
bool j2k_read_ppm(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size)
Reads a PPM marker (Packed packet headers, main header)
Definition: markers.cpp:1005
bool j2k_write_qcc(CodeStream *codeStream, uint32_t comp_no)
Definition: markers.cpp:684
bool j2k_compare_SPCod_SPCoc(CodeStream *codeStream, uint32_t first_comp_no, uint32_t second_comp_no)
Compare 2 a SPCod/ SPCoc elements, i.e.
Definition: markers.cpp:2100
bool j2k_read_ppt(CodeStream *codeStream, uint8_t *p_header_data, uint16_t header_size)
Reads a PPT marker (Packed packet headers, tile-part header)
Definition: markers.cpp:1031
bool j2k_read_SQcd_SQcc(CodeStream *codeStream, bool fromQCC, uint32_t comp_no, uint8_t *p_header_data, uint16_t *header_size)
Reads a SQcd or SQcc element, i.e.
Definition: markers.cpp:2321
bool j2k_write_mct_data_group(CodeStream *codeStream)
Writes the CBD-MCT-MCC-MCO markers (Multi components transform)
Definition: markers.cpp:1266
bool j2k_write_SQcd_SQcc(CodeStream *codeStream, uint32_t comp_no)
Writes a SQcd or SQcc element, i.e.
Definition: markers.cpp:2310
bool j2k_write_regions(CodeStream *codeStream)
Writes regions of interests.
Definition: markers.cpp:1322
bool j2k_write_com(CodeStream *codeStream)
Writes the COM marker (comment)
Definition: markers.cpp:293
Code stream index info.
Definition: grok.h:1161
Byte input-output stream.
Definition: BufferedStream.h:38
Definition: CodeStream.h:163
Coding parameters.
Definition: CodingParams.h:238
Tile coding parameters : this structure is used to store coding/decoding parameters common to all til...
Definition: CodingParams.h:121
MCT data.
Definition: CodingParams.h:96
MCC decorrelation data.
Definition: CodingParams.h:107