From 1f903accd95361735c841c87fdc6494ad3331b40 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Wed, 7 Jun 2023 13:19:45 +1000 Subject: Flesh out audio state machine for playback Also fix mono playback --- src/audio/fatfs_audio_input.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/audio/fatfs_audio_input.cpp') diff --git a/src/audio/fatfs_audio_input.cpp b/src/audio/fatfs_audio_input.cpp index 8abc7d32..9affcf1a 100644 --- a/src/audio/fatfs_audio_input.cpp +++ b/src/audio/fatfs_audio_input.cpp @@ -13,8 +13,11 @@ #include #include "arena.hpp" +#include "audio_events.hpp" +#include "audio_fsm.hpp" #include "esp_heap_caps.h" #include "esp_log.h" +#include "event_queue.hpp" #include "ff.h" #include "freertos/portmacro.h" @@ -69,6 +72,10 @@ auto FatfsAudioInput::Process(const std::vector& inputs, } std::size_t max_size = output->data().size_bytes(); + if (max_size < output->data().size_bytes() / 2) { + return; + } + std::size_t size = 0; FRESULT result = f_read(¤t_file_, output->data().data(), max_size, &size); @@ -83,6 +90,12 @@ auto FatfsAudioInput::Process(const std::vector& inputs, if (size < max_size || f_eof(¤t_file_)) { f_close(¤t_file_); is_file_open_ = false; + + // TODO(jacqueline): MP3 only + std::fill_n(output->data().begin(), 8, std::byte(0)); + output->add(8); + + events::Dispatch({}); } } -- cgit v1.2.3