diff options
| author | jacqueline <me@jacqueline.id.au> | 2022-12-07 15:36:47 +1100 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2022-12-07 15:36:47 +1100 |
| commit | 01be69eca1fa89c047fc29f5cb0ea8ba0898dad1 (patch) | |
| tree | d40f749b3ebf6327f13d51d585f7c315a6d864c3 /src/audio/stream_buffer.cpp | |
| parent | f35bb64c2b8dbb72fd15f1880e4d01d263660910 (diff) | |
| download | tangara-fw-01be69eca1fa89c047fc29f5cb0ea8ba0898dad1.tar.gz | |
better handling of chunk buffer
Diffstat (limited to 'src/audio/stream_buffer.cpp')
| -rw-r--r-- | src/audio/stream_buffer.cpp | 26 |
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 |
