FAST  3.2.0
Framework for Heterogeneous Medical Image Computing and Visualization
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
fast::Streamer Class Referenceabstract

#include <Streamer.hpp>

+ Inheritance diagram for fast::Streamer:
+ Collaboration diagram for fast::Streamer:

Public Types

typedef std::shared_ptr< Streamerpointer
 
- Public Types inherited from fast::ProcessObject
typedef std::shared_ptr< ProcessObjectpointer
 
- Public Types inherited from fast::Object
typedef std::shared_ptr< Objectpointer
 

Public Member Functions

 Streamer ()
 
virtual ~Streamer ()
 
virtual std::string getNameOfClass () const =0
 
virtual void stop ()
 
virtual void setMaximumNrOfFrames (int maximumNrOfFrames)
 
- Public Member Functions inherited from fast::ProcessObject
virtual ~ProcessObject ()
 
void update (int executeToken=-1)
 
RuntimeMeasurement::pointer getRuntime ()
 
RuntimeMeasurement::pointer getRuntime (std::string name)
 
RuntimeMeasurementsManager::pointer getAllRuntimes ()
 
void enableRuntimeMeasurements ()
 
void disableRuntimeMeasurements ()
 
void setMainDevice (ExecutionDevice::pointer device)
 
void setMainDeviceCriteria (const DeviceCriteria &citeria)
 
ExecutionDevice::pointer getMainDevice () const
 
void setDevice (uint deviceNumber, ExecutionDevice::pointer device)
 
void setDeviceCriteria (uint deviceNumber, const DeviceCriteria &criteria)
 
ExecutionDevice::pointer getDevice (uint deviceNumber) const
 
virtual DataChannel::pointer getOutputPort (uint portID=0)
 
virtual DataChannel::pointer getInputPort (uint portID=0)
 
virtual void setInputConnection (DataChannel::pointer port)
 
virtual void setInputConnection (uint portID, DataChannel::pointer port)
 
virtual void setInputData (DataObject::pointer data)
 
virtual void setInputData (uint portID, DataObject::pointer data)
 
int getNrOfInputConnections () const
 
int getNrOfOutputPorts () const
 
virtual void loadAttributes ()
 
std::shared_ptr< AttributegetAttribute (std::string id)
 
std::unordered_map< std::string, std::shared_ptr< Attribute > > getAttributes ()
 
void setAttributes (std::vector< std::shared_ptr< Attribute >> attributes)
 
void stopPipeline ()
 
void setModified (bool modified)
 
template<class DataType >
std::shared_ptr< DataTypeupdateAndGetOutputData (uint portID=0)
 
- Public Member Functions inherited from fast::Object
 Object ()
 
virtual ~Object ()
 
ReportergetReporter ()
 

Static Public Member Functions

static std::string getStaticNameOfClass ()
 
- Static Public Member Functions inherited from fast::ProcessObject
static std::string getStaticNameOfClass ()
 
- Static Public Member Functions inherited from fast::Object
static std::string getStaticNameOfClass ()
 

Protected Member Functions

virtual void waitForFirstFrame ()
 
virtual void startStream ()
 
virtual void frameAdded ()
 
virtual void generateStream ()=0
 
- Protected Member Functions inherited from fast::ProcessObject
 ProcessObject ()
 
virtual void execute ()=0
 
virtual void preExecute ()
 
virtual void postExecute ()
 
template<class DataType >
void createInputPort (uint portID, bool required=true)
 
template<class DataType >
void createOutputPort (uint portID)
 
template<class DataType >
std::shared_ptr< DataTypegetInputData (uint portID=0)
 
template<class DataType >
std::shared_ptr< DataTypegetOutputData (uint portID=0)
 
void addOutputData (uint portID, DataObject::pointer data)
 
bool hasNewInputData (uint portID)
 
virtual void waitToFinish ()
 
void createOpenCLProgram (std::string sourceFilename, std::string name="")
 
cl::Program getOpenCLProgram (std::shared_ptr< OpenCLDevice > device, std::string name="", std::string buildOptions="")
 
void createFloatAttribute (std::string id, std::string name, std::string description, float initialValue)
 
void createIntegerAttribute (std::string id, std::string name, std::string description, int initialValue)
 
void createBooleanAttribute (std::string id, std::string name, std::string description, bool initialValue)
 
void createStringAttribute (std::string id, std::string name, std::string description, std::string initialValue)
 
float getFloatAttribute (std::string id)
 
int getIntegerAttribute (std::string id)
 
bool getBooleanAttribute (std::string id)
 
std::string getStringAttribute (std::string id)
 
