MayaFlux 0.1.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches
MayaFlux::Kriya::BufferCapture Class Reference

Flexible data capture interface for buffer-based processing pipelines. More...

#include <Capture.hpp>

+ Collaboration diagram for MayaFlux::Kriya::BufferCapture:

Public Types

enum class  CaptureMode : uint8_t {
  TRANSIENT , ACCUMULATE , TRIGGERED , WINDOWED ,
  CIRCULAR
}
 Defines the data capture and retention strategy. More...
 
enum class  ProcessingControl : uint8_t { AUTOMATIC , ON_CAPTURE , MANUAL }
 Controls how and when data processing occurs. More...
 

Public Member Functions

 BufferCapture (std::shared_ptr< Buffers::AudioBuffer > buffer, CaptureMode mode=CaptureMode::TRANSIENT, uint32_t cycle_count=1)
 Construct a BufferCapture with specified mode and parameters.
 
BufferCapturewith_processing_control (ProcessingControl control)
 Set processing control strategy.
 
BufferCapturefor_cycles (uint32_t count)
 Set the number of times to execute this capture operation.
 
BufferCaptureuntil_condition (std::function< bool()> predicate)
 Set a condition that stops capture when met.
 
BufferCapturewith_window (uint32_t window_size, float overlap_ratio=0.0F)
 Configure windowed capture with overlap.
 
BufferCaptureas_circular (uint32_t size)
 Enable circular buffer mode with fixed size.
 
BufferCaptureon_data_ready (OperationFunction callback)
 Set callback for when captured data is ready.
 
BufferCaptureon_cycle_complete (std::function< void(uint32_t)> callback)
 Set callback for when a capture cycle completes.
 
BufferCaptureon_data_expired (std::function< void(const Kakshya::DataVariant &, uint32_t)> callback)
 Set callback for when captured data expires.
 
BufferCapturewith_tag (const std::string &tag)
 Assign a tag for identification and organization.
 
BufferCapturewith_metadata (const std::string &key, const std::string &value)
 Add metadata key-value pair.
 
std::shared_ptr< Buffers::AudioBufferget_buffer () const
 
CaptureMode get_mode () const
 
ProcessingControl get_processing_control () const
 
uint32_t get_cycle_count () const
 
const std::string & get_tag () const
 
uint32_t get_circular_size () const
 
uint32_t get_window_size () const
 
float get_overlap_ratio () const
 
void set_processing_control (ProcessingControl control)
 

Private Attributes

std::shared_ptr< Buffers::AudioBufferm_buffer
 
CaptureMode m_mode
 
ProcessingControl m_processing_control = ProcessingControl::AUTOMATIC
 
uint32_t m_cycle_count
 
uint32_t m_window_size
 
uint32_t m_circular_size
 
float m_overlap_ratio
 
std::function< bool()> m_stop_condition
 
OperationFunction m_data_ready_callback
 
std::function< void(uint32_t)> m_cycle_callback
 
std::function< void(const Kakshya::DataVariant &, uint32_t)> m_data_expired_callback
 
std::string m_tag
 
std::unordered_map< std::string, std::string > m_metadata
 

Friends

class BufferOperation
 
class BufferPipeline
 

Detailed Description

Flexible data capture interface for buffer-based processing pipelines.

BufferCapture provides sophisticated data capture capabilities within the Kriya processing system, enabling various capture modes and lifecycle management for buffer data. It supports transient, accumulative, windowed, and circular capture patterns for different real-time processing scenarios.

Capture Modes:

  • TRANSIENT: Single-cycle capture with automatic expiration (default)
  • ACCUMULATE: Multi-cycle accumulation in persistent container
  • TRIGGERED: Conditional capture based on predicates
  • WINDOWED: Rolling window capture with configurable overlap
  • CIRCULAR: Fixed-size circular buffer with overwrite behavior

Key Features:

  • Multiple capture strategies for different use cases
  • Callback system for data lifecycle events
  • Metadata and tagging support for organization
  • Integration with BufferPipeline and BufferOperation
  • Sample-accurate timing and synchronization

Use Cases:

  • Real-time audio analysis and feature extraction
  • Streaming data collection for machine learning
  • Circular delay lines and feedback systems
  • Windowed processing for spectral analysis
  • Event-driven data capture and recording
See also
BufferOperation For pipeline integration
BufferPipeline For execution context
CaptureBuilder For fluent construction

Definition at line 52 of file Capture.hpp.


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