PacketIter.h
Go to the documentation of this file.
/*
* Copyright (C) 2016-2023 Grok Image Compression Inc.
*
* This source code is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License, version 3,
* as published by the Free Software Foundation.
*
* This source code is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*
* This source code incorporates work covered by the BSD 2-clause license.
* Please see the LICENSE file in the root directory for details.
*
*/
#pragma once
#include <limits>
namespace grk
{
enum J2K_T2_MODE
{
THRESH_CALC = 0,
FINAL_PASS = 1
};
struct ResIncludeBuffers
{
ResIncludeBuffers()
{
for(uint8_t i = 0; i < GRK_J2K_MAXRLVLS; ++i)
buffers[i] = nullptr;
}
~ResIncludeBuffers()
{
for(uint8_t i = 0; i < GRK_J2K_MAXRLVLS; ++i)
delete[] buffers[i];
}
uint8_t* buffers[GRK_J2K_MAXRLVLS];
};
struct IncludeTracker
{
IncludeTracker(uint16_t numcomponents)
: numcomps(numcomponents), currentLayer(0), currentResBuf(nullptr),
include(new std::map<uint16_t, ResIncludeBuffers*>())
{
for(uint8_t i = 0; i < GRK_J2K_MAXRLVLS; ++i)
numPrecinctsPerRes[i] = 0;
}
~IncludeTracker()
{
clear();
delete include;
}
uint8_t* get_include(uint16_t layerno, uint8_t resno)
{
ResIncludeBuffers* resBuf = nullptr;
if(layerno == currentLayer && currentResBuf)
{
resBuf = currentResBuf;
}
else
{
if(include->find(layerno) == include->end())
{
resBuf = new ResIncludeBuffers;
include->operator[](layerno) = resBuf;
}
else
{
resBuf = include->operator[](layerno);
}
currentResBuf = resBuf;
currentLayer = layerno;
}
auto buf = resBuf->buffers[resno];
if(!buf)
{
auto numprecs = numPrecinctsPerRes[resno];
auto len = (numprecs * numcomps + 7) / 8;
assert(len <= std::numeric_limits<size_t>::max());
buf = new uint8_t[(size_t)len];
memset(buf, 0, (size_t)len);
resBuf->buffers[resno] = buf;
}
return buf;
}
bool update(uint16_t layno, uint8_t resno, uint16_t compno, uint64_t precno)
{
auto include = get_include(layno, resno);
auto numprecs = numPrecinctsPerRes[resno];
uint64_t index = compno * numprecs + precno;
uint64_t include_index = (index >> 3);
uint32_t shift = (index & 7);
uint8_t val = include[include_index];
if(((val >> shift) & 1) == 0)
{
include[include_index] = (uint8_t)(val | (1 << shift));
return true;
}
return false;
}
void clear()
{
for(auto it = include->begin(); it != include->end(); ++it)
delete it->second;
include->clear();
}
uint64_t numPrecinctsPerRes[GRK_J2K_MAXRLVLS];
private:
uint16_t numcomps;
uint16_t currentLayer;
ResIncludeBuffers* currentResBuf;
std::map<uint16_t, ResIncludeBuffers*>* include;
};
class PacketManager;
/***
* Cache state of a tile component's resolution
* relative to the precinct grid in that resolution, and also
* projected onto the tile's highest resolution (PRJ)
*/
struct ResPrecinctInfo
{
ResPrecinctInfo();
bool init(uint8_t resno, uint8_t decomplevel, grk_rect32 tileBounds, uint32_t dx, uint32_t dy,
bool windowed, grk_rect32 tileWindow);
void print(void);
uint32_t precWidthExp;
uint32_t precHeightExp;
uint32_t precWidthExpPRJ;
uint32_t precHeightExpPRJ;
uint32_t resOffsetX0PRJ;
uint32_t resOffsetY0PRJ;
uint64_t precWidthPRJ;
uint64_t precWidthPRJMinusOne;
uint64_t precHeightPRJ;
uint64_t precHeightPRJMinusOne;
uint64_t numPrecincts_;
uint64_t dxPRJ;
uint64_t dyPRJ;
uint32_t resInPrecGridX0;
uint32_t resInPrecGridY0;
uint8_t resno_;
uint8_t decompLevel_;
grk_rect32 tileBoundsPrecPRJ;
grk_rect32 tileBoundsPrecGrid;
grk_rect32 winPrecPRJ;
grk_rect32 winPrecGrid;
uint64_t innerPrecincts_;
uint64_t winPrecinctsLeft_;
uint64_t winPrecinctsRight_;
uint64_t winPrecinctsTop_;
uint64_t winPrecinctsBottom_;
bool valid;
};
/***
* Packet iterator resolution
*/
struct PiResolution
{
PiResolution()
: precWidthExp(0), precHeightExp(0), precinctGridWidth(0), precinctGridHeight(0),
precinctInfo(nullptr)
{}
~PiResolution()
{
delete precinctInfo;
}
uint32_t precWidthExp;
uint32_t precHeightExp;
uint32_t precinctGridWidth;
uint32_t precinctGridHeight;
ResPrecinctInfo* precinctInfo;
};
struct PiComp
{
PiComp() : dx(0), dy(0), numresolutions(0), resolutions(nullptr) {}
~PiComp()
{
delete[] resolutions;
}
// component sub-sampling factors
uint32_t dx;
uint32_t dy;
uint8_t numresolutions;
PiResolution* resolutions;
};
struct PacketIter
{
PacketIter();
~PacketIter();
void init(PacketManager* packetMan, uint32_t pino, TileCodingParams* tcp, grk_rect32 tileBounds,
bool compression, uint8_t max_res, uint64_t max_precincts,
uint32_t* resolutionPrecinctGrid, uint32_t** precinctByComponent);
void printStaticState(void);
void printDynamicState(void);
void enableTilePartGeneration(uint32_t pino, bool first_poc_tile_part, uint32_t tppos);
bool genPrecinctInfoOPT();
void genPrecinctInfo();
void genPrecinctInfo(PiComp* comp, PiResolution* res, uint8_t resNumber);
uint8_t* get_include(uint16_t layerIndex);
bool update_include(void);
void destroy_include(void);
bool next(SparseBuffer* src);
GRK_PROG_ORDER getProgression(void) const;
uint16_t getCompno(void) const;
uint8_t getResno(void) const;
uint64_t getPrecinctIndex(void) const;
uint16_t getLayno(void) const;
private:
uint16_t compno;
uint8_t resno;
uint64_t precinctIndex;
uint16_t layno;
grk_progression prog;
uint16_t numcomps;
PiComp* comps;
uint64_t x, y;
uint32_t dx, dy;
uint32_t dxActive, dyActive;
void update_dxy(void);
bool checkForRemainingValidProgression(int32_t prog, uint32_t pino, const char* progString);
// This packet iterator is designed so that the innermost progression
// is only incremented before the **next** packet is processed.
// i.e. it is not incremented before the very first packet is processed,
// but rather before all subsequent packets are processed.
// This flag keeps track of this state.
bool incrementInner;
PacketManager* packetManager;
uint8_t maxNumDecompositionResolutions;
bool singleProgression_;
bool compression_;
ResPrecinctInfo* precinctInfoOPT_;
// precinct top,left grid coordinates
uint32_t px0grid_;
uint32_t py0grid_;
bool skippedLeft_;
bool genPrecinctY0Grid(ResPrecinctInfo* rpInfo);
bool genPrecinctX0Grid(ResPrecinctInfo* rpInfo);
void genPrecinctY0GridRPCL_OPT(ResPrecinctInfo* rpInfo);
void genPrecinctX0GridRPCL_OPT(ResPrecinctInfo* rpInfo);
bool genPrecinctX0GridPCRL_OPT(ResPrecinctInfo* rpInfo);
bool genPrecinctY0GridPCRL_OPT(ResPrecinctInfo* rpInfo);
bool precInfoCheck(ResPrecinctInfo* rpInfo);
void generatePrecinctIndex(void);
bool validatePrecinct(void);
void update_dxy_for_comp(PiComp* comp, bool updateActive);
bool isWholeTile(void);
bool next_cprl(SparseBuffer* src);
bool next_cprlOPT(SparseBuffer* src);
bool next_pcrl(SparseBuffer* src);
bool next_pcrlOPT(SparseBuffer* src);
bool next_lrcp(SparseBuffer* src);
bool next_lrcpOPT(SparseBuffer* src);
bool next_rlcp(SparseBuffer* src);
bool next_rlcpOPT(SparseBuffer* src);
bool next_rpcl(SparseBuffer* src);
bool next_rpclOPT(SparseBuffer* src);
bool skipPackets(SparseBuffer* src, uint64_t numPackets);
};
} // namespace grk
grk::PacketManager
Definition PacketManager.h:23
GRK_PROG_ORDER
enum _GRK_PROG_ORDER GRK_PROG_ORDER
Progression order.
GRK_J2K_MAXRLVLS
#define GRK_J2K_MAXRLVLS
Definition grok.h:232
grk
Copyright (C) 2016-2023 Grok Image Compression Inc.
Definition ICacheable.h:20
grk::grk_read
void grk_read(const uint8_t *buffer, TYPE *value, uint32_t numBytes)
Definition BufferedStream.h:239
grk::shift
const double shift
Definition RateControl.cpp:165
grk::J2K_T2_MODE
J2K_T2_MODE
Definition PacketIter.h:36
grk::FINAL_PASS
@ FINAL_PASS
Function called in rate allocation process.
Definition PacketIter.h:38
grk::THRESH_CALC
@ THRESH_CALC
Definition PacketIter.h:37
_grk_progression
Progression order change.
Definition grok.h:135
grk::IncludeTracker
Definition PacketIter.h:56
grk::IncludeTracker::~IncludeTracker
~IncludeTracker()
Definition PacketIter.h:64
grk::IncludeTracker::get_include
uint8_t * get_include(uint16_t layerno, uint8_t resno)
Definition PacketIter.h:69
grk::IncludeTracker::numcomps
uint16_t numcomps
Definition PacketIter.h:127
grk::IncludeTracker::update
bool update(uint16_t layno, uint8_t resno, uint16_t compno, uint64_t precno)
Definition PacketIter.h:102
grk::IncludeTracker::currentLayer
uint16_t currentLayer
Definition PacketIter.h:128
grk::IncludeTracker::numPrecinctsPerRes
uint64_t numPrecinctsPerRes[GRK_J2K_MAXRLVLS]
Definition PacketIter.h:124
grk::IncludeTracker::clear
void clear()
Definition PacketIter.h:118
grk::IncludeTracker::include
std::map< uint16_t, ResIncludeBuffers * > * include
Definition PacketIter.h:130
grk::IncludeTracker::IncludeTracker
IncludeTracker(uint16_t numcomponents)
Definition PacketIter.h:57
grk::IncludeTracker::currentResBuf
ResIncludeBuffers * currentResBuf
Definition PacketIter.h:129
grk::PacketIter
Packet iterator.
Definition PacketIter.h:217
grk::PacketIter::isWholeTile
bool isWholeTile(void)
Definition PacketIter.cpp:902
grk::PacketIter::destroy_include
void destroy_include(void)
Definition PacketIter.cpp:702
grk::PacketIter::genPrecinctY0GridPCRL_OPT
bool genPrecinctY0GridPCRL_OPT(ResPrecinctInfo *rpInfo)
Definition PacketIter.cpp:740
grk::PacketIter::next
bool next(SparseBuffer *src)
Modify the packet iterator to point to the next packet.
Definition PacketIter.cpp:906
grk::PacketIter::get_include
uint8_t * get_include(uint16_t layerIndex)
Definition PacketIter.cpp:692
grk::PacketIter::next_cprl
bool next_cprl(SparseBuffer *src)
Get next packet in component-precinct-resolution-layer order.
Definition PacketIter.cpp:927
grk::PacketIter::layno
uint16_t layno
Definition PacketIter.h:259
grk::PacketIter::next_rlcpOPT
bool next_rlcpOPT(SparseBuffer *src)
Definition PacketIter.cpp:1209
grk::PacketIter::next_pcrl
bool next_pcrl(SparseBuffer *src)
Get next packet in precinct-component-resolution-layer order.
Definition PacketIter.cpp:969
grk::PacketIter::getCompno
uint16_t getCompno(void) const
Definition PacketIter.cpp:676
grk::PacketIter::precinctInfoOPT_
ResPrecinctInfo * precinctInfoOPT_
Definition PacketIter.h:282
grk::PacketIter::next_rpcl
bool next_rpcl(SparseBuffer *src)
Get next packet in resolution-precinct-component-layer order.
Definition PacketIter.cpp:1104
grk::PacketIter::dy
uint32_t dy
Definition PacketIter.h:267
grk::PacketIter::compno
uint16_t compno
Definition PacketIter.h:256
grk::PacketIter::update_include
bool update_include(void)
Definition PacketIter.cpp:696
grk::PacketIter::update_dxy_for_comp
void update_dxy_for_comp(PiComp *comp, bool updateActive)
Definition PacketIter.cpp:775
grk::PacketIter::dxActive
uint32_t dxActive
Definition PacketIter.h:268
grk::PacketIter::enableTilePartGeneration
void enableTilePartGeneration(uint32_t pino, bool first_poc_tile_part, uint32_t tppos)
Modify the packet iterator for enabling tile part generation.
Definition PacketIter.cpp:363
grk::PacketIter::skippedLeft_
bool skippedLeft_
Definition PacketIter.h:286
grk::PacketIter::prog
grk_progression prog
Definition PacketIter.h:260
grk::PacketIter::packetManager
PacketManager * packetManager
Definition PacketIter.h:278
grk::PacketIter::genPrecinctX0Grid
bool genPrecinctX0Grid(ResPrecinctInfo *rpInfo)
Definition PacketIter.cpp:728
grk::PacketIter::generatePrecinctIndex
void generatePrecinctIndex(void)
Definition PacketIter.cpp:292
grk::PacketIter::dx
uint32_t dx
component sub-sampling
Definition PacketIter.h:267
grk::PacketIter::genPrecinctX0GridPCRL_OPT
bool genPrecinctX0GridPCRL_OPT(ResPrecinctInfo *rpInfo)
Definition PacketIter.cpp:749
grk::PacketIter::maxNumDecompositionResolutions
uint8_t maxNumDecompositionResolutions
Definition PacketIter.h:279
grk::PacketIter::getResno
uint8_t getResno(void) const
Definition PacketIter.cpp:680
grk::PacketIter::comps
PiComp * comps
Definition PacketIter.h:262
grk::PacketIter::y
uint64_t y
Definition PacketIter.h:265
grk::PacketIter::px0grid_
uint32_t px0grid_
Definition PacketIter.h:284
grk::PacketIter::printStaticState
void printStaticState(void)
Definition PacketIter.cpp:114
grk::PacketIter::getLayno
uint16_t getLayno(void) const
Definition PacketIter.cpp:688
grk::PacketIter::precinctIndex
uint64_t precinctIndex
Definition PacketIter.h:258
grk::PacketIter::dyActive
uint32_t dyActive
Definition PacketIter.h:268
grk::PacketIter::next_lrcpOPT
bool next_lrcpOPT(SparseBuffer *src)
Definition PacketIter.cpp:1179
grk::PacketIter::skipPackets
bool skipPackets(SparseBuffer *src, uint64_t numPackets)
Definition PacketIter.cpp:1164
grk::PacketIter::resno
uint8_t resno
Definition PacketIter.h:257
grk::PacketIter::printDynamicState
void printDynamicState(void)
Definition PacketIter.cpp:128
grk::PacketIter::genPrecinctInfo
void genPrecinctInfo()
Definition PacketIter.cpp:138
grk::PacketIter::getPrecinctIndex
uint64_t getPrecinctIndex(void) const
Definition PacketIter.cpp:684
grk::PacketIter::singleProgression_
bool singleProgression_
Definition PacketIter.h:280
grk::PacketIter::genPrecinctY0Grid
bool genPrecinctY0Grid(ResPrecinctInfo *rpInfo)
Definition PacketIter.cpp:717
grk::PacketIter::init
void init(PacketManager *packetMan, uint32_t pino, TileCodingParams *tcp, grk_rect32 tileBounds, bool compression, uint8_t max_res, uint64_t max_precincts, uint32_t *resolutionPrecinctGrid, uint32_t **precinctByComponent)
Definition PacketIter.cpp:795
grk::PacketIter::genPrecinctY0GridRPCL_OPT
void genPrecinctY0GridRPCL_OPT(ResPrecinctInfo *rpInfo)
Definition PacketIter.cpp:758
grk::PacketIter::next_lrcp
bool next_lrcp(SparseBuffer *src)
Get next packet in layer-resolution-component-precinct order.
Definition PacketIter.cpp:1014
grk::PacketIter::genPrecinctInfoOPT
bool genPrecinctInfoOPT()
Definition PacketIter.cpp:184
grk::PacketIter::next_rpclOPT
bool next_rpclOPT(SparseBuffer *src)
Definition PacketIter.cpp:1374
grk::PacketIter::next_rlcp
bool next_rlcp(SparseBuffer *src)
Get next packet in resolution-layer-component-precinct order.
Definition PacketIter.cpp:1060
grk::PacketIter::getProgression
GRK_PROG_ORDER getProgression(void) const
Definition PacketIter.cpp:672
grk::PacketIter::compression_
bool compression_
Definition PacketIter.h:281
grk::PacketIter::genPrecinctX0GridRPCL_OPT
void genPrecinctX0GridRPCL_OPT(ResPrecinctInfo *rpInfo)
Definition PacketIter.cpp:762
grk::PacketIter::next_pcrlOPT
bool next_pcrlOPT(SparseBuffer *src)
Definition PacketIter.cpp:1315
grk::PacketIter::PacketIter
PacketIter()
Definition PacketIter.cpp:98
grk::PacketIter::py0grid_
uint32_t py0grid_
Definition PacketIter.h:285
grk::PacketIter::update_dxy
void update_dxy(void)
Definition PacketIter.cpp:766
grk::PacketIter::numcomps
uint16_t numcomps
Definition PacketIter.h:261
grk::PacketIter::~PacketIter
~PacketIter()
Definition PacketIter.cpp:106
grk::PacketIter::incrementInner
bool incrementInner
Definition PacketIter.h:276
grk::PacketIter::precInfoCheck
bool precInfoCheck(ResPrecinctInfo *rpInfo)
Definition PacketIter.cpp:706
grk::PacketIter::next_cprlOPT
bool next_cprlOPT(SparseBuffer *src)
Definition PacketIter.cpp:1240
grk::PacketIter::checkForRemainingValidProgression
bool checkForRemainingValidProgression(int32_t prog, uint32_t pino, const char *progString)
Check if there is a remaining valid progression order.
Definition PacketIter.cpp:302
grk::PacketIter::x
uint64_t x
packet coordinates
Definition PacketIter.h:265
grk::PacketIter::validatePrecinct
bool validatePrecinct(void)
Definition PacketIter.cpp:242
grk::PiComp
Packet iterator component.
Definition PacketIter.h:199
grk::PiComp::~PiComp
~PiComp()
Definition PacketIter.h:201
grk::PiComp::dx
uint32_t dx
Definition PacketIter.h:207
grk::PiComp::numresolutions
uint8_t numresolutions
Definition PacketIter.h:209
grk::PiComp::PiComp
PiComp()
Definition PacketIter.h:200
grk::PiComp::resolutions
PiResolution * resolutions
Definition PacketIter.h:210
grk::PiComp::dy
uint32_t dy
Definition PacketIter.h:208
grk::PiResolution
Definition PacketIter.h:179
grk::PiResolution::precinctGridHeight
uint32_t precinctGridHeight
Definition PacketIter.h:191
grk::PiResolution::~PiResolution
~PiResolution()
Definition PacketIter.h:184
grk::PiResolution::precinctGridWidth
uint32_t precinctGridWidth
Definition PacketIter.h:190
grk::PiResolution::precHeightExp
uint32_t precHeightExp
Definition PacketIter.h:189
grk::PiResolution::precinctInfo
ResPrecinctInfo * precinctInfo
Definition PacketIter.h:192
grk::PiResolution::precWidthExp
uint32_t precWidthExp
Definition PacketIter.h:188
grk::PiResolution::PiResolution
PiResolution()
Definition PacketIter.h:180
grk::ResIncludeBuffers
Definition PacketIter.h:42
grk::ResIncludeBuffers::ResIncludeBuffers
ResIncludeBuffers()
Definition PacketIter.h:43
grk::ResIncludeBuffers::buffers
uint8_t * buffers[GRK_J2K_MAXRLVLS]
Definition PacketIter.h:53
grk::ResIncludeBuffers::~ResIncludeBuffers
~ResIncludeBuffers()
Definition PacketIter.h:48
grk::ResPrecinctInfo
Definition PacketIter.h:141
grk::ResPrecinctInfo::resOffsetY0PRJ
uint32_t resOffsetY0PRJ
Definition PacketIter.h:151
grk::ResPrecinctInfo::precWidthExpPRJ
uint32_t precWidthExpPRJ
Definition PacketIter.h:148
grk::ResPrecinctInfo::dxPRJ
uint64_t dxPRJ
Definition PacketIter.h:157
grk::ResPrecinctInfo::resno_
uint8_t resno_
Definition PacketIter.h:161
grk::ResPrecinctInfo::resInPrecGridX0
uint32_t resInPrecGridX0
Definition PacketIter.h:159
grk::ResPrecinctInfo::precHeightPRJ
uint64_t precHeightPRJ
Definition PacketIter.h:154
grk::ResPrecinctInfo::dyPRJ
uint64_t dyPRJ
Definition PacketIter.h:158
grk::ResPrecinctInfo::winPrecGrid
grk_rect32 winPrecGrid
Definition PacketIter.h:166
grk::ResPrecinctInfo::init
bool init(uint8_t resno, uint8_t decomplevel, grk_rect32 tileBounds, uint32_t dx, uint32_t dy, bool windowed, grk_rect32 tileWindow)
Definition PacketIter.cpp:32
grk::ResPrecinctInfo::precWidthPRJMinusOne
uint64_t precWidthPRJMinusOne
Definition PacketIter.h:153
grk::ResPrecinctInfo::winPrecinctsTop_
uint64_t winPrecinctsTop_
Definition PacketIter.h:170
grk::ResPrecinctInfo::precHeightExpPRJ
uint32_t precHeightExpPRJ
Definition PacketIter.h:149
grk::ResPrecinctInfo::precHeightPRJMinusOne
uint64_t precHeightPRJMinusOne
Definition PacketIter.h:155
grk::ResPrecinctInfo::resInPrecGridY0
uint32_t resInPrecGridY0
Definition PacketIter.h:160
grk::ResPrecinctInfo::innerPrecincts_
uint64_t innerPrecincts_
Definition PacketIter.h:167
grk::ResPrecinctInfo::winPrecinctsRight_
uint64_t winPrecinctsRight_
Definition PacketIter.h:169
grk::ResPrecinctInfo::valid
bool valid
Definition PacketIter.h:172
grk::ResPrecinctInfo::numPrecincts_
uint64_t numPrecincts_
Definition PacketIter.h:156
grk::ResPrecinctInfo::winPrecPRJ
grk_rect32 winPrecPRJ
Definition PacketIter.h:165
grk::ResPrecinctInfo::winPrecinctsLeft_
uint64_t winPrecinctsLeft_
Definition PacketIter.h:168
grk::ResPrecinctInfo::precWidthExp
uint32_t precWidthExp
Definition PacketIter.h:146
grk::ResPrecinctInfo::precHeightExp
uint32_t precHeightExp
Definition PacketIter.h:147
grk::ResPrecinctInfo::ResPrecinctInfo
ResPrecinctInfo()
Definition PacketIter.cpp:25
grk::ResPrecinctInfo::resOffsetX0PRJ
uint32_t resOffsetX0PRJ
Definition PacketIter.h:150
grk::ResPrecinctInfo::winPrecinctsBottom_
uint64_t winPrecinctsBottom_
Definition PacketIter.h:171
grk::ResPrecinctInfo::tileBoundsPrecPRJ
grk_rect32 tileBoundsPrecPRJ
Definition PacketIter.h:163
grk::ResPrecinctInfo::precWidthPRJ
uint64_t precWidthPRJ
Definition PacketIter.h:152
grk::ResPrecinctInfo::tileBoundsPrecGrid
grk_rect32 tileBoundsPrecGrid
Definition PacketIter.h:164
grk::ResPrecinctInfo::print
void print(void)
Definition PacketIter.cpp:80
grk::ResPrecinctInfo::decompLevel_
uint8_t decompLevel_
Definition PacketIter.h:162
grk::SparseBuffer
Definition SparseBuffer.h:28
grk::TileCodingParams
Tile coding parameters : this structure is used to store coding/decoding parameters common to all til...
Definition CodingParams.h:122
grk::grk_rect< uint32_t >