Grok 20.3.2
grk::CompressScheduler Class Reference

#include <CompressScheduler.h>

Inheritance diagram for grk::CompressScheduler:
grk::SchedulerStandard grk::CodecScheduler FlowComponent

Public Member Functions

 CompressScheduler (Tile *tile, bool needsRateControl, TileCodingParams *tcp, const double *mct_norms, uint16_t mct_numcomps)
 Constructs a CompressScheduler.
 ~CompressScheduler () override=default
 Destroys a CompressScheduler.
bool scheduleT1 (ITileProcessor *proc) override
 Schedules all T1 tasks for a ITileProcessor.
bool populateT1Flow (FlowComponent *flow)
const RateControlStatsgetRateControlStats () const
 Get rate control stats collected during T1 encoding.
Public Member Functions inherited from grk::SchedulerStandard
 SchedulerStandard (uint16_t numComps)
 Constructs a SchedulerStandard.
 ~SchedulerStandard () override
 Destroys a SchedulerStandard.
void release (void) override
 Releases flow components.
ImageComponentFlowgetImageComponentFlow (uint16_t compno)
 Gets ImageComponentFlow for component.
Public Member Functions inherited from grk::CodecScheduler
 CodecScheduler (uint16_t numComps)
 Contructs a CodecScheduler.
virtual ~CodecScheduler ()
 Destroys a CodecScheduler.
void run (void)
 Runs tf::Executor.
bool wait (void)
 Waits for tf::Executor to complete.
Public Member Functions inherited from FlowComponent
void addTo (tf::Taskflow &composition)
 Composes this FlowComponent's tf::Taskflow with another tf::Taskflow.
void precede (FlowComponent &successor)
 Schedule this FlowComponent before another FlowComponent.
void precede (tf::Task &successor)
 Schedule this Taskflow before another FlowComponent.
tf::Task & getCompositionTask (void)
void conditional_precede (FlowComponent *root, FlowComponent *successor, std::function< int()> condition_lambda)
 Conditionally schedule successor based on condition_lambda.
FlowComponentname (const std::string &name)
 Gets name of composition task.
tf::Task & nextTask ()
 Gets next task placeholder for componentFlow_.

Private Member Functions

bool compress (size_t workerId, uint64_t maxBlocks)
 compress next block
void compress (t1::ICoder *coder, t1::CompressBlockExec *block)
 compress block

Private Attributes

Tiletile_
 Tile to compress
std::mutex distortion_mutex_
 mutex to serialize distortion decrease from blocks
bool needsRateControl_
 true if rate control requested
std::vector< t1::CompressBlockExec * > encodeBlocks_
 vector of CompressBlockExec encode blocks
std::atomic< int64_t > blockCount_
 atomic counter to keep track of number of encoded blocks
TileCodingParamstcp_
 TileCodingParams for this tile
const double * mct_norms_
 array of mct norms
uint16_t mct_numcomps_
 number of components to apply mct to
RateControlStats rateControlStats_
 rate control statistics collected during T1 encoding

Additional Inherited Members

Protected Member Functions inherited from grk::SchedulerStandard
void graph (uint16_t compno)
 Calculates task graph for component.
Protected Member Functions inherited from grk::CodecScheduler
void releaseCoders (void)
Protected Attributes inherited from grk::SchedulerStandard
std::vector< ImageComponentFlow * > imageComponentFlow_
 store image component flows
Protected Attributes inherited from grk::CodecScheduler
std::atomic_bool success_
 atomic tracking of compress/decompress success
uint16_t numcomps_
 number of components
std::vector< t1::ICoder * > coders_
 pool of ICoder
tf::Future< void > runFuture_
 tf::Future<void> resulting from running scheduler

Constructor & Destructor Documentation

◆ CompressScheduler()

grk::CompressScheduler::CompressScheduler ( Tile * tile,
bool needsRateControl,
TileCodingParams * tcp,
const double * mct_norms,
uint16_t mct_numcomps )

Constructs a CompressScheduler.

Parameters
tileTile
needsRateControltrue if rate control needed
tcpTileCodingParams
mct_normsarray of mct norms
mct_numcompsnumber of mct components

References blockCount_, mct_norms_, mct_numcomps_, needsRateControl_, grk::CodecScheduler::numcomps_, grk::Tile::numcomps_, rateControlStats_, grk::SchedulerStandard::SchedulerStandard(), tcp_, and tile_.

◆ ~CompressScheduler()

grk::CompressScheduler::~CompressScheduler ( )
overridedefault

Destroys a CompressScheduler.

Member Function Documentation

◆ compress() [1/2]

bool grk::CompressScheduler::compress ( size_t workerId,
uint64_t maxBlocks )
private

compress next block

Parameters
workerIdworker id
maxBlocksmaximum number of blocks
Returns
true if successful

References blockCount_, grk::CodecScheduler::coders_, compress(), and encodeBlocks_.

Referenced by compress(), populateT1Flow(), and scheduleT1().

◆ compress() [2/2]

void grk::CompressScheduler::compress ( t1::ICoder * coder,
t1::CompressBlockExec * block )
private

◆ getRateControlStats()

const RateControlStats & grk::CompressScheduler::getRateControlStats ( ) const
inline

Get rate control stats collected during T1 encoding.

References rateControlStats_.

◆ populateT1Flow()

◆ scheduleT1()

bool grk::CompressScheduler::scheduleT1 ( ITileProcessor * proc)
overridevirtual

Member Data Documentation

◆ blockCount_

std::atomic<int64_t> grk::CompressScheduler::blockCount_
private

atomic counter to keep track of number of encoded blocks

Referenced by compress(), and CompressScheduler().

◆ distortion_mutex_

std::mutex grk::CompressScheduler::distortion_mutex_
mutableprivate

mutex to serialize distortion decrease from blocks

Referenced by compress().

◆ encodeBlocks_

std::vector<t1::CompressBlockExec*> grk::CompressScheduler::encodeBlocks_
private

vector of CompressBlockExec encode blocks

Referenced by compress(), populateT1Flow(), and scheduleT1().

◆ mct_norms_

const double* grk::CompressScheduler::mct_norms_
private

array of mct norms

Referenced by CompressScheduler(), populateT1Flow(), and scheduleT1().

◆ mct_numcomps_

uint16_t grk::CompressScheduler::mct_numcomps_
private

number of components to apply mct to

Referenced by CompressScheduler(), populateT1Flow(), and scheduleT1().

◆ needsRateControl_

bool grk::CompressScheduler::needsRateControl_
private

true if rate control requested

Referenced by compress(), CompressScheduler(), populateT1Flow(), and scheduleT1().

◆ rateControlStats_

RateControlStats grk::CompressScheduler::rateControlStats_
private

rate control statistics collected during T1 encoding

Referenced by compress(), CompressScheduler(), and getRateControlStats().

◆ tcp_

TileCodingParams* grk::CompressScheduler::tcp_
private

◆ tile_

Tile* grk::CompressScheduler::tile_
private

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