Grok  9.5.0
j2kmarkers.hpp
Go to the documentation of this file.
1 // Copyright (c) 2019 - 2021, Osamu Watanabe
2 // All rights reserved.
3 //
4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are met:
6 //
7 // 1. Redistributions of source code must retain the above copyright notice, this
8 // list of conditions and the following disclaimer.
9 //
10 // 2. Redistributions in binary form must reproduce the above copyright notice,
11 // this list of conditions and the following disclaimer in the documentation
12 // and/or other materials provided with the distribution.
13 //
14 // 3. Neither the name of the copyright holder nor the names of its
15 // contributors may be used to endorse or promote products derived from
16 // this software without specific prior written permission.
17 //
18 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21 // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
22 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24 // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
25 // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
26 // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 
29 #pragma once
30 
31 #include <cstdint>
32 #include <vector>
33 #include "open_htj2k_typedef.hpp"
34 #include "codestream.hpp"
35 #include "marker_def.hpp"
36 
37 /********************************************************************************
38  * j2k_marker_io_base
39  *******************************************************************************/
41  protected:
42  // marker code
43  uint16_t code;
44  // length of marker segment in bytes
45  uint16_t Lmar{};
46  // some markers requires pointer to buffer
47  uint8_t *buf;
48  // position in buffer
49  uint16_t pos;
50  bool is_set;
51 
52  public:
53  explicit j2k_marker_io_base(uint16_t mar) : code(mar), buf(nullptr), pos(0), is_set(false) {}
54  ~j2k_marker_io_base() = default;
55  void set_buf(uint8_t *p);
56  uint16_t get_marker() const;
57  uint16_t get_length() const;
58  uint8_t *get_buf();
59  uint8_t get_byte();
60  uint16_t get_word();
61  uint32_t get_dword();
62 };
63 
64 /********************************************************************************
65  * SIZ_marker
66  *******************************************************************************/
68  private:
69  uint16_t Rsiz;
70  uint32_t Xsiz;
71  uint32_t Ysiz;
72  uint32_t XOsiz;
73  uint32_t YOsiz;
74  uint32_t XTsiz;
75  uint32_t YTsiz;
76  uint32_t XTOsiz;
77  uint32_t YTOsiz;
78  uint16_t Csiz;
79  std::vector<uint8_t> Ssiz;
80  std::vector<uint8_t> XRsiz;
81  std::vector<uint8_t> YRsiz;
82 
83  public:
84  explicit SIZ_marker(j2c_src_memory &in);
85  SIZ_marker(uint16_t R, uint32_t X, uint32_t Y, uint32_t XO, uint32_t YO, uint32_t XT, uint32_t YT,
86  uint32_t XTO, uint32_t YTO, uint16_t C, std::vector<uint8_t> &S, std::vector<uint8_t> &XR,
87  std::vector<uint8_t> &YR, bool needCAP);
88  int write(j2c_destination_base &dst);
89  bool is_signed(uint16_t c);
90  uint8_t get_bitdepth(uint16_t c);
91  void get_image_size(element_siz &siz) const;
92  uint32_t get_component_stride(uint16_t c) const;
93  void get_image_origin(element_siz &siz) const;
94  void get_tile_size(element_siz &siz) const;
95  void get_tile_origin(element_siz &siz) const;
96  void get_subsampling_factor(element_siz &siz, uint16_t c);
97  uint16_t get_num_components() const;
98  uint8_t get_chroma_format() const;
99 };
100 
101 /********************************************************************************
102  * CAP_marker
103  *******************************************************************************/
105  private:
106  uint32_t Pcap;
107  uint16_t Ccap[32];
108  void set_Pcap(uint8_t part);
109 
110  public:
111  CAP_marker();
112  explicit CAP_marker(j2c_src_memory &in);
113  void set_Ccap(uint16_t val, uint8_t Ccap);
114  uint32_t get_Pcap() const;
115  uint16_t get_Ccap(uint8_t n);
116  int write(j2c_destination_base &dst);
117 };
118 
119 /********************************************************************************
120  * CPF_marker
121  *******************************************************************************/
123  private:
124  std::vector<uint16_t> Pcpf;
125 
126  public:
127  CPF_marker();
128  explicit CPF_marker(j2c_src_memory &in);
130 };
131 
132 /********************************************************************************
133  * COD_marker
134  *******************************************************************************/
136  private:
137  uint8_t Scod;
138  uint32_t SGcod;
139  std::vector<uint8_t> SPcod;
140 
141  public:
142  explicit COD_marker(j2c_src_memory &in);
143  COD_marker(bool is_max_precincts, bool use_SOP, bool use_EPH, uint8_t progression_order,
144  uint16_t number_of_layers, uint8_t use_color_trafo, uint8_t dwt_levels, uint8_t log2cblksizex,
145  uint8_t log2cblksizey, uint8_t codeblock_style, uint8_t reversible_flag,
146  std::vector<uint8_t> log2PPx, std::vector<uint8_t> log2PPy);
147  int write(j2c_destination_base &dst);
148  bool is_maximum_precincts() const;
149  bool is_use_SOP() const;
150  bool is_use_EPH() const;
151  uint8_t get_progression_order() const;
152  uint16_t get_number_of_layers() const;
153  uint8_t use_color_trafo() const;
154  uint8_t get_dwt_levels();
155  void get_codeblock_size(element_siz &out);
156  void get_precinct_size(element_siz &out, uint8_t resolution);
157  uint8_t get_Cmodes();
158  uint8_t get_transformation();
159 };
160 
161 /********************************************************************************
162  * COC_marker
163  *******************************************************************************/
165  private:
166  uint16_t Ccoc;
167  uint8_t Scoc;
168  std::vector<uint8_t> SPcoc;
169 
170  public:
171  COC_marker();
172  COC_marker(j2c_src_memory &in, uint16_t Csiz);
173  uint16_t get_component_index() const;
174  bool is_maximum_precincts() const;
175  uint8_t get_dwt_levels();
176  void get_codeblock_size(element_siz &out);
177  void get_precinct_size(element_siz &out, uint8_t resolution);
178  uint8_t get_Cmodes();
179  uint8_t get_transformation();
180 };
181 
182 /********************************************************************************
183  * RGN_marker
184  *******************************************************************************/
186  private:
187  uint16_t Crgn;
188  uint8_t Srgn;
189  uint8_t SPrgn;
190 
191  public:
192  RGN_marker();
193  RGN_marker(j2c_src_memory &in, uint16_t Csiz);
194  uint16_t get_component_index() const;
195  uint8_t get_ROIshift() const;
196 };
197 
198 /********************************************************************************
199  * QCD_marker
200  *******************************************************************************/
202  private:
203  uint8_t Sqcd;
204  std::vector<uint16_t> SPqcd;
206 
207  public:
208  explicit QCD_marker(j2c_src_memory &in);
209  QCD_marker(uint8_t number_of_guardbits, uint8_t dwt_levels, uint8_t transformation, bool is_derived,
210  uint8_t RI, uint8_t use_ycc, double basestep = 1.0 / 256.0, uint8_t qfactor = 0xFF);
211  int write(j2c_destination_base &dst);
212  uint8_t get_quantization_style() const;
213  uint8_t get_exponents(uint8_t nb);
214  uint16_t get_mantissas(uint8_t nb);
215  uint8_t get_number_of_guardbits() const;
216  // return MAGB value for CAP
217  uint8_t get_MAGB();
218 };
219 
220 /********************************************************************************
221  * QCC_marker
222  *******************************************************************************/
224  private:
225  uint16_t max_components;
226  uint16_t Cqcc;
227  uint8_t Sqcc;
228  std::vector<uint16_t> SPqcc;
230 
231  public:
232  QCC_marker(uint16_t Csiz, uint16_t c, uint8_t number_of_guardbits, uint8_t dwt_levels,
233  uint8_t transformation, bool is_derived, uint8_t RI, uint8_t use_ycc, uint8_t qfactor,
234  uint8_t chroma_format);
235  QCC_marker(j2c_src_memory &in, uint16_t Csiz);
236  int write(j2c_destination_base &dst);
237  uint16_t get_component_index() const;
238  uint8_t get_quantization_style() const;
239  uint8_t get_exponents(uint8_t nb);
240  uint16_t get_mantissas(uint8_t nb);
241  uint8_t get_number_of_guardbits() const;
242 };
243 
244 /********************************************************************************
245  * POC_marker
246  *******************************************************************************/
248  private:
249  public:
250  std::vector<uint8_t> RSpoc;
251  std::vector<uint16_t> CSpoc;
252  std::vector<uint16_t> LYEpoc;
253  std::vector<uint8_t> REpoc;
254  std::vector<uint16_t> CEpoc;
255  std::vector<uint8_t> Ppoc;
256  unsigned long nPOC;
257  POC_marker();
258  POC_marker(uint8_t RS, uint16_t CS, uint16_t LYE, uint8_t RE, uint16_t CE, uint8_t P);
259  POC_marker(j2c_src_memory &in, uint16_t Csiz);
260  void add(uint8_t RS, uint16_t CS, uint16_t LYE, uint8_t RE, uint16_t CE, uint8_t P);
261  unsigned long get_num_poc() const;
262 };
263 
264 /********************************************************************************
265  * TLM_marker
266  *******************************************************************************/
268  private:
269  uint8_t Ztlm;
270  uint8_t Stlm;
271  std::vector<uint16_t> Ttlm;
272  std::vector<uint32_t> Ptlm;
273 
274  public:
275  TLM_marker();
276  explicit TLM_marker(j2c_src_memory &in);
277 };
278 
279 /********************************************************************************
280  * PLM_marker
281  *******************************************************************************/
283  private:
284  uint8_t Zplm;
285  uint8_t *plmbuf;
286  uint16_t plmlen;
287 
288  public:
289  PLM_marker();
290  explicit PLM_marker(j2c_src_memory &in);
291 };
292 
293 /********************************************************************************
294  * PPM_marker
295  *******************************************************************************/
297  private:
298  uint8_t Zppm;
299 
300  public:
301  uint8_t *ppmbuf;
302  uint16_t ppmlen;
303  PPM_marker();
304  explicit PPM_marker(j2c_src_memory &in);
305 };
306 
307 /********************************************************************************
308  * CRG_marker
309  *******************************************************************************/
311  private:
312  std::vector<uint16_t> Xcrg;
313  std::vector<uint16_t> Ycrg;
314 
315  public:
316  CRG_marker();
317  explicit CRG_marker(j2c_src_memory &in);
318 };
319 
320 /********************************************************************************
321  * COM_marker
322  *******************************************************************************/
324  private:
325  uint16_t Rcom;
326  std::vector<uint8_t> Ccom;
327 
328  public:
329  explicit COM_marker(j2c_src_memory &in);
330  COM_marker(std::string com, bool is_text);
331  int write(j2c_destination_base &dst);
332 };
333 
334 /********************************************************************************
335  * SOT_marker
336  *******************************************************************************/
338  private:
339  uint16_t Isot;
340  uint32_t Psot;
341  uint8_t TPsot;
342  uint8_t TNsot;
343 
344  public:
345  SOT_marker();
346  explicit SOT_marker(j2c_src_memory &in);
347  int set_SOT_marker(uint16_t tile_index, uint8_t tile_part_index, uint8_t num_tile_parts);
348  int set_tile_part_length(uint32_t length);
349  int write(j2c_destination_base &dst);
350  uint16_t get_tile_index() const;
351  uint32_t get_tile_part_length() const;
352  uint8_t get_tile_part_index() const;
353  uint8_t get_number_of_tile_parts() const;
354 };
355 
356 /********************************************************************************
357  * PLT_marker
358  *******************************************************************************/
360  private:
361  uint8_t Zplt;
362  uint8_t *pltbuf;
363  uint16_t pltlen;
364 
365  public:
366  PLT_marker();
367  explicit PLT_marker(j2c_src_memory &in);
368 };
369 
370 /********************************************************************************
371  * PPT_marker
372  *******************************************************************************/
374  private:
375  uint8_t Zppt;
376 
377  public:
378  uint8_t *pptbuf;
379  uint16_t pptlen;
380  PPT_marker();
381  explicit PPT_marker(j2c_src_memory &in);
382 };
383 
384 /********************************************************************************
385  * j2k_main_header
386  *******************************************************************************/
388  public:
389  std::unique_ptr<SIZ_marker> SIZ;
390  std::unique_ptr<CAP_marker> CAP;
391  std::unique_ptr<COD_marker> COD;
392  std::vector<std::unique_ptr<COC_marker>> COC;
393  std::unique_ptr<CPF_marker> CPF;
394  std::unique_ptr<QCD_marker> QCD;
395  std::vector<std::unique_ptr<QCC_marker>> QCC;
396  std::vector<std::unique_ptr<RGN_marker>> RGN;
397  std::unique_ptr<POC_marker> POC;
398  std::vector<std::unique_ptr<PPM_marker>> PPM;
399  std::vector<std::unique_ptr<TLM_marker>> TLM;
400  std::vector<std::unique_ptr<PLM_marker>> PLM;
401  std::unique_ptr<CRG_marker> CRG;
402  std::vector<std::unique_ptr<COM_marker>> COM;
403  std::unique_ptr<buf_chain> ppm_header;
404  std::unique_ptr<uint8_t[]> ppm_buf;
405 
406  public:
407  j2k_main_header();
408  j2k_main_header(SIZ_marker *siz, COD_marker *cod, QCD_marker *qcd, CAP_marker *cap = nullptr,
409  uint8_t qfactor = 0xFF, CPF_marker *cpf = nullptr, POC_marker *poc = nullptr,
410  CRG_marker *crg = nullptr);
411  void add_COM_marker(const COM_marker &com);
412  void flush(j2c_dst_memory &buf);
413  int read(j2c_src_memory &);
414  void get_number_of_tiles(uint32_t &x, uint32_t &y) const;
415  buf_chain *get_ppm_header() const { return ppm_header.get(); }
416 };
417 
418 /********************************************************************************
419  * j2k_tilepart_header
420  *******************************************************************************/
422  public:
423  uint16_t num_components;
425  std::unique_ptr<COD_marker> COD;
426  std::vector<std::unique_ptr<COC_marker>> COC;
427  std::unique_ptr<QCD_marker> QCD;
428  std::vector<std::unique_ptr<QCC_marker>> QCC;
429  std::vector<std::unique_ptr<RGN_marker>> RGN;
430  std::unique_ptr<POC_marker> POC;
431  std::vector<std::unique_ptr<PPT_marker>> PPT;
432  std::vector<std::unique_ptr<PLT_marker>> PLT;
433  std::vector<std::unique_ptr<COM_marker>> COM;
434 
435  public:
436  explicit j2k_tilepart_header(uint16_t nc);
437  uint32_t read(j2c_src_memory &in);
438 };
Definition: j2kmarkers.hpp:104
void set_Pcap(uint8_t part)
Definition: j2kmarkers.cpp:254
CAP_marker()
Definition: j2kmarkers.cpp:214
uint16_t Ccap[32]
Definition: j2kmarkers.hpp:107
uint16_t get_Ccap(uint8_t n)
Definition: j2kmarkers.cpp:244
uint32_t Pcap
Definition: j2kmarkers.hpp:106
int write(j2c_destination_base &dst)
Definition: j2kmarkers.cpp:261
uint32_t get_Pcap() const
Definition: j2kmarkers.cpp:242
void set_Ccap(uint16_t val, uint8_t Ccap)
Definition: j2kmarkers.cpp:249
Definition: j2kmarkers.hpp:164
uint8_t get_dwt_levels()
Definition: j2kmarkers.cpp:444
COC_marker()
Definition: j2kmarkers.cpp:409
uint8_t get_transformation()
Definition: j2kmarkers.cpp:463
void get_precinct_size(element_siz &out, uint8_t resolution)
Definition: j2kmarkers.cpp:451
std::vector< uint8_t > SPcoc
Definition: j2kmarkers.hpp:168
uint8_t get_Cmodes()
Definition: j2kmarkers.cpp:461
uint16_t get_component_index() const
Definition: j2kmarkers.cpp:440
uint8_t Scoc
Definition: j2kmarkers.hpp:167
uint16_t Ccoc
Definition: j2kmarkers.hpp:166
bool is_maximum_precincts() const
Definition: j2kmarkers.cpp:442
void get_codeblock_size(element_siz &out)
Definition: j2kmarkers.cpp:446
Definition: j2kmarkers.hpp:135
uint8_t get_progression_order() const
Definition: j2kmarkers.cpp:379
COD_marker(j2c_src_memory &in)
Definition: j2kmarkers.cpp:298
void get_codeblock_size(element_siz &out)
Definition: j2kmarkers.cpp:387
uint8_t get_transformation()
Definition: j2kmarkers.cpp:404
bool is_use_SOP() const
Definition: j2kmarkers.cpp:375
std::vector< uint8_t > SPcod
Definition: j2kmarkers.hpp:139
uint8_t get_dwt_levels()
Definition: j2kmarkers.cpp:385
void get_precinct_size(element_siz &out, uint8_t resolution)
Definition: j2kmarkers.cpp:392
uint8_t Scod
Definition: j2kmarkers.hpp:137
uint32_t SGcod
Definition: j2kmarkers.hpp:138
uint8_t get_Cmodes()
Definition: j2kmarkers.cpp:402
uint16_t get_number_of_layers() const
Definition: j2kmarkers.cpp:381
int write(j2c_destination_base &dst)
Definition: j2kmarkers.cpp:361
bool is_use_EPH() const
Definition: j2kmarkers.cpp:377
uint8_t use_color_trafo() const
Definition: j2kmarkers.cpp:383
bool is_maximum_precincts() const
Definition: j2kmarkers.cpp:373
Definition: j2kmarkers.hpp:323
std::vector< uint8_t > Ccom
Definition: j2kmarkers.hpp:326
uint16_t Rcom
Definition: j2kmarkers.hpp:325
int write(j2c_destination_base &dst)
Definition: j2kmarkers.cpp:1387
COM_marker(j2c_src_memory &in)
Definition: j2kmarkers.cpp:1355
Definition: j2kmarkers.hpp:122
CPF_marker()
Definition: j2kmarkers.cpp:277
int write(j2c_destination_base &dst)
std::vector< uint16_t > Pcpf
Definition: j2kmarkers.hpp:124
Definition: j2kmarkers.hpp:310
std::vector< uint16_t > Xcrg
Definition: j2kmarkers.hpp:312
CRG_marker()
Definition: j2kmarkers.cpp:1329
std::vector< uint16_t > Ycrg
Definition: j2kmarkers.hpp:313
Definition: j2kmarkers.hpp:282
PLM_marker()
Definition: j2kmarkers.cpp:1294
uint16_t plmlen
Definition: j2kmarkers.hpp:286
uint8_t Zplm
Definition: j2kmarkers.hpp:284
uint8_t * plmbuf
Definition: j2kmarkers.hpp:285
Definition: j2kmarkers.hpp:359
uint8_t * pltbuf
Definition: j2kmarkers.hpp:362
PLT_marker()
Definition: j2kmarkers.cpp:1464
uint16_t pltlen
Definition: j2kmarkers.hpp:363
uint8_t Zplt
Definition: j2kmarkers.hpp:361
Definition: j2kmarkers.hpp:247
unsigned long nPOC
Definition: j2kmarkers.hpp:256
POC_marker()
Definition: j2kmarkers.cpp:1131
std::vector< uint16_t > CSpoc
Definition: j2kmarkers.hpp:251
std::vector< uint16_t > LYEpoc
Definition: j2kmarkers.hpp:252
std::vector< uint8_t > RSpoc
Definition: j2kmarkers.hpp:250
void add(uint8_t RS, uint16_t CS, uint16_t LYE, uint8_t RE, uint16_t CE, uint8_t P)
Definition: j2kmarkers.cpp:1207
std::vector< uint8_t > Ppoc
Definition: j2kmarkers.hpp:255
unsigned long get_num_poc() const
Definition: j2kmarkers.cpp:1217
std::vector< uint8_t > REpoc
Definition: j2kmarkers.hpp:253
std::vector< uint16_t > CEpoc
Definition: j2kmarkers.hpp:254
Definition: j2kmarkers.hpp:296
PPM_marker()
Definition: j2kmarkers.cpp:1312
uint16_t ppmlen
Definition: j2kmarkers.hpp:302
uint8_t Zppm
Definition: j2kmarkers.hpp:298
uint8_t * ppmbuf
Definition: j2kmarkers.hpp:301
Definition: j2kmarkers.hpp:373
uint16_t pptlen
Definition: j2kmarkers.hpp:379
uint8_t Zppt
Definition: j2kmarkers.hpp:375
PPT_marker()
Definition: j2kmarkers.cpp:1481
uint8_t * pptbuf
Definition: j2kmarkers.hpp:378
Definition: j2kmarkers.hpp:223
uint8_t get_exponents(uint8_t nb)
Definition: j2kmarkers.cpp:1099
uint16_t Cqcc
Definition: j2kmarkers.hpp:226
uint8_t Sqcc
Definition: j2kmarkers.hpp:227
bool is_reversible
Definition: j2kmarkers.hpp:229
uint16_t max_components
Definition: j2kmarkers.hpp:225
int write(j2c_destination_base &dst)
Definition: j2kmarkers.cpp:1073
QCC_marker(uint16_t Csiz, uint16_t c, uint8_t number_of_guardbits, uint8_t dwt_levels, uint8_t transformation, bool is_derived, uint8_t RI, uint8_t use_ycc, uint8_t qfactor, uint8_t chroma_format)
Definition: j2kmarkers.cpp:810
uint8_t get_number_of_guardbits() const
Definition: j2kmarkers.cpp:1126
uint16_t get_component_index() const
Definition: j2kmarkers.cpp:1095
std::vector< uint16_t > SPqcc
Definition: j2kmarkers.hpp:228
uint16_t get_mantissas(uint8_t nb)
Definition: j2kmarkers.cpp:1114
uint8_t get_quantization_style() const
Definition: j2kmarkers.cpp:1097
Definition: j2kmarkers.hpp:201
uint8_t get_number_of_guardbits() const
Definition: j2kmarkers.cpp:792
uint8_t get_quantization_style() const
Definition: j2kmarkers.cpp:763
uint8_t get_MAGB()
Definition: j2kmarkers.cpp:794
QCD_marker(j2c_src_memory &in)
Definition: j2kmarkers.cpp:499
int write(j2c_destination_base &dst)
Definition: j2kmarkers.cpp:745
bool is_reversible
Definition: j2kmarkers.hpp:205
uint8_t Sqcd
Definition: j2kmarkers.hpp:203
uint16_t get_mantissas(uint8_t nb)
Definition: j2kmarkers.cpp:780
uint8_t get_exponents(uint8_t nb)
Definition: j2kmarkers.cpp:765
std::vector< uint16_t > SPqcd
Definition: j2kmarkers.hpp:204
Definition: j2kmarkers.hpp:185
uint8_t get_ROIshift() const
Definition: j2kmarkers.cpp:494
RGN_marker()
Definition: j2kmarkers.cpp:468
uint8_t SPrgn
Definition: j2kmarkers.hpp:189
uint16_t Crgn
Definition: j2kmarkers.hpp:187
uint8_t Srgn
Definition: j2kmarkers.hpp:188
uint16_t get_component_index() const
Definition: j2kmarkers.cpp:492
Definition: j2kmarkers.hpp:67
uint16_t Rsiz
Definition: j2kmarkers.hpp:69
int write(j2c_destination_base &dst)
Definition: j2kmarkers.cpp:119
std::vector< uint8_t > YRsiz
Definition: j2kmarkers.hpp:81
std::vector< uint8_t > XRsiz
Definition: j2kmarkers.hpp:80
void get_tile_origin(element_siz &siz) const
Definition: j2kmarkers.cpp:181
uint8_t get_chroma_format() const
Definition: j2kmarkers.cpp:193
uint32_t XTOsiz
Definition: j2kmarkers.hpp:76
void get_tile_size(element_siz &siz) const
Definition: j2kmarkers.cpp:176
uint32_t Xsiz
Definition: j2kmarkers.hpp:70
void get_image_size(element_siz &siz) const
Definition: j2kmarkers.cpp:158
uint32_t YTOsiz
Definition: j2kmarkers.hpp:77
uint32_t Ysiz
Definition: j2kmarkers.hpp:71
uint8_t get_bitdepth(uint16_t c)
Definition: j2kmarkers.cpp:153
void get_image_origin(element_siz &siz) const
Definition: j2kmarkers.cpp:171
uint16_t Csiz
Definition: j2kmarkers.hpp:78
uint32_t XTsiz
Definition: j2kmarkers.hpp:74
uint32_t YTsiz
Definition: j2kmarkers.hpp:75
std::vector< uint8_t > Ssiz
Definition: j2kmarkers.hpp:79
uint32_t get_component_stride(uint16_t c) const
Definition: j2kmarkers.cpp:163
void get_subsampling_factor(element_siz &siz, uint16_t c)
Definition: j2kmarkers.cpp:186
uint32_t YOsiz
Definition: j2kmarkers.hpp:73
SIZ_marker(j2c_src_memory &in)
Definition: j2kmarkers.cpp:73
uint32_t XOsiz
Definition: j2kmarkers.hpp:72
bool is_signed(uint16_t c)
Definition: j2kmarkers.cpp:144
uint16_t get_num_components() const
Definition: j2kmarkers.cpp:191
Definition: j2kmarkers.hpp:337
int write(j2c_destination_base &dst)
Definition: j2kmarkers.cpp:1441
uint16_t Isot
Definition: j2kmarkers.hpp:339
int set_SOT_marker(uint16_t tile_index, uint8_t tile_part_index, uint8_t num_tile_parts)
Definition: j2kmarkers.cpp:1423
uint8_t get_number_of_tile_parts() const
Definition: j2kmarkers.cpp:1459
uint8_t TNsot
Definition: j2kmarkers.hpp:342
uint32_t get_tile_part_length() const
Definition: j2kmarkers.cpp:1455
uint8_t get_tile_part_index() const
Definition: j2kmarkers.cpp:1457
int set_tile_part_length(uint32_t length)
Definition: j2kmarkers.cpp:1431
SOT_marker()
Definition: j2kmarkers.cpp:1401
uint16_t get_tile_index() const
Definition: j2kmarkers.cpp:1453
uint32_t Psot
Definition: j2kmarkers.hpp:340
uint8_t TPsot
Definition: j2kmarkers.hpp:341
Definition: j2kmarkers.hpp:267
uint8_t Ztlm
Definition: j2kmarkers.hpp:269
TLM_marker()
Definition: j2kmarkers.cpp:1222
std::vector< uint32_t > Ptlm
Definition: j2kmarkers.hpp:272
std::vector< uint16_t > Ttlm
Definition: j2kmarkers.hpp:271
uint8_t Stlm
Definition: j2kmarkers.hpp:270
Definition: codestream.hpp:96
Definition: open_htj2k_typedef.hpp:62
Definition: codestream.hpp:69
Definition: codestream.hpp:79
Definition: codestream.hpp:48
Definition: j2kmarkers.hpp:387
j2k_main_header()
Definition: j2kmarkers.cpp:1497
void add_COM_marker(const COM_marker &com)
Definition: j2kmarkers.cpp:1542
std::unique_ptr< QCD_marker > QCD
Definition: j2kmarkers.hpp:394
std::vector< std::unique_ptr< QCC_marker > > QCC
Definition: j2kmarkers.hpp:395
std::vector< std::unique_ptr< COC_marker > > COC
Definition: j2kmarkers.hpp:392
std::vector< std::unique_ptr< TLM_marker > > TLM
Definition: j2kmarkers.hpp:399
std::unique_ptr< COD_marker > COD
Definition: j2kmarkers.hpp:391
std::vector< std::unique_ptr< COM_marker > > COM
Definition: j2kmarkers.hpp:402
std::vector< std::unique_ptr< PLM_marker > > PLM
Definition: j2kmarkers.hpp:400
buf_chain * get_ppm_header() const
Definition: j2kmarkers.hpp:415
int read(j2c_src_memory &)
Definition: j2kmarkers.cpp:1592
void flush(j2c_dst_memory &buf)
Definition: j2kmarkers.cpp:1546
std::unique_ptr< SIZ_marker > SIZ
Definition: j2kmarkers.hpp:389
std::unique_ptr< buf_chain > ppm_header
Definition: j2kmarkers.hpp:403
std::unique_ptr< CAP_marker > CAP
Definition: j2kmarkers.hpp:390
void get_number_of_tiles(uint32_t &x, uint32_t &y) const
Definition: j2kmarkers.cpp:1676
std::unique_ptr< CRG_marker > CRG
Definition: j2kmarkers.hpp:401
std::unique_ptr< CPF_marker > CPF
Definition: j2kmarkers.hpp:393
std::unique_ptr< uint8_t[]> ppm_buf
Definition: j2kmarkers.hpp:404
std::unique_ptr< POC_marker > POC
Definition: j2kmarkers.hpp:397
std::vector< std::unique_ptr< RGN_marker > > RGN
Definition: j2kmarkers.hpp:396
std::vector< std::unique_ptr< PPM_marker > > PPM
Definition: j2kmarkers.hpp:398
Definition: j2kmarkers.hpp:40
uint16_t pos
Definition: j2kmarkers.hpp:49
~j2k_marker_io_base()=default
uint16_t code
Definition: j2kmarkers.hpp:43
j2k_marker_io_base(uint16_t mar)
Definition: j2kmarkers.hpp:53
bool is_set
Definition: j2kmarkers.hpp:50
uint32_t get_dword()
Definition: j2kmarkers.cpp:63
uint16_t get_length() const
Definition: j2kmarkers.cpp:46
uint16_t get_word()
Definition: j2kmarkers.cpp:57
uint8_t * buf
Definition: j2kmarkers.hpp:47
uint16_t get_marker() const
Definition: j2kmarkers.cpp:44
uint16_t Lmar
Definition: j2kmarkers.hpp:45
uint8_t * get_buf()
Definition: j2kmarkers.cpp:48
uint8_t get_byte()
Definition: j2kmarkers.cpp:50
void set_buf(uint8_t *p)
Definition: j2kmarkers.cpp:42
Definition: j2kmarkers.hpp:421
std::unique_ptr< COD_marker > COD
Definition: j2kmarkers.hpp:425
SOT_marker SOT
Definition: j2kmarkers.hpp:424
std::vector< std::unique_ptr< QCC_marker > > QCC
Definition: j2kmarkers.hpp:428
std::unique_ptr< QCD_marker > QCD
Definition: j2kmarkers.hpp:427
std::vector< std::unique_ptr< COM_marker > > COM
Definition: j2kmarkers.hpp:433
std::vector< std::unique_ptr< PPT_marker > > PPT
Definition: j2kmarkers.hpp:431
uint32_t read(j2c_src_memory &in)
Definition: j2kmarkers.cpp:1697
uint16_t num_components
Definition: j2kmarkers.hpp:423
std::vector< std::unique_ptr< COC_marker > > COC
Definition: j2kmarkers.hpp:426
std::unique_ptr< POC_marker > POC
Definition: j2kmarkers.hpp:430
std::vector< std::unique_ptr< PLT_marker > > PLT
Definition: j2kmarkers.hpp:432
std::vector< std::unique_ptr< RGN_marker > > RGN
Definition: j2kmarkers.hpp:429
j2k_tilepart_header(uint16_t nc)
Definition: j2kmarkers.cpp:1689