Grok 20.3.2
grk::CompressSchedulerExcalibur Class Reference

Compresses a tile using windowed design. More...

#include <CompressSchedulerExcalibur.h>

Inheritance diagram for grk::CompressSchedulerExcalibur:
grk::SchedulerExcalibur grk::CodecScheduler FlowComponent

Public Member Functions

 CompressSchedulerExcalibur (Tile *tile, bool needsRateControl, TileCodingParams *tcp, const double *mct_norms, uint16_t mct_numcomps)
 Constructs a CompressSchedulerExcalibur.
 ~CompressSchedulerExcalibur () override=default
 Destroys a SchedulerExcalibur.
Public Member Functions inherited from grk::SchedulerExcalibur
 SchedulerExcalibur (uint16_t numComps)
 Constructs a SchedulerExcalibur.
virtual ~SchedulerExcalibur ()
 Destroys a SchedulerExcalibur.
Public Member Functions inherited from grk::CodecScheduler
 CodecScheduler (uint16_t numComps)
 Contructs a CodecScheduler.
virtual ~CodecScheduler ()
 Destroys a CodecScheduler.
virtual bool scheduleT1 (ITileProcessor *proc)=0
 Schedules all T1 tasks for a ITileProcessor.
void run (void)
 Runs tf::Executor.
bool wait (void)
 Waits for tf::Executor to complete.
virtual void release (void)=0
 Releases Taskflow resources.
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 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

Additional Inherited Members

Protected Member Functions inherited from grk::CodecScheduler
void releaseCoders (void)
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

Detailed Description

Compresses a tile using windowed design.

Constructor & Destructor Documentation

◆ CompressSchedulerExcalibur()

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

Constructs a CompressSchedulerExcalibur.

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::SchedulerExcalibur::SchedulerExcalibur(), tcp_, and tile_.

◆ ~CompressSchedulerExcalibur()

grk::CompressSchedulerExcalibur::~CompressSchedulerExcalibur ( )
overridedefault

Destroys a SchedulerExcalibur.

Member Data Documentation

◆ blockCount_

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

atomic counter to keep track of number of encoded blocks

Referenced by CompressSchedulerExcalibur().

◆ distortion_mutex_

std::mutex grk::CompressSchedulerExcalibur::distortion_mutex_
mutableprivate

mutex to serialize distortion decrease from blocks

◆ encodeBlocks_

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

vector of CompressBlockExec encode blocks

◆ mct_norms_

const double* grk::CompressSchedulerExcalibur::mct_norms_
private

array of mct norms

Referenced by CompressSchedulerExcalibur().

◆ mct_numcomps_

uint16_t grk::CompressSchedulerExcalibur::mct_numcomps_
private

number of components to apply mct to

Referenced by CompressSchedulerExcalibur().

◆ needsRateControl_

bool grk::CompressSchedulerExcalibur::needsRateControl_
private

true if rate control requested

Referenced by CompressSchedulerExcalibur().

◆ tcp_

TileCodingParams* grk::CompressSchedulerExcalibur::tcp_
private

TileCodingParams for this tile

Referenced by CompressSchedulerExcalibur().

◆ tile_

Tile* grk::CompressSchedulerExcalibur::tile_
private

Tile to compress

Referenced by CompressSchedulerExcalibur().


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