AGX Dynamics 2.42.3.1
Loading...
Searching...
No Matches
agxData::Track Class Reference

#include <Track.h>

+ Inheritance diagram for agxData::Track:

Classes

class  InputThread
 
class  OutputThread
 
class  Thread
 

Public Types

typedef agx::Callback2< Track *, std::exception & > ExceptionHandler
 
typedef agx::Event1< Frame * > FrameEvent
 
typedef agx::observer_ptr< const InputThread > InputThreadConstObserver
 
typedef agx::ref_ptr< const InputThread > InputThreadConstRef
 
typedef agx::observer_ptr< InputThread > InputThreadObserver
 
typedef agx::ref_ptr< InputThread > InputThreadRef
 
typedef agx::observer_ptr< const OutputThread > OutputThreadConstObserver
 
typedef agx::ref_ptr< const OutputThread > OutputThreadConstRef
 
typedef agx::observer_ptr< OutputThread > OutputThreadObserver
 
typedef agx::ref_ptr< OutputThread > OutputThreadRef
 
typedef agx::observer_ptr< const Thread > ThreadConstObserver
 
typedef agx::ref_ptr< const Thread > ThreadConstRef
 
typedef agx::observer_ptr< Thread > ThreadObserver
 
typedef agx::ref_ptr< Thread > ThreadRef
 
- Public Types inherited from agx::Object
typedef agx::observer_ptr< const Event > EventConstObserver
 
typedef agx::ref_ptr< const Event > EventConstRef
 
typedef agx::observer_ptr< Event > EventObserver
 
typedef agx::Vector< EventObserver > EventObserverVector
 
typedef agx::VectorPOD< Event * > EventPtrVector
 
typedef agx::ref_ptr< Event > EventRef
 
typedef agx::Vector< EventRef > EventRefVector
 

Public Member Functions

 Track (const agx::Name &name="Track")
 
 Track (FrameReader *input, FrameWriter *output)
 
void flush (bool force=false)
 Flush all frames to the registered outputs.
 
agx::UInt getAccumulatedNumBytes () const
 
agx::UInt getAccumulatedNumFrames () const
 
agx::Real getActiveTimeRangeEnd () const
 
agx::Real getActiveTimeRangeStart () const
 
agx::Real getDataRate () const
 
bool getEnableLooping () const
 
const ExceptionHandler & getExceptionHandler () const
 
bool getExpandFrames () const
 
agx::UInt getFrameStride () const
 
FrameReader * getInput ()
 
const FrameReader * getInput () const
 
agx::UInt getMaxNumBytes () const
 
agx::UInt getNumCachedBytes () const
 
agx::UInt getNumCachedFrames () const
 
agx::UInt getNumQueuedBytes () const
 
agx::UInt getNumQueuedFrames () const
 
FrameWriter * getOutput ()
 
const FrameWriter * getOutput () const
 
agx::RealModeEnum getRealMode () const
 
bool hasJumped () const
 
bool isEOF () const
 
bool isInputEOF () const
 
bool isQueueEmpty () const
 Determine if the track is empty.
 
bool isRunning () const
 
bool jumpToFrame (agx::UInt frameIndex)
 Select which frame that should be returned by the next call to 'readFrame'.
 
bool jumpToTime (agx::Real time)
 
void loadCache (Track *other)
 Load cached frames from another track.
 
FrameRef popFrame (bool blocking=true)
 
void pushFrame (Frame *frame)
 
void setActiveTimeRangeEnd (agx::Real time)
 
void setActiveTimeRangeStart (agx::Real time)
 
void setEnableLooping (bool flag)
 Set to true to enable looping from the input.
 
void setExceptionHandler (const ExceptionHandler &handler)
 Specify an exception handler.
 
void setExpandFrames (bool flag)
 Set to true to expand all partial frames to keyframes.
 
agx::Real setFrameFrequency (agx::Real frequency)
 Set the frame stride using a frequency, which is converted to a stride.
 
void setFrameStride (agx::UInt stride)
 Set frame stride.
 
void setInput (FrameReader *input)
 Set the input stream.
 
void setMaxNumBytes (agx::UInt numBytes)
 Set the maximum number of bytes in the frame cache.
 
void setOutput (FrameWriter *output)
 Specify the output stream.
 
void setRealMode (agx::RealModeEnum mode)
 Set the real mode.
 
void start ()
 Start the track, producing frames from the input and consuming frames at the outputs.
 
void stop ()
 Stop frame production.
 
