Grok 20.3.2
grk::TileProcessorCompress Struct Reference

#include <TileProcessorCompress.h>

Inheritance diagram for grk::TileProcessorCompress:
grk::ITileProcessorCompress grk::TileProcessor grk::ITileProcessor grk::ITileProcessor

Public Member Functions

 TileProcessorCompress (uint16_t index, TileCodingParams *tcp, CodeStream *codeStream, IStream *stream)
 Constructs a TileProcessorCompress.
 ~TileProcessorCompress () override
 Destroys a TileProcessorCompress.
bool init (void) override
 Initializes the TileProcessor.
PacketTrackergetPacketTracker (void) override
 Gets the packet tracker.
bool preCompressTile (size_t thread_id) override
 Pre-compresses the tile (compression-only preparation).
bool canWritePocMarker (void) override
 Checks whether a POC marker can be written for this tile.
bool writeTilePartT2 (uint32_t *tileBytesWritten) override
 Writes the T2 part of the current tile part.
bool doCompress (void) override
 Performs the full tile compression (T1 + T2 + rate allocation).
bool ingestUncompressedData (uint8_t *p_src, uint64_t src_length) override
 Ingests uncompressed image data into the tile.
bool needsRateControl (void) override
 Checks whether rate control is required for this tile.
uint32_t getPreCalculatedTileLen (void) override
 Gets the pre-calculated tile length (for rate control optimization).
bool canPreCalculateTileLen (void) override
 Checks whether the tile length can be pre-calculated.
void setFirstPocTilePart (bool res) override
 Sets whether this tile part is the first POC tile part.
void setProgIterNum (uint32_t num) override
 Sets the current progression iterator number.
uint8_t getTilePartCounter (void) const override
 Gets the current tile-part counter.
void incTilePartCounter (void) override
 Increments the tile-part counter.
void buildCompressDAG (void)
tf::Future< void > submitCompressDAG (void)
bool compressDAGSuccess (void) const
Public Member Functions inherited from grk::ITileProcessorCompress
virtual ~ITileProcessorCompress ()=default
 Destroys the TileProcessorCompress.
Public Member Functions inherited from grk::ITileProcessor
virtual ~ITileProcessor ()=default
 Destroys the TileProcessor.
Public Member Functions inherited from grk::TileProcessor
 TileProcessor (uint16_t index, TileCodingParams *tcp, CodeStream *codeStream, IStream *stream, bool isCompressor, uint32_t tileCacheStrategy)
 Constructs a TileProcessor.
virtual ~TileProcessor () override
 Destroys a TileProcessor.
void setProcessors (MarkerParser *parser) override
 Sets the marker parser for processing.
void setStream (IStream *stream, bool ownsStream) override
 Sets the stream for input/output operations.
bool decompressWithTLM (const std::shared_ptr< TPFetchSeq > &tilePartFetchSeq, CoderPool *streamPool, Rect32 unreducedImageBounds, std::function< void()> post, TileFutureManager &futures) override
 Decompresses the tile using Tile Length Markers (TLM).
bool decompressPrepareWithTLM (const std::shared_ptr< TPFetchSeq > &tilePartFetchSeq) override
 Prepares for decompression using Tile Length Markers (TLM).
bool doPostT1 (void) override
 Performs post T1 processing.
void prepareForDecompression (void) override
 Prepares for decompression.
bool parseTilePart (std::vector< std::unique_ptr< MarkerParser > > *parsers, IStream *bifurcatedStream, uint16_t mainMarkerId, TilePartInfo tilePartInfo) override
 Parses tile part.
bool decompressFromCachedTileParts () override
 Parse tile-part packets using cached SOT offsets from tilePartSeq_, without re-reading SOT markers.
bool readSOT (IStream *stream, uint8_t *headerData, uint16_t headerSize, TilePartInfo &tilePartInfo, bool needToReadIndexAndLength) override
 Reads SOT marker.
void scheduleAndRunDecompress (CoderPool *coderPool, Rect32 unreducedImageBounds, std::function< void()> post, TileFutureManager &futures) override
 Schedule T2/T1 decompression.
