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/include/stream_buffer.hpp | |
| parent | f35bb64c2b8dbb72fd15f1880e4d01d263660910 (diff) | |
| download | tangara-fw-01be69eca1fa89c047fc29f5cb0ea8ba0898dad1.tar.gz | |
better handling of chunk buffer
Diffstat (limited to 'src/audio/include/stream_buffer.hpp')
| -rw-r--r-- | src/audio/include/stream_buffer.hpp | 37 |
1 files changed, 37 insertions, 0 deletions
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 <cstddef> +#include <cstdint> + +#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<std::byte> { return input_chunk_; } + auto WriteBuffer() -> cpp::span<std::byte> { 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<std::byte> input_chunk_; + + std::byte* raw_output_chunk_; + cpp::span<std::byte> output_chunk_; +}; + +} // namespace audio |