std::vector< float > getFloatListAttribute (std::string id)
 
std::vector< int > getIntegerListAttribute (std::string id)
 
std::vector< bool > getBooleanListAttribute (std::string id)
 
std::vector< std::string > getStringListAttribute (std::string id)
 
void changeDeviceOnInputs (uint deviceNumber, ExecutionDevice::pointer device)
 
void validateInputPortExists (uint portID)
 
void validateOutputPortExists (uint portID)
 
- Protected Member Functions inherited from fast::Object
ReporterreportError ()
 
ReporterreportWarning ()
 
ReporterreportInfo ()
 
ReporterEnd reportEnd () const
 

Protected Attributes

bool m_firstFrameIsInserted = false
 
bool m_streamIsStarted = false
 
bool m_stop = false
 
std::mutex m_firstFrameMutex
 
std::mutex m_stopMutex
 
std::unique_ptr< std::thread > m_thread
 
std::condition_variable m_firstFrameCondition
 
- Protected Attributes inherited from fast::ProcessObject
bool mIsModified
 
int m_lastExecuteToken = -1
 
RuntimeMeasurementsManager::pointer mRuntimeManager
 
std::unordered_map< uint, bool > mRequiredInputs
 
std::unordered_map< uint, std::vector< uint > > mInputDevices
 
std::unordered_map< uint, ExecutionDevice::pointermDevices
 
std::unordered_map< uint, DeviceCriteriamDeviceCriteria
 
std::unordered_map< uint, DataChannel::pointermInputConnections
 
std::unordered_map< uint, std::vector< std::weak_ptr< DataChannel > > > mOutputConnections
 
std::unordered_map< uint, bool > mInputPorts
 
std::unordered_set< uintmOutputPorts
 
std::unordered_map< uint, std::pair< DataObject::pointer, uint64_t > > mLastProcessed
 
std::unordered_map< std::string, std::shared_ptr< OpenCLProgram > > mOpenCLPrograms
 
std::unordered_map< std::string, std::shared_ptr< Attribute > > mAttributes
 
std::unordered_map< std::string, std::string > m_frameData
 
std::unordered_set< std::string > m_lastFrame
 
int m_maximumNrOfFrames = -1
 
- Protected Attributes inherited from fast::Object
std::weak_ptr< ObjectmPtr
 

Detailed Description

A streamer is a PO that runs a separate thread of execution which produces data

Member Typedef Documentation

◆ pointer

typedef std::shared_ptr<Streamer> fast::Streamer::pointer

Constructor & Destructor Documentation

◆ Streamer()

fast::Streamer::Streamer ( )

◆ ~Streamer()

virtual fast::Streamer::~Streamer ( )
inlinevirtual

Member Function Documentation

◆ frameAdded()

virtual void fast::Streamer::frameAdded ( )
protectedvirtual

Signal that a frame was added. Necessary for unlocking the block in waitForFirstFrame

Reimplemented in fast::RandomAccessStreamer.

◆ generateStream()

virtual void fast::Streamer::generateStream ( )
protectedpure virtual

◆ getNameOfClass()

virtual std::string fast::Streamer::getNameOfClass ( ) const
pure virtual

Implements fast::ProcessObject.

Implemented in fast::FileStreamer.

◆ getStaticNameOfClass()

static std::string fast::Streamer::getStaticNameOfClass ( )
inlinestatic

◆ setMaximumNrOfFrames()

virtual void fast::Streamer::setMaximumNrOfFrames ( int  maximumNrOfFrames)
virtual

◆ startStream()

virtual void fast::Streamer::startStream ( )
protectedvirtual

Starts the stream if it is not already started

◆ stop()

virtual void fast::Streamer::stop ( )
virtual

◆ waitForFirstFrame()

virtual void fast::Streamer::waitForFirstFrame ( )
protectedvirtual

Block until the first data frame has been sent using a condition variable

Member Data Documentation

◆ m_firstFrameCondition

std::condition_variable fast::Streamer::m_firstFrameCondition
protected

◆ m_firstFrameIsInserted

bool fast::Streamer::m_firstFrameIsInserted = false
protected

◆ m_firstFrameMutex

std::mutex fast::Streamer::m_firstFrameMutex
protected

◆ m_stop

bool fast::Streamer::m_stop = false
protected

◆ m_stopMutex

std::mutex fast::Streamer::m_stopMutex
protected

◆ m_streamIsStarted

bool fast::Streamer::m_streamIsStarted = false
protected

◆ m_thread

std::unique_ptr<std::thread> fast::Streamer::m_thread
protected

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