void post_decompressT2T1 (GrkImage *scratch) override
 Performs post T2+T1 processing.
bool differentialUpdate (Rect32 unreducedImageBounds) override
 Updates differential decompress state.
GrkImagegetImage (void) override
 Gets the tile GrkImage.
void setImage (GrkImage *img) override
 Gets the tile GrkImage.
Rect32 getUnreducedTileWindow (void) override
 Get the Unreduced Tile Window object.
TileCodingParamsgetTCP (void) override
uint8_t getMaxNumDecompressResolutions (void) override
 Get the Max Num Decompress Resolutions object.
IStreamgetStream (void) override
 Get the Stream object.
uint16_t getIndex (void) const override
 Get the Index object.
void incrementIndex (void) override
 Increments the tile index.
TilegetTile (void) override
 Get the Tile object.
grk_progression_state getProgressionState () override
 Gets the progression state.
CodecSchedulergetScheduler (void) override
 Get the Scheduler object.
bool isCompressor (void) override
uint64_t getNumProcessedPackets (void) override
 Get the Num Processed Packets object.
void incNumProcessedPackets (void) override
 Increments the number of processed packets by 1.
void incNumProcessedPackets (uint64_t numPackets) override
void incNumReadDataPackets (void) override
 Increments the number of read data packets by 1.
uint32_t getTileCacheStrategy (void) override
 Gets the Tile Cache Strategy object.
grk_plugin_tilegetCurrentPluginTile (void) const override
 Gets the Current Plugin Tile object.
void setCurrentPluginTile (grk_plugin_tile *tile) override
 Set the Current Plugin Tile object.
CodingParamsgetCodingParams (void) override
 Get the Coding Params object.
GrkImagegetHeaderImage (void) override
 Get the Header Image object.
std::shared_ptr< PacketLengthCache< uint32_t > > getPacketLengthCache (void) override
 Get the Packet Length Cache object.
bool needsMctDecompress (uint16_t compno) override
bool needsMctDecompress (void) override
bool shouldDecodeComponent (uint16_t compno) override
 Check if a component should be decoded based on user selection.
MctgetMCT (void) override
 gets Mct
void release (void) override
 Releases resources - image and tile.
void release (uint32_t strategy) override
 release select resources
void releaseForSwath () override
 Unconditionally releases both image and tile data (swath consumer path).
bool readPLT (uint8_t *headerData, uint16_t headerSize) override
 Reads a PLT marker (Packet length, tile-part header).
bool allSOTMarkersParsed () override
 Checks if tile is completely parsed.
bool hasUnparsedTileParts () override
 True when we know for certain that tile parts are missing.
void setTruncated (void) override
 Sets processor to truncated if not all tile parts have been parsed.
bool hasError (void) override
 Checks if an error has occurred.
bool isInitialized (void) override
 Checks if the processor is initialized.
bool isBestEffortDecompressed (void) override
 Check if tile was decompressed on a best-effort basis (may have been truncated or errored).
void setBestEffortDecompressed (void) override
bool scheduledForDecompression (void) override
void resetSOTParsing () override
 Reset SOT parsing state so the tile can be re-parsed from the codestream.
bool reinitForReDecompress (void) override
 Reinitialize for re-decompression after LRU eviction.
bool isStripOutputWritten () const override
 Check if strip-mode output was written directly (bypass multi-tile band callback).

Private Member Functions

void transferTileDataFromImage (void)
void dcLevelShiftCompress ()
void scheduleCompressT1 ()
bool compressT2 (uint32_t *packet_bytes_written)
bool rateAllocate (uint32_t *allPacketBytes, bool disableRateControl)
bool layerNeedsRateControl (uint16_t layno)
bool makeSingleLosslessLayer ()
void makeLayerFinal (uint16_t layno)
bool pcrdBisectSimple (uint32_t *p_data_written, bool disableRateControl)
void makeLayerSimple (uint16_t layno, double thresh, bool finalAttempt)
bool pcrdBisectFeasible (uint32_t *p_data_written, bool disableRateControl)
bool makeLayerFeasible (uint16_t layno, uint16_t thresh, bool finalAttempt)
void syncPluginCodeBlockData ()
void prepareBlockForFirstLayer (t1::CodeblockCompress *cblk)

