From 941bafca17b13547a88668b787ce4c8e064ef7ff Mon Sep 17 00:00:00 2001 From: jacqueline Date: Tue, 21 Feb 2023 13:16:58 +1100 Subject: Add a memory arena for the audio pipeline --- src/audio/include/audio_decoder.hpp | 1 + src/audio/include/fatfs_audio_input.hpp | 2 ++ src/audio/include/stream_event.hpp | 10 ++++------ 3 files changed, 7 insertions(+), 6 deletions(-) (limited to 'src/audio/include') diff --git a/src/audio/include/audio_decoder.hpp b/src/audio/include/audio_decoder.hpp index aa83825f..9cc40162 100644 --- a/src/audio/include/audio_decoder.hpp +++ b/src/audio/include/audio_decoder.hpp @@ -44,6 +44,7 @@ class AudioDecoder : public IAudioElement { AudioDecoder& operator=(const AudioDecoder&) = delete; private: + memory::Arena arena_; std::unique_ptr current_codec_; std::optional stream_info_; std::optional chunk_reader_; diff --git a/src/audio/include/fatfs_audio_input.hpp b/src/audio/include/fatfs_audio_input.hpp index 883441c2..06b0b7ea 100644 --- a/src/audio/include/fatfs_audio_input.hpp +++ b/src/audio/include/fatfs_audio_input.hpp @@ -4,6 +4,7 @@ #include #include +#include "arena.hpp" #include "chunk.hpp" #include "freertos/FreeRTOS.h" @@ -35,6 +36,7 @@ class FatfsAudioInput : public IAudioElement { FatfsAudioInput& operator=(const FatfsAudioInput&) = delete; private: + memory::Arena arena_; std::shared_ptr storage_; FIL current_file_; diff --git a/src/audio/include/stream_event.hpp b/src/audio/include/stream_event.hpp index d42de411..6d270e9d 100644 --- a/src/audio/include/stream_event.hpp +++ b/src/audio/include/stream_event.hpp @@ -2,6 +2,7 @@ #include +#include "arena.hpp" #include "freertos/FreeRTOS.h" #include "freertos/queue.h" @@ -13,7 +14,7 @@ namespace audio { struct StreamEvent { static auto CreateStreamInfo(QueueHandle_t source, const StreamInfo& payload) -> StreamEvent*; - static auto CreateChunkData(QueueHandle_t source, std::size_t chunk_size) + static auto CreateArenaChunk(QueueHandle_t source, memory::ArenaPtr ptr) -> StreamEvent*; static auto CreateChunkNotification(QueueHandle_t source) -> StreamEvent*; static auto CreateEndOfStream(QueueHandle_t source) -> StreamEvent*; @@ -28,7 +29,7 @@ struct StreamEvent { enum { UNINITIALISED, STREAM_INFO, - CHUNK_DATA, + ARENA_CHUNK, CHUNK_NOTIFICATION, END_OF_STREAM, LOG_STATUS, @@ -37,10 +38,7 @@ struct StreamEvent { union { StreamInfo* stream_info; - struct { - std::byte* raw_bytes; - cpp::span bytes; - } chunk_data; + memory::ArenaPtr arena_chunk; // FIXME: It would be nice to also support a pointer to himem data here, to // save a little ordinary heap space. -- cgit v1.2.3