summaryrefslogtreecommitdiff
path: root/src/audio/stream_buffer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/audio/stream_buffer.cpp')
-rw-r--r--src/audio/stream_buffer.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/audio/stream_buffer.cpp b/src/audio/stream_buffer.cpp
new file mode 100644
index 00000000..740bea7f
--- /dev/null
+++ b/src/audio/stream_buffer.cpp
@@ -0,0 +1,26 @@
+#include "stream_buffer.hpp"
+
+namespace audio {
+
+StreamBuffer::StreamBuffer(std::size_t chunk_size, std::size_t buffer_size)
+ : raw_memory_(static_cast<std::byte*>(
+ heap_caps_malloc(buffer_size, MALLOC_CAP_SPIRAM))),
+ handle_(
+ xMessageBufferCreateStatic(buffer_size,
+ reinterpret_cast<uint8_t*>(raw_memory_),
+ &metadata_)),
+ raw_input_chunk_(static_cast<std::byte*>(
+ heap_caps_malloc(chunk_size * 1.5, MALLOC_CAP_SPIRAM))),
+ input_chunk_(raw_input_chunk_, chunk_size * 1.5),
+ raw_output_chunk_(static_cast<std::byte*>(
+ heap_caps_malloc(chunk_size, MALLOC_CAP_SPIRAM))),
+ output_chunk_(raw_output_chunk_, chunk_size) {}
+
+StreamBuffer::~StreamBuffer() {
+ vMessageBufferDelete(handle_);
+ free(raw_memory_);
+ free(raw_input_chunk_);
+ free(raw_output_chunk_);
+}
+
+} // namespace audio