summaryrefslogtreecommitdiff
path: root/src/audio/fatfs_audio_input.cpp
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2023-04-01 13:22:21 +1100
committerjacqueline <me@jacqueline.id.au>2023-04-19 10:29:38 +1000
commit7c6fd654f50e6665efa4226c6b927f9762734182 (patch)
tree58ccb69068c550e9c2223c1b510cfa525690b731 /src/audio/fatfs_audio_input.cpp
parent3817ec0c77b8d44e54b35ea9f76e7bb4666c6c08 (diff)
downloadtangara-fw-7c6fd654f50e6665efa4226c6b927f9762734182.tar.gz
New pipeline building, still needs proper control
Diffstat (limited to 'src/audio/fatfs_audio_input.cpp')
-rw-r--r--src/audio/fatfs_audio_input.cpp20
1 files changed, 12 insertions, 8 deletions
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<Stream>* inputs,
- MutableStream* output) -> void {
+auto FatfsAudioInput::Process(const std::vector<InputStream>& 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(&current_file_, output->data.data(), output->data.size_bytes(),
- &output->info->bytes_in_stream);
+ f_read(&current_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(&current_file_)) {
+ if (size < max_size || f_eof(&current_file_)) {
f_close(&current_file_);
is_file_open_ = false;
}