From 7c6fd654f50e6665efa4226c6b927f9762734182 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Sat, 1 Apr 2023 13:22:21 +1100 Subject: New pipeline building, still needs proper control --- src/audio/fatfs_audio_input.cpp | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) (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 bd8748eb..b9882711 100644 --- a/src/audio/fatfs_audio_input.cpp +++ b/src/audio/fatfs_audio_input.cpp @@ -44,26 +44,30 @@ auto FatfsAudioInput::OpenFile(const std::string& path) -> void { is_file_open_ = true; } -auto FatfsAudioInput::Process(std::vector* inputs, - MutableStream* output) -> void { +auto FatfsAudioInput::Process(const std::vector& inputs, + OutputStream* output) -> void { if (!is_file_open_) { return; } + StreamInfo::Format format = StreamInfo::Encoded{codecs::STREAM_MP3}; + if (!output->prepare(format)) { + return; + } + + std::size_t max_size = output->data().size_bytes(); + std::size_t size = 0; FRESULT result = - f_read(¤t_file_, output->data.data(), output->data.size_bytes(), - &output->info->bytes_in_stream); + f_read(¤t_file_, output->data().data(), max_size, &size); if (result != FR_OK) { ESP_LOGE(kTag, "file I/O error %d", result); // TODO(jacqueline): Handle errors. return; } - // TODO: read from filename? - output->info->data = StreamInfo::Encoded{codecs::STREAM_MP3}; + output->add(size); - if (output->info->bytes_in_stream < output->data.size_bytes() || - f_eof(¤t_file_)) { + if (size < max_size || f_eof(¤t_file_)) { f_close(¤t_file_); is_file_open_ = false; } -- cgit v1.2.3