128 void dump(uint32_t flag, FILE* outputFileStream)
override;
201 void wait(uint16_t tile_index);
238 bool readCBD(uint8_t* headerData, uint16_t headerSize);
256 bool readSIZ(uint8_t* headerData, uint16_t headerSize);
263 bool readCAP(uint8_t* headerData, uint16_t headerSize);
271 bool readCRG(uint8_t* headerData, uint16_t headerSize);
278 bool readTLM(uint8_t* headerData, uint16_t headerSize);
285 bool readPLM(uint8_t* headerData, uint16_t headerSize);
293 bool readPPM(uint8_t* headerData, uint16_t headerSize);
301 bool readSOT(uint8_t* headerData, uint16_t headerSize);
331 std::function<bool()>
333 const std::shared_ptr<TPFetchSeq>& tilePartFetchSeq,
334 Rect32 unreducedImageBounds,
335 std::function<std::function<
void()>(
ITileProcessor*)> postGenerator);
464 std::function<std::function<
void()>(
ITileProcessor*)> postGenerator);
static tf::Executor & get(void)
Gets current instance of the Singleton (creates with full hardware concurrency if null).
Definition TFSingleton.h:54
Definition TileFutureManager.h:29
bool postProcess(GrkImage *img)
Post processes decompressed image.
Definition CodeStreamDecompress.cpp:1099
std::queue< uint16_t > batchTileQueueTLM_
Definition CodeStreamDecompress.h:520
bool readCBD(uint8_t *headerData, uint16_t headerSize)
Reads a CBD marker (Component bit depth definition).
Definition CodeStreamDecompress_ReadMarkers.cpp:412
bool readPLM(uint8_t *headerData, uint16_t headerSize)
Reads a PLM marker (Packet length, main header marker).
Definition CodeStreamDecompress_ReadMarkers.cpp:335
bool readCAP(uint8_t *headerData, uint16_t headerSize)
Reads a CAP marker.
Definition CodeStreamDecompress_ReadMarkers.cpp:516
bool readUNK(void)
Reads unknown marker.
Definition CodeStreamDecompress_ReadMarkers.cpp:463
uint16_t decompressInFlight_
Definition CodeStreamDecompress.h:528
uint16_t nextBandTileY_
Definition CodeStreamDecompress.h:427
std::unique_ptr< TileCodingParams > defaultTcp_
Default TileCodingParams.
Definition CodeStreamDecompress.h:375
bool readSOT(uint8_t *headerData, uint16_t headerSize)
Read SOT (Start of tile part) marker.
Definition CodeStreamDecompress_ReadMarkers.cpp:357
grk_io_band_callback getBandCallback() const override
Definition CodeStreamDecompress.h:61
void startDecompressConsumer(uint16_t maxInFlight)
Definition CodeStreamDecompress.cpp:1641
bool headerRead_
true if main header was successfully read
Definition CodeStreamDecompress.h:384
std::atomic< int32_t > maxFetchedTileRow_
Definition CodeStreamDecompress.h:532
void dumpImageComponentHeader(grk_image_comp *comp, bool dev_dump_flag, FILE *outputFileStream)
Dumps a component image header structure.
Definition CodeStreamDecompress_Dump.cpp:181
void * ioUserData_
io user data
Definition CodeStreamDecompress.h:416
std::function< bool()> genDecompressTileTLMTask(ITileProcessor *tileProcessor, const std::shared_ptr< TPFetchSeq > &tilePartFetchSeq, Rect32 unreducedImageBounds, std::function< std::function< void()>(ITileProcessor *)> postGenerator)
Definition CodeStreamDecompress.cpp:638
uint16_t batchTileInitialRows_
Definition CodeStreamDecompress.h:515
bool readTLM(uint8_t *headerData, uint16_t headerSize)
Reads a TLM marker (Tile Length Marker).
Definition CodeStreamDecompress_ReadMarkers.cpp:449
uint16_t batchTileNextRows_
Definition CodeStreamDecompress.h:516
void dumpTileHeader(TileCodingParams *defaultTile, uint32_t numcomps, FILE *outputFileStream)
Dumps tile info to file.
Definition CodeStreamDecompress_Dump.cpp:54
std::unique_ptr< MarkerCache > markerCache_
MarkerCache
Definition CodeStreamDecompress.h:358
uint16_t batchTileHeadroomIncrement(uint16_t numRows, uint16_t tilesLeft)
Definition CodeStreamDecompress.cpp:1357
void waitSwathCopy() override
Wait for all in-flight swath copy tasks to complete.
Definition CodeStreamDecompress.cpp:1558
std::function< void()> postMultiTile(void)
Final post-processing lambda, executed by wait(nullptr) after all tiles complete.
Definition CodeStreamDecompress.cpp:1118
CodeStreamDecompress(IStream *stream)
Constructs a CodeStreamDecompress.
Definition CodeStreamDecompress.cpp:67
std::shared_ptr< ChunkBuffer<> > chunkBuffer_
Definition CodeStreamDecompress.h:506
void dumpMainHeader(FILE *outputFileStream)
Dumps main header info to file.
Definition CodeStreamDecompress_Dump.cpp:143
std::queue< ITileProcessor * > batchTileQueueSequential_
Definition CodeStreamDecompress.h:536
bool mergePpm(CodingParams *p_cp)
Merges all PPM markers read (Packed headers, main header).
Definition CodeStreamDecompress_ReadMarkers.cpp:352
bool readSIZ(uint8_t *headerData, uint16_t headerSize)
Reads a SIZ marker (image and tile size).
Definition CodeStreamDecompress_ReadMarkers.cpp:552
uint16_t batchTileUnscheduledSequential_
Definition CodeStreamDecompress.h:538
TileFutureManager swathCopyFutureManager_
futures for swath copy tasks scheduled via scheduleSwathCopy()
Definition CodeStreamDecompress.h:457
bool readHeaderProcedure(void)
Reads header - all markers until first SOT.
Definition CodeStreamDecompress_ReadMarkers.cpp:76
TileWindow tilesToDecompress_
TileWindow
Definition CodeStreamDecompress.h:353
void * ioBandUserData_
Definition CodeStreamDecompress.h:422
std::map< uint16_t, PendingBand_ > pendingBands_
Definition CodeStreamDecompress.h:433
CoderPool coderPool_
pool of ICoder
Definition CodeStreamDecompress.h:490
GrkImage * getImage(void) override
Gets composite GrkImage for all tiles in decompress region.
Definition CodeStreamDecompress.cpp:1873
std::unique_ptr< GrkImage, std::function< void(GrkImage *)> > activeImage_
Definition CodeStreamDecompress.h:472
void differentialUpdate(GrkImage *scratch)
Updates differential decompress state.
Definition CodeStreamDecompress.cpp:1765
grk_io_pixels_callback ioBufferCallback_
callback for io pixels
Definition CodeStreamDecompress.h:410
GrkImage * getCompositeNoWait(void)
Definition CodeStreamDecompress.cpp:1879
std::condition_variable bandDrainCV_
Definition CodeStreamDecompress.h:426
std::function< bool(GrkImage *)> postPostProcess_
post post-decompress method
Definition CodeStreamDecompress.h:445
static constexpr int32_t maxRowsAhead_
Definition CodeStreamDecompress.h:199
std::thread decompressWorker_
Definition CodeStreamDecompress.h:502
int32_t currTileIndex_
Definition CodeStreamDecompress.h:367
int32_t batchTileScheduledRows_
Definition CodeStreamDecompress.h:539
std::unique_ptr< TileCompletion > tileCompletion_
Definition CodeStreamDecompress.h:500
void setPostPostProcess(std::function< bool(GrkImage *)> func)
Sets the Post Post Process object.
Definition CodeStreamDecompress.cpp:1760
bool needsHeaderRead(void) const
Checks if header needs to be read.
Definition CodeStreamDecompress_ReadMarkers.cpp:311
std::atomic< bool > success_
track success of scheduled tile decompression
Definition CodeStreamDecompress.h:478
TileFutureManager decompressTileFutureManager_
futures for scheduled tiles
Definition CodeStreamDecompress.h:451
uint16_t batchTileScheduleHeadroomSequential_
Definition CodeStreamDecompress.h:537
bool fetchByTile(std::set< uint16_t > &slated, Rect32 unreducedImageBounds, std::function< std::function< void()>(ITileProcessor *)> postGenerator)
Definition CodeStreamDecompress.cpp:1662
std::mutex bandOrderMutex_
Definition CodeStreamDecompress.h:425
MarkerParser markerParser_
MarkerParser
Definition CodeStreamDecompress.h:348
void setBandCallback(grk_io_band_callback callback, void *user_data) override
Sets a band-completion callback for incremental writing.
Definition CodeStreamDecompress.cpp:157
std::function< void()> postSingleTile(ITileProcessor *tileProcessor)
Definition CodeStreamDecompress.cpp:1080
bool activateScratch(bool singleTile, GrkImage *scratch)
Activates scratch image.
Definition CodeStreamDecompress.cpp:1771
bool batchDequeueSequential(void)
Definition CodeStreamDecompress.cpp:1362
std::condition_variable batchTileQueueCondition_
Definition CodeStreamDecompress.h:514
ITileProcessor * getTileProcessor(uint16_t tile_index)
Gets tile processor for specified tile index.
Definition CodeStreamDecompress.cpp:1837
std::mutex decompressThrottleMutex_
Definition CodeStreamDecompress.h:526
uint16_t maxDecompressInFlight_
Definition CodeStreamDecompress.h:529
grk_io_band_callback ioBandCallback_
callback invoked when a tile-row band is ready for incremental writing
Definition CodeStreamDecompress.h:421
void init(grk_decompress_parameters *param) override
Initializes decompressor.
Definition CodeStreamDecompress.cpp:134
bool isHT_
global HT flag
Definition CodeStreamDecompress.h:498
Rect32 region_
Holds unreduced unsubsampled decompress region , if set.
Definition CodeStreamDecompress.h:397
bool decompress(grk_plugin_tile *tile) override
Decompresses image / image region.
Definition CodeStreamDecompress.cpp:165
bool decompressTileImpl(uint16_t tile_index)
Definition CodeStreamDecompress.cpp:932
TilePartInfo currTilePartInfo_
Definition CodeStreamDecompress.h:366
std::unique_ptr< CompressedChunkCache > compressedChunkCache_
Definition CodeStreamDecompress.h:509
bool readHeader(grk_header_info *header_info) override
Reads header.
Definition CodeStreamDecompress_ReadMarkers.cpp:208
std::vector< std::future< bool > > fetchByTileFutures_
Definition CodeStreamDecompress.h:461
bool readCRG(uint8_t *headerData, uint16_t headerSize)
Reads a CRG marker (Component registration).
Definition CodeStreamDecompress_ReadMarkers.cpp:316
grk_progression_state getProgressionState(uint16_t tile_index) override
Gets the grk_progression_state for a tile.
Definition CodeStreamDecompress.cpp:1755
bool setProgressionState(grk_progression_state state) override
Sets the grk_progression_state for a tile.
Definition CodeStreamDecompress.cpp:1751
std::shared_ptr< std::unordered_map< uint16_t, std::shared_ptr< TPFetchSeq > > > tilePartFetchByTile_
Definition CodeStreamDecompress.h:460
std::vector< std::unique_ptr< MarkerParser > > tileMarkerParsers_
Definition CodeStreamDecompress.h:492
void onRowCompleted(uint16_t tileIndexBegin)
Definition CodeStreamDecompress.cpp:1563
std::unique_ptr< ConcurrentQueue< std::function< void()> > > decompressQueue_
Definition CodeStreamDecompress.h:524
std::unique_ptr< GrkImage, RefCountedDeleter< GrkImage > > scratchImage_
Scratch GrkImage for decompressor This image may composite multiple tiles, if needed.
Definition CodeStreamDecompress.h:470
std::condition_variable decompressThrottleCV_
Definition CodeStreamDecompress.h:527
void postReadHeader(void)
Definition CodeStreamDecompress_ReadMarkers.cpp:186
grk_io_register_reclaim_callback grkRegisterReclaimCallback_
callback to reclaim io buffers
Definition CodeStreamDecompress.h:439
std::unique_ptr< GrkImage, RefCountedDeleter< GrkImage > > multiTileComposite_
multi tile composite GrkImage Used to composite multiple tiles - subsampled and reduced for region de...
Definition CodeStreamDecompress.h:391
bool startTLMDecompress(std::set< uint16_t > &pendingTiles)
Definition CodeStreamDecompress.cpp:509
std::thread decompressConsumer_
Definition CodeStreamDecompress.h:525
void decompressSequential(const std::set< uint16_t > &pendingTiles)
Definition CodeStreamDecompress.cpp:677
bool sequentialParseAndSchedule(bool multiTile)
Parses next slated tile.
Definition CodeStreamDecompress.cpp:764
void decompressSequentialPrepare(void)
Prepares to read first slated tile part.
Definition CodeStreamDecompress.cpp:667
bool readPPM(uint8_t *headerData, uint16_t headerSize)
Reads a PPM marker (Packed headers, main header).
Definition CodeStreamDecompress_ReadMarkers.cpp:344
void wait(grk_wait_swath *swath) override
Wait for tile decompression to complete.
Definition CodeStreamDecompress.cpp:1429
std::atomic< uint32_t > numTilesDecompressed_
number of decompressed tiles
Definition CodeStreamDecompress.h:484
bool initDefaultTCP()
Initializes default TileCodingParams.
Definition CodeStreamDecompress.cpp:1746
std::shared_ptr< TPFetchSeq > tilePartFetchFlat_
Definition CodeStreamDecompress.h:459
~CodeStreamDecompress()
Destroys a CodeStreamDecompress.
Definition CodeStreamDecompress.h:47
bool setDecompressRegion(RectD region)
Sets the decompress region.
Definition CodeStreamDecompress.cpp:1220
void dump(uint32_t flag, FILE *outputFileStream) override
Dumps image tags to file.
Definition CodeStreamDecompress_Dump.cpp:110
ITileProcessor * currTileProcessor_
Tile processor currently being parsed.
Definition CodeStreamDecompress.h:364
void dumpImageHeader(GrkImage *image, bool dev_dump_flag, FILE *outputFileStream)
Dumps an image header structure.
Definition CodeStreamDecompress_Dump.cpp:152
void setNumComponents(uint16_t numComps)
Definition CodeStreamDecompress.cpp:1742
void decompressTLM(const std::set< uint16_t > &pendingTiles)
Definition CodeStreamDecompress.cpp:588
void scheduleTileBatch()
Definition CodeStreamDecompress.cpp:1581
std::function< void()> postMulti_
Definition CodeStreamDecompress.h:399
std::mutex batchTileQueueMutex_
Definition CodeStreamDecompress.h:513
void scheduleSwathCopy(const grk_wait_swath *swath, grk_swath_buffer *buf) override
Schedule SIMD-accelerated tile-to-swath copies for decoded tiles.
Definition CodeStreamDecompress.cpp:1520
void initTilesToDecompress(Rect16 region)
Initializes tile completeness set.
Definition CodeStreamDecompress.cpp:1738
bool schedule(ITileProcessor *tileProcessor, bool multiTile)
Definition CodeStreamDecompress.cpp:559
bool doTileBatching(void)
Definition CodeStreamDecompress.cpp:1352
bool decompressImpl(std::set< uint16_t > pendingTiles)
Decompresses all tiles.
Definition CodeStreamDecompress.cpp:386
bool headerError_
true if there was an error reading the main header
Definition CodeStreamDecompress.h:380
GrkImage * getHeaderImage(void)
Gets header GrkImage (where main and tile header information is stored).
Definition CodeStreamDecompress_ReadMarkers.cpp:307
void * getBandUserData() const override
Definition CodeStreamDecompress.h:65
std::unique_ptr< TileCache > tileCache_
TileCache
Definition CodeStreamDecompress.h:404
bool decompressTile(uint16_t tile_index) override
Single Tile ////////////////////////////////////////////////////.
Definition CodeStreamDecompress.cpp:900
bool readSOC()
Reads a SOC marker (Start of Codestream).
Definition CodeStreamDecompress_ReadMarkers.cpp:499
bool startSequentialDecompress(std::set< uint16_t > &pendingTiles)
Definition CodeStreamDecompress.cpp:529
std::function< bool(std::set< uint16_t > &)> decompressStart_
Definition CodeStreamDecompress.h:504
CodeStream(IStream *stream)
Definition CodeStream.cpp:38
Thread-safe unbounded queue with blocking pop and close signal.
Definition ConcurrentQueue.h:38
Stores header and data for an image.
Definition GrkImage.h:54
Stores state of rectangular window of tiles slated for decompression Each tile's slated or completely...
Definition TileWindow.h:34
void(* grk_io_register_reclaim_callback)(grk_io_init io_init, grk_io_callback reclaim_callback, void *io_user_data, void *reclaim_user_data)
Grok IO register reclaim callback.
Definition grok.h:502
bool(* grk_io_pixels_callback)(uint32_t worker_id, grk_io_buf buffer, void *user_data)
Grok IO pixels callback.
Definition grok.h:512
bool(* grk_io_band_callback)(uint32_t yBegin, uint32_t yEnd, grk_image *image, void *user_data)
Callback invoked when a horizontal band of the decompressed image is ready for writing.
Definition grok.h:647
ResWindow.
Definition CompressedChunkCache.h:36
Rect< uint32_t > Rect32
Definition geometry.h:64
Rect< uint16_t > Rect16
Definition geometry.h:65
Rect< double > RectD
Definition geometry.h:67
Definition CodeStreamDecompress.h:429
uint32_t yEnd
Definition CodeStreamDecompress.h:430
uint16_t numCols
Definition CodeStreamDecompress.h:431
uint16_t tileX0
Definition CodeStreamDecompress.h:431
uint32_t yBegin
Definition CodeStreamDecompress.h:430
Definition CoderPool.h:53
Coding parameters.
Definition CodingParams.h:402
Decompress interface.
Definition IDecompressor.h:29
Interface for managing tile compression/decompression.
Definition ITileProcessor.h:37
Definition MarkerParser.h:61
Tile coding parameters : this structure is used to store coding/decoding parameters common to all til...
Definition CodingParams.h:124
Definition ITileProcessor.h:24
Decompression parameters.
Stores progression state information Note: limited to 256 components.
User-managed output buffer for asynchronous swath tile copy-and-convert.
Definition grok.h:974
Specify swath region to wait on during asynchronous decompression.
Definition grok.h:1004