From 61c91b3cdb2c9dd655f3adf0f461f5cefb3b2e9b Mon Sep 17 00:00:00 2001 From: jacqueline Date: Fri, 10 Feb 2023 15:32:21 +1100 Subject: Mostly working pipeline, including proper EOF signalling --- src/audio/include/i2s_audio_output.hpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'src/audio/include/i2s_audio_output.hpp') diff --git a/src/audio/include/i2s_audio_output.hpp b/src/audio/include/i2s_audio_output.hpp index 02ac7a16..b4fd4c59 100644 --- a/src/audio/include/i2s_audio_output.hpp +++ b/src/audio/include/i2s_audio_output.hpp @@ -4,6 +4,7 @@ #include #include "audio_element.hpp" +#include "chunk.hpp" #include "result.hpp" #include "dac.hpp" @@ -21,13 +22,13 @@ class I2SAudioOutput : public IAudioElement { std::unique_ptr dac); ~I2SAudioOutput(); - // TODO. - auto HasUnprocessedInput() -> bool override { return false; } + auto HasUnprocessedInput() -> bool override; auto ProcessStreamInfo(const StreamInfo& info) -> cpp::result override; auto ProcessChunk(const cpp::span& chunk) -> cpp::result override; + auto ProcessEndOfStream() -> void override; auto Process() -> cpp::result override; I2SAudioOutput(const I2SAudioOutput&) = delete; @@ -37,11 +38,18 @@ class I2SAudioOutput : public IAudioElement { auto SetVolume(uint8_t volume) -> void; auto SetSoftMute(bool enabled) -> void; + auto ClearDmaQueue() -> void; + drivers::GpioExpander* expander_; std::unique_ptr dac_; uint8_t volume_; bool is_soft_muted_; + + std::optional chunk_reader_; + cpp::span latest_chunk_; + std::optional dma_size_; + QueueHandle_t dma_queue_; }; } // namespace audio -- cgit v1.2.3