Grok 20.3.2
grk::CodecScheduler Class Referenceabstract

An abstract class that can execute T1 phase of codec by running a tf::Executor. More...

#include <CodecScheduler.h>

Inheritance diagram for grk::CodecScheduler:
FlowComponent grk::SchedulerExcalibur grk::SchedulerStandard grk::CompressSchedulerExcalibur grk::DecompressSchedulerExcalibur grk::CompressScheduler grk::DecompressScheduler

Public Member Functions

 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_.

Protected Member Functions

void releaseCoders (void)

Protected Attributes

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

An abstract class that can execute T1 phase of codec by running a tf::Executor.

This class is derived from FlowComponent, and acts as the root tf::Taskflow. Scheduling of tasks for this root is implemented in derived classes.

Constructor & Destructor Documentation

◆ CodecScheduler()

grk::CodecScheduler::CodecScheduler ( uint16_t numComps)
explicit

Contructs a CodecScheduler.

Parameters
numCompsnumber of image components

References numcomps_, and success_.

Referenced by grk::SchedulerExcalibur::SchedulerExcalibur(), and grk::SchedulerStandard::SchedulerStandard().

◆ ~CodecScheduler()

grk::CodecScheduler::~CodecScheduler ( )
virtual

Destroys a CodecScheduler.

References releaseCoders().

Member Function Documentation

◆ release()

virtual void grk::CodecScheduler::release ( void )
pure virtual

Releases Taskflow resources.

Implemented in grk::DecompressScheduler, grk::DecompressSchedulerExcalibur, and grk::SchedulerStandard.

◆ releaseCoders()

void grk::CodecScheduler::releaseCoders ( void )
protected

References coders_.

Referenced by ~CodecScheduler().

◆ run()

void grk::CodecScheduler::run ( void )

Runs tf::Executor.

References TFSingleton::get(), and runFuture_.

◆ scheduleT1()

virtual bool grk::CodecScheduler::scheduleT1 ( ITileProcessor * proc)
pure virtual

Schedules all T1 tasks for a ITileProcessor.

Parameters
procITileProcessor
Returns
true if successful

Implemented in grk::CompressScheduler, grk::DecompressScheduler, and grk::DecompressSchedulerExcalibur.

◆ wait()

bool grk::CodecScheduler::wait ( void )

Waits for tf::Executor to complete.

Returns
true if all tasks succeeded

References runFuture_, and success_.

Member Data Documentation

◆ coders_

std::vector<t1::ICoder*> grk::CodecScheduler::coders_
protected

◆ numcomps_

◆ runFuture_

tf::Future<void> grk::CodecScheduler::runFuture_
protected

tf::Future<void> resulting from running scheduler

Referenced by run(), and wait().

◆ success_

std::atomic_bool grk::CodecScheduler::success_
protected

atomic tracking of compress/decompress success

Referenced by CodecScheduler(), grk::DecompressScheduler::scheduleT1(), grk::DecompressSchedulerExcalibur::scheduleT1(), and wait().


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