From 01be69eca1fa89c047fc29f5cb0ea8ba0898dad1 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Wed, 7 Dec 2022 15:36:47 +1100 Subject: better handling of chunk buffer --- src/audio/stream_buffer.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 src/audio/stream_buffer.cpp (limited to 'src/audio/stream_buffer.cpp') 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( + heap_caps_malloc(buffer_size, MALLOC_CAP_SPIRAM))), + handle_( + xMessageBufferCreateStatic(buffer_size, + reinterpret_cast(raw_memory_), + &metadata_)), + raw_input_chunk_(static_cast( + heap_caps_malloc(chunk_size * 1.5, MALLOC_CAP_SPIRAM))), + input_chunk_(raw_input_chunk_, chunk_size * 1.5), + raw_output_chunk_(static_cast( + 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 -- cgit v1.2.3