MayaFlux 0.5.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches
MayaFlux::Buffers::ImageCVProcessor< T > Class Template Reference

BufferProcessor executing a Kinesis::Vision pipeline on a GpuImageSource buffer. More...

#include <ImageCVProcessor.hpp>

+ Inheritance diagram for MayaFlux::Buffers::ImageCVProcessor< T >:
+ Collaboration diagram for MayaFlux::Buffers::ImageCVProcessor< T >:

Public Member Functions

uint32_t get_eval_rate () const
 Get the currently achieved evaluation rate in frames per second.
 
const Kinesis::Vision::VisionResultget_result () const
 The result of the last successful processing_function call.
 
std::shared_ptr< Vruta::BroadcastSource< Kinesis::Vision::VisionResult > > get_result_source ()
 Shared BroadcastSource signalled with each VisionResult after a successful processing_function call.
 
 ImageCVProcessor (Kinesis::Vision::VisionSequence sequence, bool force_cpu=false)
 Construct with the vision pipeline to execute each processing_function call.
 
void on_attach (const std::shared_ptr< Buffer > &buffer) override
 Validate the buffer type and reset executor state.
 
void on_detach (const std::shared_ptr< Buffer > &) override
 Clear state and reset executor.
 
void processing_function (const std::shared_ptr< Buffer > &) override
 Download the current GPU image, run the VisionSequence, store the result.
 
void set_eval_rate (uint32_t fps)
 Set how often this processor actually evaluates, relative to the engine's preferred frame rate.
 
void set_sequence (Kinesis::Vision::VisionSequence sequence)
 Replace the pipeline and reset inter-frame executor state.
 
 ~ImageCVProcessor () override=default
 
- Public Member Functions inherited from MayaFlux::Buffers::BufferProcessor
virtual ProcessingToken get_processing_token () const
 Gets the current processing token for this buffer.
 
virtual bool is_compatible_with (const std::shared_ptr< Buffer > &) const
 Checks if this processor can handle the specified buffer type.
 
void process (const std::shared_ptr< Buffer > &buffer)
 Applies a computational transformation to the data in the provided buffer.
 
virtual void set_processing_token (ProcessingToken token)
 Gets the preferred processing backend for this processor.
 
virtual ~BufferProcessor ()=default
 Virtual destructor for proper cleanup of derived classes.
 

Private Attributes

std::weak_ptr< T > m_buffer
 
Kinesis::Vision::VisionExecutor m_cpu_executor
 
uint32_t m_eval_delta { 1 }
 
std::unique_ptr< Yantra::VisionGpuExecutorm_executor
 
std::vector< float > m_float_work
 
bool m_force_cpu {}
 
std::shared_ptr< VKBufferm_gpu_staging
 
std::atomic< bool > m_is_processing { false }
 
std::vector< uint8_t > m_raw_staging
 
Kinesis::Vision::VisionResult m_result
 
std::shared_ptr< Vruta::BroadcastSource< Kinesis::Vision::VisionResult > > m_result_source
 
Kinesis::Vision::VisionSequence m_sequence
 
uint32_t m_skipped_frames { 0 }
 

Additional Inherited Members

- Protected Attributes inherited from MayaFlux::Buffers::BufferProcessor
ProcessingToken m_processing_token { ProcessingToken::AUDIO_BACKEND }
 

Detailed Description

template<GpuImageSource T>
class MayaFlux::Buffers::ImageCVProcessor< T >

BufferProcessor executing a Kinesis::Vision pipeline on a GpuImageSource buffer.

Renamed from ImageCVProcessor. ImageCVProcessor makes the domain (computer vision on image data) explicit and avoids collision with VisionProcessor (the Kakshya DataProcessor over pixel containers).

m_gpu_staging is a persistent host-visible VKBuffer allocated once in on_attach, sized to the image footprint. Passed to download_and_normalise on every call so TextureLoom::download_data uses the fenced path rather than waitIdle, avoiding graphics queue stalls on each frame download.

Template Parameters
TA VKBuffer subclass satisfying GpuImageSource.

Definition at line 31 of file ImageCVProcessor.hpp.


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