MayaFlux 0.1.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches
Capture.cpp
Go to the documentation of this file.
1#include "Capture.hpp"
2
3#include "BufferOperation.hpp"
4
5namespace MayaFlux::Kriya {
6
7BufferCapture::BufferCapture(std::shared_ptr<Buffers::AudioBuffer> buffer,
8 CaptureMode mode,
9 uint32_t cycle_count)
10 : m_buffer(std::move(buffer))
11 , m_mode(mode)
12 , m_cycle_count(cycle_count)
13 , m_window_size(0)
14 , m_circular_size(0)
15 , m_overlap_ratio(0.0F)
16{
17}
18
24
26{
27 m_cycle_count = count;
29 return *this;
30}
31
32BufferCapture& BufferCapture::until_condition(std::function<bool()> predicate)
33{
34 m_stop_condition = std::move(predicate);
36 return *this;
37}
38
39BufferCapture& BufferCapture::with_window(uint32_t window_size, float overlap_ratio)
40{
41 m_window_size = window_size;
42 m_overlap_ratio = overlap_ratio;
44 return *this;
45}
46
48{
49 m_circular_size = buffer_size;
51 return *this;
52}
53
55{
56 m_data_ready_callback = std::move(callback);
57 return *this;
58}
59
60BufferCapture& BufferCapture::on_cycle_complete(std::function<void(uint32_t)> callback)
61{
62 m_cycle_callback = std::move(callback);
63 return *this;
64}
65
66BufferCapture& BufferCapture::on_data_expired(std::function<void(const Kakshya::DataVariant&, uint32_t)> callback)
67{
68 m_data_expired_callback = std::move(callback);
69 return *this;
70}
71
72BufferCapture& BufferCapture::with_tag(const std::string& tag)
73{
74 m_tag = tag;
75 return *this;
76}
77
78BufferCapture& BufferCapture::with_metadata(const std::string& key, const std::string& value)
79{
80 m_metadata[key] = value;
81 return *this;
82}
83
84CaptureBuilder::CaptureBuilder(std::shared_ptr<Buffers::AudioBuffer> buffer)
85 : m_capture(std::move(buffer))
86{
87}
88
94
100
106
108{
109 m_capture.for_cycles(count);
110 return *this;
111}
112
113CaptureBuilder& CaptureBuilder::until_condition(std::function<bool()> predicate)
114{
115 m_capture.until_condition(std::move(predicate));
116 return *this;
117}
118
120{
121 m_capture.as_circular(buffer_size);
122 return *this;
123}
124
125CaptureBuilder& CaptureBuilder::with_window(uint32_t window_size, float overlap_ratio)
126{
127 m_capture.with_window(window_size, overlap_ratio);
128 return *this;
129}
130
132{
133 m_capture.on_data_ready(std::move(callback));
134 return *this;
135}
136
137CaptureBuilder& CaptureBuilder::on_cycle_complete(std::function<void(uint32_t)> callback)
138{
139 m_capture.on_cycle_complete(std::move(callback));
140 return *this;
141}
142
143CaptureBuilder& CaptureBuilder::on_data_expired(std::function<void(const Kakshya::DataVariant&, uint32_t)> callback)
144{
145 m_capture.on_data_expired(std::move(callback));
146 return *this;
147}
148
150{
151 m_capture.with_tag(tag);
152 return *this;
153}
154
155CaptureBuilder& CaptureBuilder::with_metadata(const std::string& key, const std::string& value)
156{
157 m_capture.with_metadata(key, value);
158 return *this;
159}
160
161CaptureBuilder::operator BufferOperation()
162{
163 return { BufferOperation::OpType::CAPTURE, std::move(m_capture) };
164}
165
166}
OperationFunction m_data_ready_callback
Definition Capture.hpp:187
BufferCapture & for_cycles(uint32_t count)
Set the number of times to execute this capture operation.
Definition Capture.cpp:25
BufferCapture & with_window(uint32_t window_size, float overlap_ratio=0.0F)
Configure windowed capture with overlap.
Definition Capture.cpp:39
std::function< void(const Kakshya::DataVariant &, uint32_t)> m_data_expired_callback
Definition Capture.hpp:189
BufferCapture & on_data_ready(OperationFunction callback)
Set callback for when captured data is ready.
Definition Capture.cpp:54
CaptureMode
Defines the data capture and retention strategy.
Definition Capture.hpp:58
@ 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
Definition Capture.hpp:186
BufferCapture & with_processing_control(ProcessingControl control)
Set processing control strategy.
Definition Capture.cpp:19
ProcessingControl
Controls how and when data processing occurs.
Definition Capture.hpp:70
BufferCapture & with_tag(const std::string &tag)
Assign a tag for identification and organization.
Definition Capture.cpp:72
BufferCapture & as_circular(uint32_t size)
Enable circular buffer mode with fixed size.
Definition Capture.cpp:47
std::unordered_map< std::string, std::string > m_metadata
Definition Capture.hpp:192
BufferCapture(std::shared_ptr< Buffers::AudioBuffer > buffer, CaptureMode mode=CaptureMode::TRANSIENT, uint32_t cycle_count=1)
Construct a BufferCapture with specified mode and parameters.
Definition Capture.cpp:7
BufferCapture & on_cycle_complete(std::function< void(uint32_t)> callback)
Set callback for when a capture cycle completes.
Definition Capture.cpp:60
BufferCapture & with_metadata(const std::string &key, const std::string &value)
Add metadata key-value pair.
Definition Capture.cpp:78
ProcessingControl m_processing_control
Definition Capture.hpp:180
std::function< void(uint32_t)> m_cycle_callback
Definition Capture.hpp:188
BufferCapture & until_condition(std::function< bool()> predicate)
Set a condition that stops capture when met.
Definition Capture.cpp:32
BufferCapture & on_data_expired(std::function< void(const Kakshya::DataVariant &, uint32_t)> callback)
Set callback for when captured data expires.
Definition Capture.cpp:66
Flexible data capture interface for buffer-based processing pipelines.
Definition Capture.hpp:52
@ 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.
Definition Capture.cpp:131
CaptureBuilder & auto_processing()
Set processing control to AUTOMATIC mode.
Definition Capture.cpp:101
CaptureBuilder & on_data_expired(std::function< void(const Kakshya::DataVariant &, uint32_t)> callback)
Set data expiration callback.
Definition Capture.cpp:143
CaptureBuilder & on_capture_processing()
Set processing control to ON_CAPTURE mode.
Definition Capture.cpp:89
CaptureBuilder & with_metadata(const std::string &key, const std::string &value)
Add metadata key-value pair.
Definition Capture.cpp:155
CaptureBuilder & until_condition(std::function< bool()> predicate)
Set stop condition (enables TRIGGERED mode).
Definition Capture.cpp:113
CaptureBuilder & for_cycles(uint32_t count)
Set number of cycles to capture (enables ACCUMULATE mode).
Definition Capture.cpp:107
CaptureBuilder & with_tag(const std::string &tag)
Assign identification tag.
Definition Capture.cpp:149
CaptureBuilder & on_cycle_complete(std::function< void(uint32_t)> callback)
Set cycle completion callback.
Definition Capture.cpp:137
BufferCapture m_capture
Internal BufferCapture being configured.
Definition Capture.hpp:335
CaptureBuilder & manual_processing()
Set processing control to MANUAL mode.
Definition Capture.cpp:95
CaptureBuilder & with_window(uint32_t window_size, float overlap_ratio=0.0F)
Configure windowed capture (enables WINDOWED mode).
Definition Capture.cpp:125
CaptureBuilder(std::shared_ptr< Buffers::AudioBuffer > buffer)
Construct builder with target AudioBuffer.
Definition Capture.cpp:84
CaptureBuilder & as_circular(uint32_t buffer_size)
Enable circular buffer mode with specified size.
Definition Capture.cpp:119
Fluent builder interface for constructing BufferCapture configurations.
Definition Capture.hpp:231
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.
Definition NDData.hpp:73
std::function< void(Kakshya::DataVariant &, uint32_t)> OperationFunction
Definition Capture.hpp:15