129 cache_.resize(numTiles,
nullptr);
165 if(!entry || !entry->processor)
167 entry->processor->setTruncated();
177 entry->dirty_ = dirty;
183 if(tileIndex >=
cache_.size())
187 cache_[tileIndex]->dirty_ = dirty;
193 if(tileIndex >=
cache_.size())
195 return cache_[tileIndex] ?
cache_[tileIndex]->dirty_ :
false;
200 if(tile_index >=
cache_.size())
203 grklog.warn(
"Failed to put tile processor for tile %d because tile index is out of bounds",
213 if(
cache_[tile_index]->processor)
214 delete cache_[tile_index]->processor;
215 cache_[tile_index]->processor = processor;
222 return cache_[tile_index];
227 if(tile_index >=
cache_.size())
234 return cache_[tile_index];
252 if(tileIndex >=
cache_.size())
255 cache_[tileIndex]->processor->releaseForSwath();
262 if(!entry || !entry->processor)
265 if(entry->processor->isBestEffortDecompressed() || entry->processor->getImage())
267 entry->processor->resetSOTParsing();
273 return std::all_of(tilesSlatedForDecompression.begin(), tilesSlatedForDecompression.end(),
274 [
this](uint16_t tileId) {
275 if(tileId >= cache_.size())
277 auto* entry = cache_[tileId];
278 return entry && entry->processor &&
279 entry->processor->allSOTMarkersParsed();
285 if(!state.single_tile)
288 auto cached =
get(state.tile_index);
289 if(!cached || !cached->processor)
292 uint16_t maxlayer = 0;
293 for(uint8_t r = 0; r < state.num_resolutions; ++r)
295 maxlayer = std::max(maxlayer, state.layers_per_resolution[r]);
297 if(maxlayer != cached->processor->getTCP()->layersToDecompress_)
299 cached->dirty_ =
true;
300 cached->processor->getTCP()->layersToDecompress_ = maxlayer;
308 auto cached =
get(tileIndex);
312 return cached->processor->getProgressionState();
TileCacheEntry * put(uint16_t tile_index, ITileProcessor *processor)
Definition TileCache.h:198
void setTruncated(void)
Definition TileCache.h:161
std::vector< TileCacheEntry * > cache_
Definition TileCache.h:352
void evictLRU()
Evict least-recently-used tiles when over the active limit.
Definition TileCache.h:335
grk_progression_state getProgressionState(uint16_t tileIndex)
Definition TileCache.h:306
void setMaxActiveTiles(uint16_t maxActive)
Set the maximum number of tiles that can hold decompressed data simultaneously.
Definition TileCache.h:151
TileCache()
Definition TileCache.h:110
bool setProgressionState(grk_progression_state state)
Definition TileCache.h:283
uint32_t getStrategy() const
Definition TileCache.h:142
void setStrategy(uint32_t strategy)
Definition TileCache.h:137
bool allSlatedSOTMarkersParsed(const std::set< uint16_t > &tilesSlatedForDecompression)
Definition TileCache.h:271
bool isDirty(uint16_t tileIndex)
Definition TileCache.h:191
std::list< uint16_t > lruList_
Definition TileCache.h:353
void resetSOTParsing()
Definition TileCache.h:258
bool empty() const
Definition TileCache.h:132
~TileCache()
Definition TileCache.h:112
void init(uint16_t numTiles)
Definition TileCache.h:120
void setDirty(uint16_t tileIndex, bool dirty)
Definition TileCache.h:181
void releaseForSwath(uint16_t tileIndex)
Release tile data unconditionally (swath consumer path).
Definition TileCache.h:250
bool initialized_
Definition TileCache.h:355
void setDirty(bool dirty)
Definition TileCache.h:171
void release(uint16_t tileIndex)
Definition TileCache.h:237
uint16_t getMaxActiveTiles() const
Definition TileCache.h:156
uint16_t maxActiveTiles_
Definition TileCache.h:356
uint32_t strategy_
Definition TileCache.h:354
TileCacheEntry * get(uint16_t tile_index)
Definition TileCache.h:225
void promoteLRU(uint16_t tileIndex)
Move a tile to the front of the LRU list (most recently used).
Definition TileCache.h:319
#define GRK_TILE_CACHE_NONE
Grok tile cache strategy.
Definition grok.h:632
#define GRK_TILE_CACHE_LRU
Definition grok.h:635
ResWindow.
Definition CompressedChunkCache.h:36
ILogger & grklog
Definition Logger.cpp:24
Interface for managing tile compression/decompression.
Definition ITileProcessor.h:37
Stores a tile processor together with its cache state.
Definition TileCache.h:48
ITileProcessor * processor
Definition TileCache.h:56
TileCacheEntry(ITileProcessor *p)
Definition TileCache.h:49
~TileCacheEntry()
Definition TileCache.h:51
TileCacheEntry()
Definition TileCache.h:50
bool dirty_
True when the entry's decompressed image is stale or absent.
Definition TileCache.h:58
Stores progression state information Note: limited to 256 components.