Private Attributes

uint32_t preCalculatedTileLen_ = 0
bool first_poc_tile_part_ = true
 Compression Only true for first POC tile part, otherwise false.
uint8_t tilePartCounter_ = 0
 index of tile part being currently coded.
uint32_t prog_iter_num = 0
uint8_t newTilePartProgressionPosition_ = 0
 position of the tile part flag in progression order
PacketTrackerpacketTracker_ = nullptr
std::unique_ptr< tf::Taskflow > compressFlow_
std::unique_ptr< FlowComponentmctFlow_
std::vector< std::unique_ptr< FlowComponent > > dwtFlows_
std::unique_ptr< FlowComponentt1Flow_
std::vector< std::unique_ptr< WaveletFwdScheduleData > > dwtScratch_
std::atomic< bool > dagSuccess_ {true}

Additional Inherited Members

Protected Attributes inherited from grk::TileProcessor
GrkImageheaderImage_ = nullptr
 header GrkImage
grk_plugin_tilecurrent_plugin_tile_ = nullptr
 grk_plugin_tile
CodingParamscp_ = nullptr
 CodingParams
std::shared_ptr< PacketLengthCache< uint32_t > > packetLengthCache_
 PacketLengthCache
Tiletile_ = nullptr
 Tile
uint16_t tileIndex_ = 0
 index of tile being currently compressed/decompressed
TileCodingParamstcp_ = nullptr
 TileCodingParams
IStreamstream_ = nullptr
 IStream
Mctmct_ = nullptr
 MCT
CodecSchedulerscheduler_ = nullptr
 CodecScheduler
SchedulerFreebyrdschedulerFreebyrd_ = nullptr
 SchedulerFreebyrd — strip-based decompression via freebyrd pool

Constructor & Destructor Documentation

◆ TileProcessorCompress()

grk::TileProcessorCompress::TileProcessorCompress ( uint16_t index,
TileCodingParams * tcp,
CodeStream * codeStream,
IStream * stream )

◆ ~TileProcessorCompress()

grk::TileProcessorCompress::~TileProcessorCompress ( )
override

Destroys a TileProcessorCompress.

References packetTracker_.

Member Function Documentation

◆ buildCompressDAG()

◆ canPreCalculateTileLen()

bool grk::TileProcessorCompress::canPreCalculateTileLen ( void )
overridevirtual

Checks whether the tile length can be pre-calculated.

Returns
true if pre-calculation is possible, false otherwise

Implements grk::ITileProcessorCompress.

References grk::TileProcessor::cp_, and grk::TileProcessor::tcp_.

Referenced by buildCompressDAG(), and doCompress().

◆ canWritePocMarker()

bool grk::TileProcessorCompress::canWritePocMarker ( void )
overridevirtual

Checks whether a POC marker can be written for this tile.

Returns
true if POC marker is allowed, false otherwise

Implements grk::ITileProcessorCompress.

References grk::TileProcessor::cp_, GRK_IS_CINEMA, grk::TileProcessor::tcp_, and tilePartCounter_.

Referenced by buildCompressDAG(), and doCompress().

◆ compressDAGSuccess()

bool grk::TileProcessorCompress::compressDAGSuccess ( void ) const

References dagSuccess_.

◆ compressT2()

bool grk::TileProcessorCompress::compressT2 ( uint32_t * packet_bytes_written)
private

◆ dcLevelShiftCompress()

void grk::TileProcessorCompress::dcLevelShiftCompress ( void )
private

◆ doCompress()

◆ getPacketTracker()

PacketTracker * grk::TileProcessorCompress::getPacketTracker ( void )
overridevirtual

Gets the packet tracker.

Returns
Pointer to the PacketTracker

