diff options
| author | jacqueline <me@jacqueline.id.au> | 2023-06-07 13:19:45 +1000 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2023-06-07 13:19:45 +1000 |
| commit | 1f903accd95361735c841c87fdc6494ad3331b40 (patch) | |
| tree | 5b69bd0548c06a93852a576fa90a170fa303a15e /src/audio/fatfs_audio_input.cpp | |
| parent | 2a568846bd8f1c9e23e86e7570557eed6f18cf9f (diff) | |
| download | tangara-fw-1f903accd95361735c841c87fdc6494ad3331b40.tar.gz | |
Flesh out audio state machine for playback
Also fix mono playback
Diffstat (limited to 'src/audio/fatfs_audio_input.cpp')
| -rw-r--r-- | src/audio/fatfs_audio_input.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
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 <variant> #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<InputStream>& 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<InputStream>& 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<InputFileFinished, AudioState>({}); } } |
