Grok  7.6.2
PacketIter.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2016-2020 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 
36 
42  FINAL_PASS = 1
43 };
44 
45 
46 /***
47  * Packet iterator resolution
48  */
50  uint32_t pdx, pdy;
51  uint32_t pw, ph;
52 };
53 
57 struct grk_pi_comp {
58  uint32_t dx, dy;
60  uint32_t numresolutions;
62 };
63 
67 struct PacketIter {
68  PacketIter();
69  ~PacketIter();
70 
71  uint8_t* get_include(uint16_t layerIndex);
72  bool update_include(void);
73  void destroy_include(void);
74 
76  bool tp_on;
77 
78  std::vector<uint8_t*> *include;
79 
81  uint64_t step_l;
83  uint64_t step_r;
85  uint64_t step_c;
87  uint32_t step_p;
89  uint16_t compno;
91  uint8_t resno;
93  uint64_t precinctIndex;
95  uint16_t layno;
97  bool first;
101  uint16_t numcomps;
105  uint32_t tx0, ty0, tx1, ty1;
107  uint32_t x, y;
109  uint32_t dx, dy;
110 };
111 
114 /* ----------------------------------------------------------------------- */
127  uint16_t tileno, J2K_T2_MODE t2_mode, std::vector<uint8_t*> *include);
128 
136 void pi_update_encoding_parameters(const grk_image *p_image, CodingParams *p_cp,
137  uint16_t tile_no);
138 
149 void pi_enable_tile_part_generation(PacketIter *pi, CodingParams *cp, uint16_t tileno, uint32_t pino,
150  bool first_poc_tile_part, uint32_t tppos, J2K_T2_MODE t2_mode);
151 
161 PacketIter* pi_create_decompress(grk_image *image, CodingParams *cp, uint16_t tileno, std::vector<uint8_t*> *include);
167 void pi_destroy(PacketIter *p_pi);
168 
174 bool pi_next(PacketIter *pi);
175 /* ----------------------------------------------------------------------- */
179 
180 }
grk::pi_next
bool pi_next(PacketIter *pi)
Modify the packet iterator to point to the next packet.
Definition: PacketIter.cpp:1403
_grk_poc::compno0
uint16_t compno0
Definition: grok.h:374
grk::PacketIter::tx1
uint32_t tx1
Definition: PacketIter.h:105
grk::PacketIter::step_c
uint64_t step_c
component step used to localize the packet in the include vector
Definition: PacketIter.h:85
grk::EncodingParams::m_tp_on
bool m_tp_on
Enabling Tile part generation.
Definition: CodingParams.h:216
grk::CodingParams::t_width
uint32_t t_width
XTsiz.
Definition: CodingParams.h:247
grk::grk_pi_resolution::ph
uint32_t ph
Definition: PacketIter.h:51
_grk_poc
Progression order changes.
Definition: grok.h:371
grk::PacketIter::step_p
uint32_t step_p
precinct step used to localize the packet in the include vector
Definition: PacketIter.h:87
grk::FINAL_PASS
@ FINAL_PASS
Function called in Rate allocation process.
Definition: PacketIter.h:42
grk::CodingParams::m_enc
EncodingParams m_enc
Definition: CodingParams.h:267
grk::grk_pi_comp::numresolutions
uint32_t numresolutions
number of resolution levels
Definition: PacketIter.h:60
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:1441
grk::PacketIter::ty0
uint32_t ty0
Definition: PacketIter.h:105
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:103
_grk_poc::resno1
uint8_t resno1
Definition: grok.h:377
grk::CodingParams::tx0
uint32_t tx0
XTOsiz.
Definition: CodingParams.h:243
grk::CodingParams::t_grid_width
uint32_t t_grid_width
number of tiles in width
Definition: CodingParams.h:256
grk::shift
const double shift
Definition: RateControl.cpp:154
grk::PacketIter::destroy_include
void destroy_include(void)
Definition: PacketIter.cpp:1470
_grk_image::comps
grk_image_comp * comps
image components
Definition: grok.h:895
grk::grk_pi_resolution::pdx
uint32_t pdx
Definition: PacketIter.h:50
grk::grk_pi_resolution::pdy
uint32_t pdy
Definition: PacketIter.h:50
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:58
grk::grk_pi_resolution::pw
uint32_t pw
Definition: PacketIter.h:51
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:258
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:445
grk::grk_pi_comp::dy
uint32_t dy
Definition: PacketIter.h:58
_grk_poc::prg
GRK_PROG_ORDER prg
Definition: grok.h:383
grk::grk_free
void grk_free(void *ptr)
Deallocates or frees a memory block.
Definition: MemManager.cpp:141
grk::grk_get_encoding_parameters
static void grk_get_encoding_parameters(const grk_image *p_image, const CodingParams *p_cp, uint16_t tileno, uint32_t *tx0, uint32_t *tx1, uint32_t *ty0, uint32_t *ty1, 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:488
_grk_image::numcomps
uint16_t numcomps
number of components in the image
Definition: grok.h:891
grk::update_pi_dxy
static void update_pi_dxy(PacketIter *pi)
Definition: PacketIter.cpp:206
grk::PacketIter
Packet iterator.
Definition: PacketIter.h:67
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::CodingParams::t_height
uint32_t t_height
YTsiz.
Definition: CodingParams.h:249
grk::pi_update_decode_poc
static void pi_update_decode_poc(PacketIter *p_pi, TileCodingParams *p_tcp, uint64_t max_precincts)
Upgrade decompress packet iterator with POC.
Definition: PacketIter.cpp:743
grk::PacketIter::tx0
uint32_t tx0
tile coordinates
Definition: PacketIter.h:105
grk::pi_update_encode_poc_and_final
static void pi_update_encode_poc_and_final(CodingParams *p_cp, uint16_t tileno, uint32_t tx0, uint32_t tx1, uint32_t ty0, uint32_t ty1, uint64_t max_precincts, uint32_t dx_min, uint32_t dy_min)
Updates the coding parameters if the compressing is used with Progression order changes and final (or...
Definition: PacketIter.cpp:683
grk::THRESH_CALC
@ THRESH_CALC
Definition: PacketIter.h:41
_grk_poc::compno1
uint16_t compno1
Definition: grok.h:378
GRK_IS_IMF
#define GRK_IS_IMF(v)
Definition: grok.h:245
grk::J2K_T2_MODE
J2K_T2_MODE
T2 compressing mode.
Definition: PacketIter.h:40
grk::pi_next_rlcp
static bool pi_next_rlcp(PacketIter *pi)
Get next packet in resolution-layer-component-precinct order.
Definition: PacketIter.cpp:258
grk::PacketIter::layno
uint16_t layno
layer that identify the packet
Definition: PacketIter.h:95
grk::pi_check_next_level
static bool pi_check_next_level(int32_t pos, CodingParams *cp, uint16_t tileno, uint32_t pino, const char *prog)
Check packet iterator's nexxt level.
Definition: PacketIter.cpp:791
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:373
grk::PacketIter::resno
uint8_t resno
resolution that identify the packet
Definition: PacketIter.h:91
grk::PacketIter::tp_on
bool tp_on
Enabling Tile part generation.
Definition: PacketIter.h:76
grk::grk_pi_comp::resolutions
grk_pi_resolution * resolutions
Definition: PacketIter.h:61
grk::PacketIter::~PacketIter
~PacketIter()
Definition: PacketIter.cpp:1429
_grk_poc::layno1
uint16_t layno1
Layer num end, resolution num end, component num end, given by POC.
Definition: grok.h:376
grk::pi_next_l
static uint8_t pi_next_l(PacketIter *pi)
Definition: PacketIter.cpp:302
GRK_RPCL
@ GRK_RPCL
resolution-precinct-component-layer order
Definition: grok.h:293
grk::PacketIter::y
uint32_t y
Definition: PacketIter.h:107
grk::PacketIter::PacketIter
PacketIter()
Definition: PacketIter.cpp:1422
grk::PacketIter::compno
uint16_t compno
component that identify the packet
Definition: PacketIter.h:89
GRK_IS_CINEMA
#define GRK_IS_CINEMA(v)
Definition: grok.h:152
_grk_image::y0
uint32_t y0
YOsiz: vertical offset from the origin of the reference grid to the top side of the image area.
Definition: grok.h:885
_grk_poc::tx1
uint32_t tx1
Definition: grok.h:389
GRK_PCRL
@ GRK_PCRL
precinct-component-resolution-layer order
Definition: grok.h:294
grk
Copyright (C) 2016-2020 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:380
grk::pi_next_lrcp
static bool pi_next_lrcp(PacketIter *pi)
Get next packet in layer-resolution-component-precinct order.
Definition: PacketIter.cpp:214
grk::PacketIter::step_r
uint64_t step_r
resolution step used to localize the packet in the include vector
Definition: PacketIter.h:83
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:646
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:263
grk::PacketIter::ty1
uint32_t ty1
Definition: PacketIter.h:105
grk::update_pi_dxy_for_comp
static void update_pi_dxy_for_comp(PacketIter *pi, grk_pi_comp *comp)
Definition: PacketIter.cpp:183
_grk_poc::precno0
uint64_t precno0
Definition: grok.h:381
grk::pi_destroy
void pi_destroy(PacketIter *p_pi)
Destroys a packet iterator array.
Definition: PacketIter.cpp:1374
grk::PacketIter::step_l
uint64_t step_l
layer step used to localize the packet in the include vector
Definition: PacketIter.h:81
grk::grk_get_all_encoding_parameters
static void grk_get_all_encoding_parameters(const grk_image *p_image, const CodingParams *p_cp, uint16_t tileno, uint32_t *tx0, uint32_t *tx1, uint32_t *ty0, uint32_t *ty1, 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:565
_grk_poc::ty1
uint32_t ty1
Definition: grok.h:389
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:972
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:1381
grk::PacketIter::include
std::vector< uint8_t * > * include
Definition: PacketIter.h:78
grk::PacketIter::dy
uint32_t dy
Definition: PacketIter.h:109
GRK_CPRL
@ GRK_CPRL
component-precinct-resolution-layer order
Definition: grok.h:295
_grk_poc::ty0
uint32_t ty0
Definition: grok.h:389
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:850
grk::PacketIter::numcomps
uint16_t numcomps
number of components in the image
Definition: PacketIter.h:101
grk::PacketIter::update_include
bool update_include(void)
Definition: PacketIter.cpp:1453
grk::pi_update_encode_no_poc
static void pi_update_encode_no_poc(CodingParams *p_cp, uint16_t num_comps, uint16_t tileno, uint32_t tx0, uint32_t tx1, uint32_t ty0, uint32_t ty1, uint64_t max_precincts, uint8_t max_res, uint32_t dx_min, uint32_t dy_min)
Updates the coding parameters if the compressing is not used with Progression order changes and final...
Definition: PacketIter.cpp:712
_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:850
_grk_image::x1
uint32_t x1
Xsiz: width of the reference grid.
Definition: grok.h:887
_grk_poc::precno1
uint64_t precno1
Definition: grok.h:381
grk::PacketIter::x
uint32_t x
packet coordinates
Definition: PacketIter.h:107
grk::pi_next_rpcl
static bool pi_next_rpcl(PacketIter *pi)
Get next packet in resolution-precinct-component-layer order.
Definition: PacketIter.cpp:369
grk::PacketIter::precinctIndex
uint64_t precinctIndex
precinct that identify the packet
Definition: PacketIter.h:93
grk::PacketIter::dx
uint32_t dx
packet sub-sampling factors
Definition: PacketIter.h:109
grk::grk_pi_comp
Packet iterator component.
Definition: PacketIter.h:57
grk::PacketIter::first
bool first
true if the first packet
Definition: PacketIter.h:97
GRK_J2K_MAXRLVLS
#define GRK_J2K_MAXRLVLS
Maximum number of resolution levels authorized.
Definition: grok.h:82
_grk_image
Image.
Definition: grok.h:879
grk::PacketIter::poc
grk_poc poc
progression order change information
Definition: PacketIter.h:99
grk::grk_pi_resolution
Definition: PacketIter.h:49
_grk_image::y1
uint32_t y1
Ysiz: height of the reference grid.
Definition: grok.h:889
grk::pi_next_pcrl
static bool pi_next_pcrl(PacketIter *pi)
Get next packet in precinct-component-resolution-layer order.
Definition: PacketIter.cpp:400
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:237
grk::CodingParams::ty0
uint32_t ty0
YTOsiz.
Definition: CodingParams.h:245
_grk_poc::tx0
uint32_t tx0
Start and end values for tile width and height.
Definition: grok.h:389
_grk_image::x0
uint32_t x0
XOsiz: horizontal offset from the origin of the reference grid to the left side of the image area.
Definition: grok.h:882
grk::pi_update_decode_no_poc
static void pi_update_decode_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:768