83 bool update(uint8_t resno, uint64_t bitIndex)
86 throw std::out_of_range(
"Resolution index out of range");
89 chunkMap[resno] =
new std::map<size_t, uint8_t*>();
92 uint64_t byteIndex = bitIndex >> 3;
98 if(chunks.find(chunkIndex) == chunks.end())
100 auto include = chunks[chunkIndex] + chunkOffset;
101 uint8_t bit = (bitIndex & 7);
102 uint8_t val = *include;
103 if(((val >> bit) & 1) == 0)
105 *include = (uint8_t)(val | (1 << bit));
123 delete[] chunk.second;
153 bool update(uint16_t layno, uint8_t resno, uint16_t compno, uint64_t precno)
167 layerBuf =
include->operator[](layno);
174 uint64_t bitIndex = compno * numprecs + precno;
176 return layerBuf->
update(resno, bitIndex);
203 std::map<uint16_t, LayerIncludeBuffers*>*
include;
216 bool init(uint8_t resno, uint8_t decomplevel,
grk_rect32 tileBounds, uint32_t dx, uint32_t dy,
295 bool compression, uint8_t max_res, uint64_t max_precincts,
296 uint32_t* resolutionPrecinctGrid, uint32_t** precinctByComponent);
Definition PacketManager.h:23
#define GRK_MAXRLVLS
Definition grok.h:322
enum _GRK_PROG_ORDER GRK_PROG_ORDER
Progression orders.
Copyright (C) 2016-2025 Grok Image Compression Inc.
Definition ICacheable.h:20
grk_rect< uint32_t > grk_rect32
Definition geometry.h:61
J2K_T2_MODE
Definition PacketIter.h:36
@ FINAL_PASS
Function called in rate allocation process.
Definition PacketIter.h:38
@ THRESH_CALC
Definition PacketIter.h:37
constexpr size_t GRK_INCLUDE_TRACKER_CHUNK_SIZE
Chunk size for chunked resolution include buffer.
Definition PacketIter.h:45
std::map< uint16_t, LayerIncludeBuffers * > * include
Definition PacketIter.h:203
~IncludeTracker()
Definition PacketIter.h:147
uint16_t numcomps
Definition PacketIter.h:200
void updateNumPrecinctsPerRes(uint8_t resno, uint64_t numPrecincts)
Definition PacketIter.h:192
uint64_t numPrecinctsPerRes[GRK_MAXRLVLS]
Definition PacketIter.h:199
bool update(uint16_t layno, uint8_t resno, uint16_t compno, uint64_t precno)
Definition PacketIter.h:153
uint16_t currentLayer
Definition PacketIter.h:201
void clear()
Definition PacketIter.h:179
void resetNumPrecinctsPerRes(void)
Definition PacketIter.h:186
IncludeTracker(uint16_t numcomponents)
Definition PacketIter.h:140
LayerIncludeBuffers * currentLayerIncludeBuf
Definition PacketIter.h:202
Include buffers for all resolutions in a given layer.
Definition PacketIter.h:54
LayerIncludeBuffers()
Construct a new LayerIncludeBuffers object.
Definition PacketIter.h:59
~LayerIncludeBuffers()
Destroy the LayerIncludeBuffers object.
Definition PacketIter.h:69
bool update(uint8_t resno, uint64_t bitIndex)
Get the byte object Lazily get or allocate a resolution's specific byte within its include buffer's m...
Definition PacketIter.h:83
void clear()
Clears all chunks and chunkMaps.
Definition PacketIter.h:116
std::map< size_t, uint8_t * > * chunkMap[GRK_MAXRLVLS]
Lazily allocated maps of chunks for each resolution.
Definition PacketIter.h:135
bool isWholeTile(void)
Definition PacketIter.cpp:795
void destroy_include(void)
Definition PacketIter.cpp:622
bool next(SparseBuffer *src)
Modify the packet iterator to point to the next packet.
Definition PacketIter.cpp:799
bool next_cprl(SparseBuffer *src)
Get next packet in component-precinct-resolution-layer order.
Definition PacketIter.cpp:820
uint16_t layno
Definition PacketIter.h:330
bool next_pcrl(SparseBuffer *src)
Get next packet in precinct-component-resolution-layer order.
Definition PacketIter.cpp:861
uint16_t getCompno(void) const
Definition PacketIter.cpp:599
ResPrecinctInfo * precinctInfoOPT_
Definition PacketIter.h:353
bool next_rpcl(SparseBuffer *src)
Get next packet in resolution-precinct-component-layer order.
Definition PacketIter.cpp:992
uint32_t dy
Definition PacketIter.h:338
uint16_t compno
Definition PacketIter.h:327
bool update_include(void)
Definition PacketIter.cpp:616
void update_dxy_for_comp(PiComp *comp, bool updateActive)
Definition PacketIter.cpp:669
uint32_t dxActive
Definition PacketIter.h:339
bool skippedLeft_
Definition PacketIter.h:357
grk_progression prog
Definition PacketIter.h:331
PacketManager * packetManager
Definition PacketIter.h:349
bool genPrecinctX0Grid(ResPrecinctInfo *rpInfo)
Definition PacketIter.cpp:648
void generatePrecinctIndex(void)
Definition PacketIter.cpp:222
uint32_t dx
component sub-sampling
Definition PacketIter.h:338
uint8_t maxNumDecompositionResolutions
Definition PacketIter.h:350
uint8_t getResno(void) const
Definition PacketIter.cpp:603
PiComp * comps
Definition PacketIter.h:333
uint64_t y
Definition PacketIter.h:336
uint32_t px0grid_
Definition PacketIter.h:355
void printStaticState(void)
Definition PacketIter.cpp:113
uint16_t getLayno(void) const
Definition PacketIter.cpp:611
uint64_t precinctIndex
Definition PacketIter.h:329
uint32_t dyActive
Definition PacketIter.h:339
bool skipPackets(SparseBuffer *src, uint64_t numPackets)
Definition PacketIter.cpp:1050
uint8_t resno
Definition PacketIter.h:328
void printDynamicState(void)
Definition PacketIter.cpp:127
void genPrecinctInfo()
Definition PacketIter.cpp:137
uint64_t getPrecinctIndex(void) const
Definition PacketIter.cpp:607
bool singleProgression_
Definition PacketIter.h:351
void enable_tile_part_generation(uint32_t pino, bool first_poc_tile_part, uint32_t tppos)
Modify the packet iterator for enabling tile part generation.
Definition PacketIter.cpp:292
bool genPrecinctY0Grid(ResPrecinctInfo *rpInfo)
Definition PacketIter.cpp:637
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:689
bool next_lrcp(SparseBuffer *src)
Get next packet in layer-resolution-component-precinct order.
Definition PacketIter.cpp:905
bool next_rlcp(SparseBuffer *src)
Get next packet in resolution-layer-component-precinct order.
Definition PacketIter.cpp:949
GRK_PROG_ORDER getProgression(void) const
Definition PacketIter.cpp:595
bool compression_
Definition PacketIter.h:352
PacketIter()
Definition PacketIter.cpp:97
uint32_t py0grid_
Definition PacketIter.h:356
void update_dxy(void)
Definition PacketIter.cpp:660
uint16_t numcomps
Definition PacketIter.h:332
~PacketIter()
Definition PacketIter.cpp:105
bool incrementInner
Definition PacketIter.h:347
bool precInfoCheck(ResPrecinctInfo *rpInfo)
Definition PacketIter.cpp:626
bool next_cprlOPT(SparseBuffer *src)
bool checkForRemainingValidProgression(int32_t prog, uint32_t pino, const char *progString)
Check if there is a remaining valid progression order.
Definition PacketIter.cpp:232
uint64_t x
packet coordinates
Definition PacketIter.h:336
bool validatePrecinct(void)
Definition PacketIter.cpp:172
Packet iterator component.
Definition PacketIter.h:272
~PiComp()
Definition PacketIter.h:274
uint32_t dx
Definition PacketIter.h:280
uint8_t numresolutions
Definition PacketIter.h:282
PiComp()
Definition PacketIter.h:273
PiResolution * resolutions
Definition PacketIter.h:283
uint32_t dy
Definition PacketIter.h:281
Definition PacketIter.h:252
uint32_t precinctGridHeight
Definition PacketIter.h:264
~PiResolution()
Definition PacketIter.h:257
uint32_t precinctGridWidth
Definition PacketIter.h:263
uint32_t precHeightExp
Definition PacketIter.h:262
ResPrecinctInfo * precinctInfo
Definition PacketIter.h:265
uint32_t precWidthExp
Definition PacketIter.h:261
PiResolution()
Definition PacketIter.h:253
Definition PacketIter.h:214
uint32_t resOffsetY0PRJ
Definition PacketIter.h:224
uint32_t precWidthExpPRJ
Definition PacketIter.h:221
uint64_t dxPRJ
Definition PacketIter.h:230
uint8_t resno_
Definition PacketIter.h:234
uint32_t resInPrecGridX0
Definition PacketIter.h:232
uint64_t precHeightPRJ
Definition PacketIter.h:227
uint64_t dyPRJ
Definition PacketIter.h:231
grk_rect32 winPrecGrid
Definition PacketIter.h:239
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
uint64_t precWidthPRJMinusOne
Definition PacketIter.h:226
uint64_t winPrecinctsTop_
Definition PacketIter.h:243
uint32_t precHeightExpPRJ
Definition PacketIter.h:222
uint64_t precHeightPRJMinusOne
Definition PacketIter.h:228
uint32_t resInPrecGridY0
Definition PacketIter.h:233
uint64_t innerPrecincts_
Definition PacketIter.h:240
uint64_t winPrecinctsRight_
Definition PacketIter.h:242
bool valid
Definition PacketIter.h:245
uint64_t numPrecincts_
Definition PacketIter.h:229
grk_rect32 winPrecPRJ
Definition PacketIter.h:238
uint64_t winPrecinctsLeft_
Definition PacketIter.h:241
uint32_t precWidthExp
Definition PacketIter.h:219
uint32_t precHeightExp
Definition PacketIter.h:220
ResPrecinctInfo()
Definition PacketIter.cpp:25
uint32_t resOffsetX0PRJ
Definition PacketIter.h:223
uint64_t winPrecinctsBottom_
Definition PacketIter.h:244
grk_rect32 tileBoundsPrecPRJ
Definition PacketIter.h:236
uint64_t precWidthPRJ
Definition PacketIter.h:225
grk_rect32 tileBoundsPrecGrid
Definition PacketIter.h:237
void print(void)
Definition PacketIter.cpp:79
uint8_t decompLevel_
Definition PacketIter.h:235
Definition SparseBuffer.h:28
Tile coding parameters : this structure is used to store coding/decoding parameters common to all til...
Definition CodingParams.h:122
Progression order change (POC)