- Public Member Functions inherited from agx::Object
 Object (const Name &name=Name(), Model *model=Object::ClassModel())
 
void addListener (EventListener *listener)
 
virtual void buildNavigationTree (agxJson::Value &eNode) const
 
virtual void configure (TiXmlElement *)
 
agx::String fullName () const
 
agx::String fullPath () const
 
agx::String fullPath (const agx::Object *root) const
 
template<typename T >
T * getAutoScopedResource (const agx::Path &path)
 
template<typename T >
const T * getAutoScopedResource (const agx::Path &path) const
 
agx::Object * getAutoScopedResource (const agx::Path &path, agx::Model *model=nullptr)
 
const agx::Object * getAutoScopedResource (const agx::Path &path, agx::Model *model=nullptr) const
 
agx::Object * getContext ()
 
template<typename T >
T * getContext ()
 
const agx::Object * getContext () const
 
template<typename T >
const T * getContext () const
 
agx::UInt32 getId () const
 
const agx::Name & getImplementationName () const
 
agx::Model * getModel ()
 
const agx::Model * getModel () const
 
const agx::Name & getName () const
 
agx::Object * getNextSibling ()
 
const agx::Object * getNextSibling () const
 
agx::Path getPath () const
 
agx::Path getPath (const agx::Object *root) const
 
template<typename T >
T * getResource (const agx::Path &path)
 
template<typename T >
const T * getResource (const agx::Path &path) const
 
agx::Object * getResource (const agx::Path &path, agx::Model *model=nullptr)
 
const agx::Object * getResource (const agx::Path &path, agx::Model *model=nullptr) const
 
virtual agx::Object * getResourceImpl (const agx::Path &path, agx::Model *model)
 
agx::Object * getRootContext ()
 
const agx::Object * getRootContext () const
 
bool hasListener (EventListener *listener)
 
bool hasParent (const agx::Object *node) const
 
bool isUnique () const
 
virtual void printSubtree () const
 
virtual void rebind ()
 
void removeListener (EventListener *listener)
 
virtual void save (TiXmlElement *) const
 
virtual void setContext (agx::Object *context)
 
void setId (UInt32 id)
 
void setModel (agx::Model *model)
 Set the object model (handled automatically).
 
void setName (const agx::Name &name)
 Set the name of the object.
 
virtual void snapshot (TiXmlNode *, const String &) const
 
- Public Member Functions inherited from agx::Referenced
 Referenced ()
 Default constructor.
 
 Referenced (const Referenced &)
 
template<typename T >
T * as ()
 Subclass casting.
 
template<typename T >
const T * as () const
 
template<typename T >
T * asSafe ()
 Safe subclass casting, return nullptr if template type does not match.
 
template<typename T >
const T * asSafe () const
 
int getReferenceCount () const
 
template<typename T >
bool is () const
 Subclass test.
 
Referenced & operator= (const Referenced &)
 Assignment operator. Will increment the number of references to the referenced object.
 
void reference (void *ptr=nullptr) const
 Explicitly increment the reference count by one, indicating that this object has another pointer which is referencing it.
 
void unreference (void *ptr=nullptr) const
 Decrement the reference count by one, indicating that a pointer to this object is referencing it.
 
void unreference_nodelete () const
 Decrement the reference count by one, indicating that a pointer to this object is referencing it.
 

Static Public Member Functions

static agx::Model * ClassModel ()
 
- Static Public Member Functions inherited from agx::Object
static agx::Model * ClassModel ()
 
static agx::String generateName (const agx::String &bindPath)
 
static const HashSet< Object * > & getActiveObjects ()
 
static bool getEnableRebind ()
 Should rebinding be allowed? Right now a global setting.
 
static Object * load (const String &path, Device *device, const String &type, const String &attribute, const String &value)
 
template<typename T >
static T * load (const String &path, Device *device, const String &type, const String &attribute, const String &value)
 
static Object * load (const String &path, Device *device, const String &type="", size_t instance=0)
 
template<typename T >
static T * load (const String &path, Device *device, const String &type="", size_t instance=0)
 
static void load (const String &path, Device *device, ObjectPtrVector &loadedObjects)
 
static Object * load (TiXmlElement *eObject, Device *device)
 
template<typename T >
static T * load (TiXmlElement *eObject, Device *device)
 
static TiXmlDocument openDocument (const String &path)
 
static void setEnableRebind (bool flag)
 Sets if rebinding of objects should be allowed (Right now a global setting).
 
- Static Public Member Functions inherited from agx::Referenced
template<typename T >
static bool ValidateCast (const Referenced *object)
 

