summaryrefslogtreecommitdiff
path: root/src/audio/include
diff options
context:
space:
mode:
Diffstat (limited to 'src/audio/include')
-rw-r--r--src/audio/include/audio_sink.hpp28
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