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/include/stream_buffer.hpp | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/audio/include/stream_buffer.hpp (limited to 'src/audio/include/stream_buffer.hpp') diff --git a/src/audio/include/stream_buffer.hpp b/src/audio/include/stream_buffer.hpp new file mode 100644 index 00000000..cfb4bf9d --- /dev/null +++ b/src/audio/include/stream_buffer.hpp @@ -0,0 +1,37 @@ +#pragma once + +#include +#include + +#include "freertos/FreeRTOS.h" + +#include "freertos/message_buffer.h" +#include "span.hpp" + +namespace audio { + +class StreamBuffer { + public: + explicit StreamBuffer(std::size_t chunk_size, std::size_t buffer_size); + ~StreamBuffer(); + + auto Handle() -> MessageBufferHandle_t* { return &handle_; } + auto ReadBuffer() -> cpp::span { return input_chunk_; } + auto WriteBuffer() -> cpp::span { return output_chunk_; } + + StreamBuffer(const StreamBuffer&) = delete; + StreamBuffer& operator=(const StreamBuffer&) = delete; + + private: + std::byte* raw_memory_; + StaticMessageBuffer_t metadata_; + MessageBufferHandle_t handle_; + + std::byte* raw_input_chunk_; + cpp::span input_chunk_; + + std::byte* raw_output_chunk_; + cpp::span output_chunk_; +}; + +} // namespace audio -- cgit v1.2.3