Implements grk::ITileProcessorCompress.

References packetTracker_.

◆ getPreCalculatedTileLen()

uint32_t grk::TileProcessorCompress::getPreCalculatedTileLen ( void )
overridevirtual

Gets the pre-calculated tile length (for rate control optimization).

Returns
pre-calculated tile length in bytes

Implements grk::ITileProcessorCompress.

References preCalculatedTileLen_.

◆ getTilePartCounter()

uint8_t grk::TileProcessorCompress::getTilePartCounter ( void ) const
overridevirtual

Gets the current tile-part counter.

Returns
current tile-part counter value

Implements grk::ITileProcessorCompress.

References tilePartCounter_.

◆ incTilePartCounter()

void grk::TileProcessorCompress::incTilePartCounter ( void )
overridevirtual

Increments the tile-part counter.

Implements grk::ITileProcessorCompress.

References tilePartCounter_.

◆ ingestUncompressedData()

bool grk::TileProcessorCompress::ingestUncompressedData ( uint8_t * p_src,
uint64_t src_length )
overridevirtual

Ingests uncompressed image data into the tile.

Parameters
p_srcpointer to source uncompressed data
src_lengthlength of the source data in bytes
Returns
true if ingestion succeeds, false otherwise

Implements grk::ITileProcessorCompress.

References grk::grk_copy_strided(), grk::TileProcessor::headerImage_, and grk::TileProcessor::tile_.

◆ init()

bool grk::TileProcessorCompress::init ( void )
overridevirtual

Initializes the TileProcessor.

Returns
true if initialization succeeds, false otherwise

Implements grk::ITileProcessor.

References grk::TileProcessor::getTCP(), grk::TileProcessor::headerImage_, grk::TileProcessor::init(), packetTracker_, and grk::TileProcessor::tile_.

Referenced by preCompressTile().

◆ layerNeedsRateControl()

bool grk::TileProcessorCompress::layerNeedsRateControl ( uint16_t layno)
private

◆ makeLayerFeasible()

bool grk::TileProcessorCompress::makeLayerFeasible ( uint16_t layno,
uint16_t thresh,
bool finalAttempt )
private

References grk::TileProcessor::tile_.

Referenced by pcrdBisectFeasible().

◆ makeLayerFinal()

void grk::TileProcessorCompress::makeLayerFinal ( uint16_t layno)
private

◆ makeLayerSimple()

void grk::TileProcessorCompress::makeLayerSimple ( uint16_t layno,
double thresh,
bool finalAttempt )
private

References grk::TileProcessor::tile_.

Referenced by pcrdBisectSimple().

◆ makeSingleLosslessLayer()

bool grk::TileProcessorCompress::makeSingleLosslessLayer ( )
private

◆ needsRateControl()

bool grk::TileProcessorCompress::needsRateControl ( void )
overridevirtual

Checks whether rate control is required for this tile.

Returns
true if rate control is needed, false otherwise

Implements grk::ITileProcessorCompress.

References layerNeedsRateControl(), and grk::TileProcessor::tcp_.

Referenced by buildCompressDAG(), pcrdBisectFeasible(), pcrdBisectSimple(), and scheduleCompressT1().

◆ pcrdBisectFeasible()

◆ pcrdBisectSimple()

◆ preCompressTile()

bool grk::TileProcessorCompress::preCompressTile ( size_t thread_id)
overridevirtual

Pre-compresses the tile (compression-only preparation).

Parameters
thread_idID of the thread performing the pre-compression
Returns
true if pre-compression succeeds, false otherwise

Implements grk::ITileProcessorCompress.

References grk::ceildiv(), grk::TileProcessor::cp_, grk::TileProcessor::current_plugin_tile_, first_poc_tile_part_, grk_get_data_type(), GRK_INT_16, grk::grklog, grk::TileProcessor::headerImage_, init(), grk::TileProcessor::needsMctDecompress(), grk::TileProcessor::tcp_, grk::TileProcessor::tile_, and tilePartCounter_.

◆ prepareBlockForFirstLayer()

