diff options
Diffstat (limited to 'src/audio/include')
| -rw-r--r-- | src/audio/include/audio_sink.hpp | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/src/audio/include/audio_sink.hpp b/src/audio/include/audio_sink.hpp index a11a9c92..eaed04ec 100644 --- a/src/audio/include/audio_sink.hpp +++ b/src/audio/include/audio_sink.hpp @@ -11,22 +11,26 @@ class IAudioSink { private: // TODO: tune. at least about 12KiB seems right for mp3 static const std::size_t kDrainBufferSize = 24 * 1024; - uint8_t *buffer_; - StaticStreamBuffer_t *metadata_; - StreamBufferHandle_t *handle_; + uint8_t* buffer_; + StaticStreamBuffer_t* metadata_; + StreamBufferHandle_t handle_; public: - IAudioSink() : - buffer_(reinterpret_cast<uint8_t*>(heap_caps_malloc(kDrainBufferSize, MALLOC_CAP_DMA))), - metadata_(reinterpret_cast<StaticStreamBuffer_t*>(heap_caps_malloc(sizeof(StaticStreamBuffer_t), MALLOC_CAP_DMA))), - handle_(reinterpret_cast<StreamBufferHandle_t*>(heap_caps_malloc(sizeof(StreamBufferHandle_t), MALLOC_CAP_DMA))) { - *handle_ = xStreamBufferCreateStatic(kDrainBufferSize, 1, buffer_, metadata_); - } + IAudioSink() + : buffer_(reinterpret_cast<uint8_t*>( + heap_caps_malloc(kDrainBufferSize, + MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT))), + metadata_(reinterpret_cast<StaticStreamBuffer_t*>( + heap_caps_malloc(sizeof(StaticStreamBuffer_t), + MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT))), + handle_(xStreamBufferCreateStatic(kDrainBufferSize, + 1, + buffer_, + metadata_)) {} virtual ~IAudioSink() { - vStreamBufferDelete(*handle_); + vStreamBufferDelete(handle_); free(buffer_); - free(handle_); free(metadata_); } @@ -34,7 +38,7 @@ class IAudioSink { virtual auto Send(const cpp::span<std::byte>& data) -> void = 0; virtual auto Log() -> void {} - auto buffer() -> StreamBufferHandle_t* { return handle_; } + auto buffer() -> StreamBufferHandle_t { return handle_; } }; } // namespace audio |
