diff options
| author | jacqueline <me@jacqueline.id.au> | 2023-01-27 13:28:22 +1100 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2023-01-27 13:28:22 +1100 |
| commit | 2cc0a38a1ac7fc54d7333dafa8b99479a7f5dc86 (patch) | |
| tree | 491921af1c26c2712d91030068ac29c4cb2d6d51 /src/audio/stream_event.cpp | |
| parent | 7b60f5f864997e94895305f23ed2716ad7d9acaa (diff) | |
| download | tangara-fw-2cc0a38a1ac7fc54d7333dafa8b99479a7f5dc86.tar.gz | |
pipeline memory management fixes + logging
Diffstat (limited to 'src/audio/stream_event.cpp')
| -rw-r--r-- | src/audio/stream_event.cpp | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/src/audio/stream_event.cpp b/src/audio/stream_event.cpp index 0a116297..e3228680 100644 --- a/src/audio/stream_event.cpp +++ b/src/audio/stream_event.cpp @@ -1,37 +1,37 @@ #include "stream_event.hpp" #include <cstddef> #include <memory> +#include "stream_info.hpp" namespace audio { auto StreamEvent::CreateStreamInfo(QueueHandle_t source, - std::unique_ptr<StreamInfo> payload) - -> std::unique_ptr<StreamEvent> { - auto event = std::make_unique<StreamEvent>(); + const StreamInfo& payload) -> StreamEvent* { + auto event = new StreamEvent; event->tag = StreamEvent::STREAM_INFO; event->source = source; - event->stream_info = std::move(payload); + event->stream_info = new StreamInfo(payload); return event; } auto StreamEvent::CreateChunkData(QueueHandle_t source, std::size_t chunk_size) - -> std::unique_ptr<StreamEvent> { - auto event = std::make_unique<StreamEvent>(); + -> StreamEvent* { + auto event = new StreamEvent; event->tag = StreamEvent::CHUNK_DATA; event->source = source; auto raw_bytes = static_cast<std::byte*>(heap_caps_malloc(chunk_size, MALLOC_CAP_SPIRAM)); - event->chunk_data.raw_bytes = std::make_unique<std::byte*>(raw_bytes); + event->chunk_data.raw_bytes = raw_bytes; event->chunk_data.bytes = cpp::span<std::byte>(raw_bytes, chunk_size); return event; } auto StreamEvent::CreateChunkNotification(QueueHandle_t source) - -> std::unique_ptr<StreamEvent> { - auto event = std::make_unique<StreamEvent>(); + -> StreamEvent* { + auto event = new StreamEvent; event->tag = StreamEvent::CHUNK_NOTIFICATION; event->source = source; return event; @@ -44,10 +44,10 @@ StreamEvent::~StreamEvent() { case UNINITIALISED: break; case STREAM_INFO: - stream_info.reset(); + delete stream_info; break; case CHUNK_DATA: - chunk_data.raw_bytes.reset(); + free(chunk_data.raw_bytes); break; case CHUNK_NOTIFICATION: break; @@ -61,10 +61,12 @@ StreamEvent::StreamEvent(StreamEvent&& other) { case UNINITIALISED: break; case STREAM_INFO: - stream_info = std::move(other.stream_info); + stream_info = other.stream_info; + other.stream_info = nullptr; break; case CHUNK_DATA: - chunk_data = std::move(other.chunk_data); + chunk_data = other.chunk_data; + other.chunk_data = {}; break; case CHUNK_NOTIFICATION: break; |