void grk::TileProcessorCompress::prepareBlockForFirstLayer ( t1::CodeblockCompress * cblk)
private

◆ rateAllocate()

bool grk::TileProcessorCompress::rateAllocate ( uint32_t * allPacketBytes,
bool disableRateControl )
private

◆ scheduleCompressT1()

◆ setFirstPocTilePart()

void grk::TileProcessorCompress::setFirstPocTilePart ( bool res)
overridevirtual

Sets whether this tile part is the first POC tile part.

Parameters
restrue for first POC tile part, false otherwise

Implements grk::ITileProcessorCompress.

References first_poc_tile_part_.

◆ setProgIterNum()

void grk::TileProcessorCompress::setProgIterNum ( uint32_t num)
overridevirtual

Sets the current progression iterator number.

Parameters
numnew progression iterator value

Implements grk::ITileProcessorCompress.

References prog_iter_num.

◆ submitCompressDAG()

tf::Future< void > grk::TileProcessorCompress::submitCompressDAG ( void )

◆ syncPluginCodeBlockData()

◆ transferTileDataFromImage()

void grk::TileProcessorCompress::transferTileDataFromImage ( void )
private

◆ writeTilePartT2()

bool grk::TileProcessorCompress::writeTilePartT2 ( uint32_t * tileBytesWritten)
overridevirtual

Writes the T2 part of the current tile part.

Parameters
tileBytesWritten[out] number of bytes written for this tile part
Returns
true if writing succeeds, false otherwise

Implements grk::ITileProcessorCompress.

References compressT2(), grk::TileProcessor::packetLengthCache_, grk::SOD, grk::TileProcessor::stream_, and tilePartCounter_.

Member Data Documentation

◆ compressFlow_

std::unique_ptr<tf::Taskflow> grk::TileProcessorCompress::compressFlow_
private

◆ dagSuccess_

std::atomic<bool> grk::TileProcessorCompress::dagSuccess_ {true}
private

◆ dwtFlows_

std::vector<std::unique_ptr<FlowComponent> > grk::TileProcessorCompress::dwtFlows_
private

Referenced by buildCompressDAG().

◆ dwtScratch_

std::vector<std::unique_ptr<WaveletFwdScheduleData> > grk::TileProcessorCompress::dwtScratch_
private

Referenced by buildCompressDAG().

◆ first_poc_tile_part_

bool grk::TileProcessorCompress::first_poc_tile_part_ = true
private

Compression Only true for first POC tile part, otherwise false.

Referenced by compressT2(), preCompressTile(), and setFirstPocTilePart().

◆ mctFlow_

std::unique_ptr<FlowComponent> grk::TileProcessorCompress::mctFlow_
private

Referenced by buildCompressDAG().

◆ newTilePartProgressionPosition_

uint8_t grk::TileProcessorCompress::newTilePartProgressionPosition_ = 0
private

position of the tile part flag in progression order

Referenced by compressT2(), pcrdBisectFeasible(), pcrdBisectSimple(), and TileProcessorCompress().

◆ packetTracker_

PacketTracker* grk::TileProcessorCompress::packetTracker_ = nullptr
private

◆ preCalculatedTileLen_

uint32_t grk::TileProcessorCompress::preCalculatedTileLen_ = 0
private

◆ prog_iter_num

uint32_t grk::TileProcessorCompress::prog_iter_num = 0
private

Referenced by compressT2(), and setProgIterNum().

◆ t1Flow_

std::unique_ptr<FlowComponent> grk::TileProcessorCompress::t1Flow_
private

Referenced by buildCompressDAG().

◆ tilePartCounter_

uint8_t grk::TileProcessorCompress::tilePartCounter_ = 0
private

index of tile part being currently coded.

tilePartCounter_ holds the total number of tile parts encoded thus far while the compressor is compressing the current tile part.

Referenced by canWritePocMarker(), getTilePartCounter(), incTilePartCounter(), preCompressTile(), and writeTilePartT2().


The documentation for this struct was generated from the following files: