10 : m_buffer(
std::move(buffer))
12 , m_cycle_count(cycle_count)
15 , m_overlap_ratio(0.0F)
85 : m_capture(
std::move(buffer))
OperationFunction m_data_ready_callback
BufferCapture & for_cycles(uint32_t count)
Set the number of times to execute this capture operation.
BufferCapture & with_window(uint32_t window_size, float overlap_ratio=0.0F)
Configure windowed capture with overlap.
std::function< void(const Kakshya::DataVariant &, uint32_t)> m_data_expired_callback
BufferCapture & on_data_ready(OperationFunction callback)
Set callback for when captured data is ready.
CaptureMode
Defines the data capture and retention strategy.
@ TRANSIENT
Single cycle capture (default) - data expires after 1 cycle.
@ CIRCULAR
Circular buffer with overwrite.
@ ACCUMULATE
Accumulate over multiple cycles in container.
@ WINDOWED
Rolling window capture with overlap.
@ TRIGGERED
Capture only when condition met.
std::function< bool()> m_stop_condition
BufferCapture & with_processing_control(ProcessingControl control)
Set processing control strategy.
ProcessingControl
Controls how and when data processing occurs.
BufferCapture & with_tag(const std::string &tag)
Assign a tag for identification and organization.
BufferCapture & as_circular(uint32_t size)
Enable circular buffer mode with fixed size.
std::unordered_map< std::string, std::string > m_metadata
BufferCapture(std::shared_ptr< Buffers::AudioBuffer > buffer, CaptureMode mode=CaptureMode::TRANSIENT, uint32_t cycle_count=1)
Construct a BufferCapture with specified mode and parameters.
BufferCapture & on_cycle_complete(std::function< void(uint32_t)> callback)
Set callback for when a capture cycle completes.
BufferCapture & with_metadata(const std::string &key, const std::string &value)
Add metadata key-value pair.
ProcessingControl m_processing_control
std::function< void(uint32_t)> m_cycle_callback
BufferCapture & until_condition(std::function< bool()> predicate)
Set a condition that stops capture when met.
BufferCapture & on_data_expired(std::function< void(const Kakshya::DataVariant &, uint32_t)> callback)
Set callback for when captured data expires.
Flexible data capture interface for buffer-based processing pipelines.
@ CAPTURE
Capture data from source buffer using BufferCapture strategy.
Fundamental unit of operation in buffer processing pipelines.
CaptureBuilder & on_data_ready(OperationFunction callback)
Set data ready callback.
CaptureBuilder & auto_processing()
Set processing control to AUTOMATIC mode.
CaptureBuilder & on_data_expired(std::function< void(const Kakshya::DataVariant &, uint32_t)> callback)
Set data expiration callback.
CaptureBuilder & on_capture_processing()
Set processing control to ON_CAPTURE mode.
CaptureBuilder & with_metadata(const std::string &key, const std::string &value)
Add metadata key-value pair.
CaptureBuilder & until_condition(std::function< bool()> predicate)
Set stop condition (enables TRIGGERED mode).
CaptureBuilder & for_cycles(uint32_t count)
Set number of cycles to capture (enables ACCUMULATE mode).
CaptureBuilder & with_tag(const std::string &tag)
Assign identification tag.
CaptureBuilder & on_cycle_complete(std::function< void(uint32_t)> callback)
Set cycle completion callback.
BufferCapture m_capture
Internal BufferCapture being configured.
CaptureBuilder & manual_processing()
Set processing control to MANUAL mode.
CaptureBuilder & with_window(uint32_t window_size, float overlap_ratio=0.0F)
Configure windowed capture (enables WINDOWED mode).
CaptureBuilder(std::shared_ptr< Buffers::AudioBuffer > buffer)
Construct builder with target AudioBuffer.
CaptureBuilder & as_circular(uint32_t buffer_size)
Enable circular buffer mode with specified size.
Fluent builder interface for constructing BufferCapture configurations.
std::variant< std::vector< double >, std::vector< float >, std::vector< uint8_t >, std::vector< uint16_t >, std::vector< uint32_t >, std::vector< std::complex< float > >, std::vector< std::complex< double > >, std::vector< glm::vec2 >, std::vector< glm::vec3 >, std::vector< glm::vec4 >, std::vector< glm::mat4 > > DataVariant
Multi-type data storage for different precision needs.
std::function< void(Kakshya::DataVariant &, uint32_t)> OperationFunction