Public Attributes

FrameEvent popFrameEvent
 
FrameEvent pushFrameEvent
 

Protected Member Functions

virtual ~Track ()
 
- Protected Member Functions inherited from agx::Object
virtual ~Object ()
 
- Protected Member Functions inherited from agx::Referenced
virtual ~Referenced ()
 Destructor.
 
void allocateObserverVector () const
 
void deleteUsingDeleteHandler () const
 

Additional Inherited Members

- Static Protected Member Functions inherited from agx::Referenced
static DeleteHandler * getDeleteHandler ()
 
static void setDeleteHandler (DeleteHandler *handler)
 Internal: Set a DeleteHandler to which deletion of all referenced counted objects will be delegated to.
 
- Protected Attributes inherited from agx::Referenced
Mutex m_mutex
 
ObserverContainer m_observers
 
AtomicValue m_refCount
 

Detailed Description

Definition at line 35 of file agxData/Track.h.

Member Typedef Documentation

◆ ExceptionHandler

Definition at line 50 of file agxData/Track.h.

◆ FrameEvent

Definition at line 45 of file agxData/Track.h.

◆ InputThreadConstObserver

◆ InputThreadConstRef

Definition at line 41 of file agxData/Track.h.

◆ InputThreadObserver

◆ InputThreadRef

◆ OutputThreadConstObserver

◆ OutputThreadConstRef

◆ OutputThreadObserver

◆ OutputThreadRef

◆ ThreadConstObserver

Definition at line 40 of file agxData/Track.h.

◆ ThreadConstRef

Definition at line 40 of file agxData/Track.h.

◆ ThreadObserver

◆ ThreadRef

Definition at line 40 of file agxData/Track.h.

Constructor & Destructor Documentation

◆ Track() [1/2]

agxData::Track::Track ( const agx::Name &  name = "Track")

◆ Track() [2/2]

agxData::Track::Track ( FrameReader *  input,
FrameWriter *  output 
)

◆ ~Track()

virtual agxData::Track::~Track ( )
protectedvirtual

Member Function Documentation

◆ ClassModel()

static agx::Model * agxData::Track::ClassModel ( )
static

◆ flush()

void agxData::Track::flush ( bool  force = false)

Flush all frames to the registered outputs.

Blocking.

Parameters
forceWait for all outputs to consume currently cached frames if false

◆ getAccumulatedNumBytes()

agx::UInt agxData::Track::getAccumulatedNumBytes ( ) const
Returns
The total number of bytes transferred through the track.

Definition at line 467 of file agxData/Track.h.

◆ getAccumulatedNumFrames()

agx::UInt agxData::Track::getAccumulatedNumFrames ( ) const
Returns
The total number of frames transferred through the track.

Definition at line 468 of file agxData/Track.h.

◆ getActiveTimeRangeEnd()

agx::Real agxData::Track::getActiveTimeRangeEnd ( ) const

◆ getActiveTimeRangeStart()

agx::Real agxData::Track::getActiveTimeRangeStart ( ) const

◆ getDataRate()

agx::Real agxData::Track::getDataRate ( ) const
Returns
Data rate statistics in KB/s

Definition at line 470 of file agxData/Track.h.

◆ getEnableLooping()

bool agxData::Track::getEnableLooping ( ) const
Returns
True if looping is enabled.

Definition at line 461 of file agxData/Track.h.

◆ getExceptionHandler()

const ExceptionHandler & agxData::Track::getExceptionHandler ( ) const
Returns
The current exception handler.

◆ getExpandFrames()

bool agxData::Track::getExpandFrames ( ) const
Returns
true if partial frames are expanded.

◆ getFrameStride()

agx::UInt agxData::Track::getFrameStride ( ) const
Returns
The frame stride.

Definition at line 463 of file agxData/Track.h.

◆ getInput() [1/2]

FrameReader * agxData::Track::getInput ( )
Returns
The input stream.

Definition at line 453 of file agxData/Track.h.

◆ getInput() [2/2]

const FrameReader * agxData::Track::getInput ( ) const

Definition at line 454 of file agxData/Track.h.

◆ getMaxNumBytes()

agx::UInt agxData::Track::getMaxNumBytes ( ) const
Returns
the maximum number of bytes in the frame cache.

◆ getNumCachedBytes()

agx::UInt agxData::Track::getNumCachedBytes ( ) const

◆ getNumCachedFrames()

agx::UInt agxData::Track::getNumCachedFrames ( ) const

