diff options
| author | jacqueline <me@jacqueline.id.au> | 2023-04-20 11:25:43 +1000 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2023-04-20 11:25:43 +1000 |
| commit | 731b2cfa77a063e98da8fa26acc1e7ed1de8c169 (patch) | |
| tree | 13a8cca13f2e6ea665a87cc0f1c036de7c326d60 /src/audio/include | |
| parent | 4c77950e702a329f3136456a932efbea36e03d42 (diff) | |
| download | tangara-fw-731b2cfa77a063e98da8fa26acc1e7ed1de8c169.tar.gz | |
working isr-based sink, but still grainy
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 |
