Grok  7.6.3
PacketIter.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 namespace grk {
24 
34  FINAL_PASS = 1
35 };
36 
37 
38 /***
39  * Packet iterator resolution
40  */
42  uint32_t pdx, pdy;
43  uint32_t pw, ph;
44 };
45 
49 struct grk_pi_comp {
50  uint32_t dx, dy;
52  uint32_t numresolutions;
54 };
55 
59 struct PacketIter {
60  PacketIter();
61  ~PacketIter();
62 
63  uint8_t* get_include(uint16_t layerIndex);
64  bool update_include(void);
65  void destroy_include(void);
66 
68  bool tp_on;
69 
70  std::vector<uint8_t*> *include;
71 
73  uint64_t step_l;
75  uint64_t step_r;
77  uint64_t step_c;
79  uint32_t step_p;
81  uint16_t compno;
83  uint8_t resno;
85  uint64_t precinctIndex;
87  uint16_t layno;
89  bool first;
93  uint16_t numcomps;
97  uint32_t tx0, ty0, tx1, ty1;
99  uint32_t x, y;
101  uint32_t dx, dy;
102 };
103 
106 /* ----------------------------------------------------------------------- */
119  CodingParams *cp,
120  uint16_t tileno,
121  J2K_T2_MODE t2_mode,
122  std::vector<uint8_t*> *include);
123 
131 void pi_update_encoding_parameters(const grk_image *p_image,
132  CodingParams *p_cp,
133  uint16_t tile_no);
134 
146  CodingParams *cp,
147  uint16_t tileno,
148  uint32_t pino,
149  bool first_poc_tile_part,
150  uint32_t tppos,
151  J2K_T2_MODE t2_mode);
152 
163  CodingParams *cp,
164  uint16_t tileno,
165  std::vector<uint8_t*> *include);
171 void pi_destroy(PacketIter *p_pi);
172 
178 bool pi_next(PacketIter *pi);
179 /* ----------------------------------------------------------------------- */
183 
184 }
grk::pi_next
bool pi_next(PacketIter *pi)
Modify the packet iterator to point to the next packet.
Definition: PacketIter.cpp:1425
_grk_poc::compno0
uint16_t compno0
Definition: grok.h:375
grk::PacketIter::tx1
uint32_t tx1
Definition: PacketIter.h:97
grk::PacketIter::step_c
uint64_t step_c
component step used to localize the packet in the include vector
Definition: PacketIter.h:77
grk::EncodingParams::m_tp_on
bool m_tp_on
Enabling Tile part generation.
Definition: CodingParams.h:216
grk::grk_pi_resolution::ph
uint32_t ph
Definition: PacketIter.h:43
_grk_poc
Progression order changes.
Definition: grok.h:372
grk::grk_rectangle
Definition: util.h:76
grk::PacketIter::step_p
uint32_t step_p
precinct step used to localize the packet in the include vector
Definition: PacketIter.h:79
grk::FINAL_PASS
@ FINAL_PASS
Function called in rate allocation process.
Definition: PacketIter.h:34
grk::CodingParams::m_enc
EncodingParams m_enc
Definition: CodingParams.h:272
grk::grk_pi_comp::numresolutions
uint32_t numresolutions
number of resolution levels
Definition: PacketIter.h:52
grk::TileCodingParams::prg
GRK_PROG_ORDER prg
progression order
Definition: CodingParams.h:130
grk::PacketIter::get_include
uint8_t * get_include(uint16_t layerIndex)
Definition: PacketIter.cpp:1481
grk::PacketIter::ty0
uint32_t ty0
Definition: PacketIter.h:97
grk::TileCodingParams
Tile coding parameters : this structure is used to store coding/decoding parameters common to all til...
Definition: CodingParams.h:121
GRK_LRCP
@ GRK_LRCP
layer-resolution-component-precinct order
Definition: grok.h:291
grk::TileCodingParams::tccps
TileComponentCodingParams * tccps
tile-component coding parameters
Definition: CodingParams.h:163
grk::PacketIter::comps
grk_pi_comp * comps
Components.
Definition: PacketIter.h:95
_grk_poc::resno1
uint8_t resno1
Definition: grok.h:378
grk::CodingParams::t_grid_width
uint32_t t_grid_width
number of tiles in width
Definition: CodingParams.h:261
grk::shift
const double shift
Definition: RateControl.cpp:154
grk::PacketIter::destroy_include
void destroy_include(void)
Definition: PacketIter.cpp:1510
_grk_image::comps
grk_image_comp * comps
image components
Definition: grok.h:906
grk::grk_pi_resolution::pdx
uint32_t pdx
Definition: PacketIter.h:42
grk::grk_pi_resolution::pdy
uint32_t pdy
Definition: PacketIter.h:42
grk::grk_calloc
void * grk_calloc(size_t num, size_t size)
Allocate a memory block with elements initialized to 0.
Definition: MemManager.cpp:111
grk::CodingParams::m_coding_params
union grk::CodingParams::@0 m_coding_params
grk::uint_floordivpow2
static uint32_t uint_floordivpow2(uint32_t a, uint32_t b)
Divide an unsigned integer by a power of 2 and round downwards.
Definition: grk_intmath.h:55
grk::grk_pi_comp::dx
uint32_t dx
Definition: PacketIter.h:50
grk::grk_pi_resolution::pw
uint32_t pw
Definition: PacketIter.h:43
grk::TileCodingParams::pocs
grk_poc pocs[32]
progression order changes
Definition: CodingParams.h:141
grk::CodingParams::t_grid_height
uint32_t t_grid_height
number of tiles in height
Definition: CodingParams.h:263
grk::TileCodingParams::numpocs
uint32_t numpocs
number of progression order changes
Definition: CodingParams.h:139
grk::pi_next_cprl
static bool pi_next_cprl(PacketIter *pi)
Get next packet in component-precinct-resolution-layer order.
Definition: PacketIter.cpp:457
grk::grk_rectangle::x1
T x1
Definition: util.h:77
grk::grk_pi_comp::dy
uint32_t dy
Definition: PacketIter.h:50
_grk_poc::prg
GRK_PROG_ORDER prg
Definition: grok.h:384
grk::grk_free
void grk_free(void *ptr)
Deallocates or frees a memory block.
Definition: MemManager.cpp:141
_grk_image::numcomps
uint16_t numcomps
number of components in the image
Definition: grok.h:902
grk::pi_update_decompress_no_poc
static void pi_update_decompress_no_poc(PacketIter *p_pi, TileCodingParams *p_tcp, uint64_t max_precincts, uint8_t max_res)
Update decompress packet iterator with no POC.
Definition: PacketIter.cpp:760
grk::update_pi_dxy
static void update_pi_dxy(PacketIter *pi)
Definition: PacketIter.cpp:218
grk::PacketIter
Packet iterator.
Definition: PacketIter.h:59
grk::j2k_convert_progression_order
char * j2k_convert_progression_order(GRK_PROG_ORDER prg_order)
Converts an enum type progression order to string type.
Definition: CodeStream.cpp:625
grk::PacketIter::tx0
uint32_t tx0
tile coordinates
Definition: PacketIter.h:97
grk::THRESH_CALC
@ THRESH_CALC
Definition: PacketIter.h:33
grk::grk_get_all_encoding_parameters
static void grk_get_all_encoding_parameters(const grk_image *image, const CodingParams *p_cp, uint16_t tileno, grk_rect_u32 *tileBounds, uint32_t *dx_min, uint32_t *dy_min, uint64_t *max_precincts, uint8_t *max_res, uint32_t **p_resolutions)
Gets the compressing parameters needed to update the coding parameters and all the pocs.
Definition: PacketIter.cpp:564
_grk_poc::compno1
uint16_t compno1
Definition: grok.h:379
GRK_IS_IMF
#define GRK_IS_IMF(v)
Definition: grok.h:245
grk::J2K_T2_MODE
J2K_T2_MODE
Definition: PacketIter.h:32
grk::CodingParams::getTileBounds
grk_rect_u32 getTileBounds(const grk_image *p_image, uint32_t tile_x, uint32_t tile_y) const
Definition: CodingParams.cpp:26
grk::pi_next_rlcp
static bool pi_next_rlcp(PacketIter *pi)
Get next packet in resolution-layer-component-precinct order.
Definition: PacketIter.cpp:270
grk::PacketIter::layno
uint16_t layno
layer that identify the packet
Definition: PacketIter.h:87
grk::CodingParams
Coding parameters.
Definition: CodingParams.h:235
_grk_poc::resno0
uint8_t resno0
Resolution num start, component num start, given by POC.
Definition: grok.h:374
grk::pi_check_next_for_valid_progression
static bool pi_check_next_for_valid_progression(int32_t prog, CodingParams *cp, uint16_t tileno, uint32_t pino, const char *progString)
Check if there is a remaining valid progression order.
Definition: PacketIter.cpp:788
grk::PacketIter::resno
uint8_t resno
resolution that identify the packet
Definition: PacketIter.h:83
grk::PacketIter::tp_on
bool tp_on
Enabling Tile part generation.
Definition: PacketIter.h:68
grk::grk_pi_comp::resolutions
grk_pi_resolution * resolutions
Definition: PacketIter.h:53
grk::PacketIter::~PacketIter
~PacketIter()
Definition: PacketIter.cpp:1469
_grk_poc::layno1
uint16_t layno1
Layer num end, resolution num end, component num end, given by POC.
Definition: grok.h:377
grk::pi_next_l
static uint8_t pi_next_l(PacketIter *pi)
Definition: PacketIter.cpp:314
GRK_RPCL
@ GRK_RPCL
resolution-precinct-component-layer order
Definition: grok.h:293
grk::PacketIter::y
uint32_t y
Definition: PacketIter.h:99
grk::grk_get_encoding_parameters
static void grk_get_encoding_parameters(const grk_image *p_image, const CodingParams *p_cp, uint16_t tileno, grk_rect_u32 *tileBounds, uint32_t *dx_min, uint32_t *dy_min, uint64_t *max_precincts, uint8_t *max_res)
Gets the compressing parameters needed to update the coding parameters and all the pocs.
Definition: PacketIter.cpp:501
grk::PacketIter::PacketIter
PacketIter()
Definition: PacketIter.cpp:1444
grk::PacketIter::compno
uint16_t compno
component that identify the packet
Definition: PacketIter.h:81
GRK_IS_CINEMA
#define GRK_IS_CINEMA(v)
Definition: grok.h:152
_grk_poc::tx1
uint32_t tx1
Definition: grok.h:390
GRK_PCRL
@ GRK_PCRL
precinct-component-resolution-layer order
Definition: grok.h:294
grk
Copyright (C) 2016-2021 Grok Image Compression Inc.
Definition: BitIO.cpp:23
_grk_poc::layno0
uint16_t layno0
Layer num start,precinct num start, precinct num end.
Definition: grok.h:381
grk::pi_next_lrcp
static bool pi_next_lrcp(PacketIter *pi)
Get next packet in layer-resolution-component-precinct order.
Definition: PacketIter.cpp:226
grk::PacketIter::step_r
uint64_t step_r
resolution step used to localize the packet in the include vector
Definition: PacketIter.h:75
grk::pi_create
static PacketIter * pi_create(const grk_image *p_image, const CodingParams *p_cp, uint16_t tileno, std::vector< uint8_t * > *include)
Allocates memory for a packet iterator.
Definition: PacketIter.cpp:628
grk::grk_malloc
void * grk_malloc(size_t size)
Allocate an uninitialized memory block.
Definition: MemManager.cpp:105
grk_includes.h
grk::CodingParams::tcps
TileCodingParams * tcps
tile coding parameters
Definition: CodingParams.h:268
grk::PacketIter::ty1
uint32_t ty1
Definition: PacketIter.h:97
grk::grk_rect_u32
grk_rectangle< uint32_t > grk_rect_u32
Definition: util.h:48
grk::update_pi_dxy_for_comp
static void update_pi_dxy_for_comp(PacketIter *pi, grk_pi_comp *comp)
Definition: PacketIter.cpp:195
_grk_poc::precno0
uint64_t precno0
Definition: grok.h:382
grk::pi_update_decompress_poc
static void pi_update_decompress_poc(PacketIter *p_pi, TileCodingParams *p_tcp, uint64_t max_precincts)
Upgrade decompress packet iterator with POC.
Definition: PacketIter.cpp:734
grk::pi_destroy
void pi_destroy(PacketIter *p_pi)
Destroys a packet iterator array.
Definition: PacketIter.cpp:1379
grk::PacketIter::step_l
uint64_t step_l
layer step used to localize the packet in the include vector
Definition: PacketIter.h:73
_grk_poc::ty1
uint32_t ty1
Definition: grok.h:390
grk::pi_create_compress
PacketIter * pi_create_compress(const grk_image *p_image, CodingParams *p_cp, uint16_t tile_no, J2K_T2_MODE p_t2_mode, std::vector< uint8_t * > *include)
Creates a packet iterator for compressing.
Definition: PacketIter.cpp:971
grk::grk_rectangle::rectceildiv
grk_rectangle< T > rectceildiv(uint32_t den) const
Definition: util.h:132
grk::TileCodingParams::numlayers
uint16_t numlayers
number of layers
Definition: CodingParams.h:132
grk::pi_update_encoding_parameters
void pi_update_encoding_parameters(const grk_image *p_image, CodingParams *p_cp, uint16_t tile_no)
Updates the compressing parameters of the codec.
Definition: PacketIter.cpp:1386
grk::PacketIter::include
std::vector< uint8_t * > * include
Definition: PacketIter.h:70
grk::PacketIter::dy
uint32_t dy
Definition: PacketIter.h:101
GRK_CPRL
@ GRK_CPRL
component-precinct-resolution-layer order
Definition: grok.h:295
_grk_poc::ty0
uint32_t ty0
Definition: grok.h:390
grk::pi_create_decompress
PacketIter * pi_create_decompress(grk_image *p_image, CodingParams *p_cp, uint16_t tile_no, std::vector< uint8_t * > *include)
Create a packet iterator for Decoder.
Definition: PacketIter.cpp:848
grk::PacketIter::numcomps
uint16_t numcomps
number of components in the image
Definition: PacketIter.h:93
grk::grk_rectangle::x0
T x0
Definition: util.h:77
grk::pi_update_compress_no_poc
static void pi_update_compress_no_poc(CodingParams *p_cp, uint16_t num_comps, uint16_t tileno, grk_rect_u32 tileBounds, uint64_t max_precincts, uint8_t max_res, uint32_t dx_min, uint32_t dy_min)
Updates the coding parameters if compression does not use progression order changes.
Definition: PacketIter.cpp:699
grk::PacketIter::update_include
bool update_include(void)
Definition: PacketIter.cpp:1493
grk::grk_rectangle::y1
T y1
Definition: util.h:77
_grk_image_comp::dx
uint32_t dx
XRsiz: horizontal separation of a sample of with component with respect to the reference grid.
Definition: grok.h:861
_grk_poc::precno1
uint64_t precno1
Definition: grok.h:382
grk::PacketIter::x
uint32_t x
packet coordinates
Definition: PacketIter.h:99
grk::pi_update_compress_poc_and_final
static void pi_update_compress_poc_and_final(CodingParams *p_cp, uint16_t tileno, grk_rect_u32 tileBounds, uint64_t max_precincts, uint32_t dx_min, uint32_t dy_min)
Updates the coding parameters if compression uses progression order changes and is final (or cinema p...
Definition: PacketIter.cpp:667
grk::pi_next_rpcl
static bool pi_next_rpcl(PacketIter *pi)
Get next packet in resolution-precinct-component-layer order.
Definition: PacketIter.cpp:381
grk::PacketIter::precinctIndex
uint64_t precinctIndex
precinct that identify the packet
Definition: PacketIter.h:85
grk::PacketIter::dx
uint32_t dx
packet sub-sampling factors
Definition: PacketIter.h:101
grk::grk_pi_comp
Packet iterator component.
Definition: PacketIter.h:49
grk::PacketIter::first
bool first
true if the first packet
Definition: PacketIter.h:89
GRK_J2K_MAXRLVLS
#define GRK_J2K_MAXRLVLS
Maximum number of resolution levels authorized.
Definition: grok.h:82
_grk_image
Image.
Definition: grok.h:890
grk::grk_rectangle::y0
T y0
Definition: util.h:77
grk::PacketIter::poc
grk_poc poc
progression order change information
Definition: PacketIter.h:91
grk::grk_pi_resolution
Definition: PacketIter.h:41
grk::pi_next_pcrl
static bool pi_next_pcrl(PacketIter *pi)
Get next packet in precinct-component-resolution-layer order.
Definition: PacketIter.cpp:412
grk::pi_enable_tile_part_generation
void pi_enable_tile_part_generation(PacketIter *pi, CodingParams *cp, uint16_t tileno, uint32_t pino, bool first_poc_tile_part, uint32_t tppos, J2K_T2_MODE t2_mode)
Modify the packet iterator for enabling tile part generation.
Definition: PacketIter.cpp:1105
GRK_RLCP
@ GRK_RLCP
resolution-layer-component-precinct order
Definition: grok.h:292
grk::GRK_ERROR
void GRK_ERROR(const char *fmt,...)
Definition: logger.cpp:57
grk::CodingParams::rsiz
uint16_t rsiz
Rsiz.
Definition: CodingParams.h:242
_grk_poc::tx0
uint32_t tx0
Start and end values for tile width and height.
Definition: grok.h:390