◆ getNumQueuedBytes()

agx::UInt agxData::Track::getNumQueuedBytes ( ) const
Returns
the number of bytes used by active frames in the track queue/cache.

◆ getNumQueuedFrames()

agx::UInt agxData::Track::getNumQueuedFrames ( ) const
Returns
the number of active frames in the track queue/cache.

◆ getOutput() [1/2]

FrameWriter * agxData::Track::getOutput ( )
Returns
The output streams.

Definition at line 456 of file agxData/Track.h.

◆ getOutput() [2/2]

const FrameWriter * agxData::Track::getOutput ( ) const

Definition at line 457 of file agxData/Track.h.

◆ getRealMode()

agx::RealModeEnum agxData::Track::getRealMode ( ) const
Returns
The real mode.

◆ hasJumped()

bool agxData::Track::hasJumped ( ) const
Returns
True if the track has jumped since last frame was read from input

Definition at line 464 of file agxData/Track.h.

◆ isEOF()

bool agxData::Track::isEOF ( ) const
Returns
true if the last frame has been read by the output.

Definition at line 460 of file agxData/Track.h.

◆ isInputEOF()

bool agxData::Track::isInputEOF ( ) const
Returns
true if the input has signaled EOF.

Definition at line 459 of file agxData/Track.h.

◆ isQueueEmpty()

bool agxData::Track::isQueueEmpty ( ) const

Determine if the track is empty.

In other words, if the last frame has been read by the output. May give false negatives since the input may later realize that it doesn't have any more frames to add and at that time mark the track as empty.

Returns
true if the input has reached EOF and the queue is empty.

◆ isRunning()

bool agxData::Track::isRunning ( ) const
Returns
true if either input or output part is running

◆ jumpToFrame()

bool agxData::Track::jumpToFrame ( agx::UInt  frameIndex)

Select which frame that should be returned by the next call to 'readFrame'.

If the jump fails for a track that uses a input frame reader that supports jumping, ///

Returns
false if jumping is not allowed or if the jump failed.

◆ jumpToTime()

bool agxData::Track::jumpToTime ( agx::Real  time)

◆ loadCache()

void agxData::Track::loadCache ( Track *  other)

Load cached frames from another track.

◆ popFrame()

FrameRef agxData::Track::popFrame ( bool  blocking = true)

◆ pushFrame()

void agxData::Track::pushFrame ( Frame *  frame)

◆ setActiveTimeRangeEnd()

void agxData::Track::setActiveTimeRangeEnd ( agx::Real  time)

◆ setActiveTimeRangeStart()

void agxData::Track::setActiveTimeRangeStart ( agx::Real  time)

◆ setEnableLooping()

void agxData::Track::setEnableLooping ( bool  flag)

Set to true to enable looping from the input.

◆ setExceptionHandler()

void agxData::Track::setExceptionHandler ( const ExceptionHandler &  handler)

Specify an exception handler.

◆ setExpandFrames()

void agxData::Track::setExpandFrames ( bool  flag)

Set to true to expand all partial frames to keyframes.

◆ setFrameFrequency()

agx::Real agxData::Track::setFrameFrequency ( agx::Real  frequency)

Set the frame stride using a frequency, which is converted to a stride.

Returns
The actual frequency, an even multiple of the source frequency

◆ setFrameStride()

void agxData::Track::setFrameStride ( agx::UInt  stride)

Set frame stride.

Default is 1.

◆ setInput()

void agxData::Track::setInput ( FrameReader *  input)

Set the input stream.

◆ setMaxNumBytes()

void agxData::Track::setMaxNumBytes ( agx::UInt  numBytes)

Set the maximum number of bytes in the frame cache.

◆ setOutput()

void agxData::Track::setOutput ( FrameWriter *  output)

Specify the output stream.

◆ setRealMode()

void agxData::Track::setRealMode ( agx::RealModeEnum  mode)

Set the real mode.

◆ start()

void agxData::Track::start ( )

Start the track, producing frames from the input and consuming frames at the outputs.

Should be called once the input and all outputs are set up. Outputs added after the track is started are not guaranteed to receive all frames.

◆ stop()

void agxData::Track::stop ( )

Stop frame production.

Will block until both the input- and output thread have ceased to run.

Member Data Documentation

◆ popFrameEvent

FrameEvent agxData::Track::popFrameEvent

Definition at line 47 of file agxData/Track.h.

◆ pushFrameEvent

FrameEvent agxData::Track::pushFrameEvent

Definition at line 46 of file agxData/Track.h.


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