MayaFlux 1.0.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"
6
7namespace MayaFlux::Kriya {
8
9BufferCapture::BufferCapture(std::shared_ptr<Buffers::AudioBuffer> buffer,
11 uint32_t cycle_count)
12 : m_audio_buffer(std::move(buffer))
13 , m_mode(mode)
14 , m_cycle_count(cycle_count)
15{
16}
17
18BufferCapture::BufferCapture(std::shared_ptr<Buffers::VKBuffer> buffer,
20 uint32_t cycle_count)
21 : m_graphics_buffer(std::move(buffer))
22 , m_mode(mode)
23 , m_cycle_count(cycle_count)
24{
25}
26
27std::shared_ptr<Buffers::Buffer> BufferCapture::get_source_buffer() const
28{
29 if (m_audio_buffer) {
30 return m_audio_buffer;
31 }
33 return m_graphics_buffer;
34 }
35 return nullptr;
36}
37
43
50
51BufferCapture& BufferCapture::until_condition(std::function<bool()> predicate)
52{
53 m_stop_condition = std::move(predicate);
55 return *this;
56}
57
58BufferCapture& BufferCapture::with_window(uint32_t window_size, float overlap_ratio)
59{
60 m_window_size = window_size;
61 m_overlap_ratio = overlap_ratio;
63 return *this;
64}
65
67{
68 m_circular_size = buffer_size;
70 return *this;
71}
72
78
80{
81 m_cycle_callback = std::move(callback);
82 return *this;
83}
84
86{
88 return *this;
89}
90
91BufferCapture& BufferCapture::with_tag(const std::string& tag)
92{
93 m_tag = tag;
94 return *this;
95}
96
97BufferCapture& BufferCapture::with_metadata(const std::string& key, const std::string& value)
98{
99 m_metadata[key] = value;
100 return *this;
101}
102
103CaptureBuilder::CaptureBuilder(std::shared_ptr<Buffers::AudioBuffer> buffer)
104 : m_capture(std::move(buffer))
105{
106}
107
108CaptureBuilder::CaptureBuilder(std::shared_ptr<Buffers::VKBuffer> buffer)
109 : m_capture(std::move(buffer))
110{
111}
112
114 : m_capture()
115{
116}
117
123
129
135
137{
139 return *this;
140}
141
142CaptureBuilder& CaptureBuilder::until_condition(std::function<bool()> predicate)
143{
144 m_capture.until_condition(std::move(predicate));
145 return *this;
146}
147
149{
150 m_capture.as_circular(buffer_size);
151 return *this;
152}
153
154CaptureBuilder& CaptureBuilder::with_window(uint32_t window_size, float overlap_ratio)
155{
156 m_capture.with_window(window_size, overlap_ratio);
157 return *this;
158}
159
165
167{
169 return *this;
170}
171
173{
175 return *this;
176}
177
179{
180 m_capture.with_tag(tag);
181 return *this;
182}
183
184CaptureBuilder& CaptureBuilder::with_metadata(const std::string& key, const std::string& value)
185{
187 return *this;
188}
189
190CaptureBuilder::operator BufferOperation()
191{
192 return { BufferOperation::OpType::CAPTURE, std::move(m_capture) };
193}
194
195}
std::shared_ptr< NetworkGeometryBuffer > buffer
PickCallback callback
Definition Picker.cpp:22
uint32_t mode
glm::vec3 value
size_t count
OperationFunction m_data_ready_callback
Definition Capture.hpp:205
BufferCapture & for_cycles(uint32_t count)
Set the number of times to execute this capture operation.
Definition Capture.cpp:44
BufferCapture & with_window(uint32_t window_size, float overlap_ratio=0.0F)
Configure windowed capture with overlap.
Definition Capture.cpp:58
std::function< void(const Kakshya::DataVariant &, uint32_t)> m_data_expired_callback
Definition Capture.hpp:207
std::shared_ptr< Buffers::VKBuffer > m_graphics_buffer
Definition Capture.hpp:196
BufferCapture & on_data_ready(OperationFunction callback)
Set callback for when captured data is ready.
Definition Capture.cpp:73
CaptureMode
Defines the data capture and retention strategy.
Definition Capture.hpp:61
@ 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:204
BufferCapture & with_processing_control(ProcessingControl control)
Set processing control strategy.
Definition Capture.cpp:38
ProcessingControl
Controls how and when data processing occurs.
Definition Capture.hpp:73
std::shared_ptr< Buffers::Buffer > get_source_buffer() const
Return the configured source buffer.
Definition Capture.cpp:27
std::shared_ptr< Buffers::AudioBuffer > m_audio_buffer
Definition Capture.hpp:195
BufferCapture & with_tag(const std::string &tag)
Assign a tag for identification and organization.
Definition Capture.cpp:91
BufferCapture & as_circular(uint32_t size)
Enable circular buffer mode with fixed size.
Definition Capture.cpp:66
std::unordered_map< std::string, std::string > m_metadata
Definition Capture.hpp:210
BufferCapture & on_cycle_complete(std::function< void(uint32_t)> callback)
Set callback for when a capture cycle completes.
Definition Capture.cpp:79
BufferCapture & with_metadata(const std::string &key, const std::string &value)
Add metadata key-value pair.
Definition Capture.cpp:97
ProcessingControl m_processing_control
Definition Capture.hpp:198
std::function< void(uint32_t)> m_cycle_callback
Definition Capture.hpp:206
BufferCapture & until_condition(std::function< bool()> predicate)
Set a condition that stops capture when met.
Definition Capture.cpp:51
BufferCapture & on_data_expired(std::function< void(const Kakshya::DataVariant &, uint32_t)> callback)
Set callback for when captured data expires.
Definition Capture.cpp:85
Flexible data capture interface for buffer-based processing pipelines.
Definition Capture.hpp:55
@ 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:160
CaptureBuilder & auto_processing()
Set processing control to AUTOMATIC mode.
Definition Capture.cpp:130
CaptureBuilder & on_data_expired(std::function< void(const Kakshya::DataVariant &, uint32_t)> callback)
Set data expiration callback.
Definition Capture.cpp:172
CaptureBuilder & on_capture_processing()
Set processing control to ON_CAPTURE mode.
Definition Capture.cpp:118
CaptureBuilder & with_metadata(const std::string &key, const std::string &value)
Add metadata key-value pair.
Definition Capture.cpp:184
CaptureBuilder & until_condition(std::function< bool()> predicate)
Set stop condition (enables TRIGGERED mode).
Definition Capture.cpp:142
CaptureBuilder & for_cycles(uint32_t count)
Set number of cycles to capture (enables ACCUMULATE mode).
Definition Capture.cpp:136
CaptureBuilder & with_tag(const std::string &tag)
Assign identification tag.
Definition Capture.cpp:178
CaptureBuilder & on_cycle_complete(std::function< void(uint32_t)> callback)
Set cycle completion callback.
Definition Capture.cpp:166
BufferCapture m_capture
Internal BufferCapture being configured.
Definition Capture.hpp:355
CaptureBuilder & manual_processing()
Set processing control to MANUAL mode.
Definition Capture.cpp:124
CaptureBuilder & with_window(uint32_t window_size, float overlap_ratio=0.0F)
Configure windowed capture (enables WINDOWED mode).
Definition Capture.cpp:154
CaptureBuilder(std::shared_ptr< Buffers::AudioBuffer > buffer)
Construct builder with a buffer source.
Definition Capture.cpp:103
CaptureBuilder & as_circular(uint32_t buffer_size)
Enable circular buffer mode with specified size.
Definition Capture.cpp:148
Fluent builder interface for constructing BufferCapture configurations.
Definition Capture.hpp:249
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:70
std::function< void(Kakshya::DataVariant &, uint32_t)> OperationFunction
Definition Capture.hpp:17