From 23ecff10112ffd8cace0a0f41f4abd45222af2d8 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Wed, 21 Jun 2023 13:37:50 +1000 Subject: [PATCH] Fix spurious stream starts --- src/audio/audio_decoder.cpp | 4 ---- src/audio/fatfs_audio_input.cpp | 2 -- src/audio/stream_info.cpp | 6 ++++++ 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/audio/audio_decoder.cpp b/src/audio/audio_decoder.cpp index 583f4b22..966a8c37 100644 --- a/src/audio/audio_decoder.cpp +++ b/src/audio/audio_decoder.cpp @@ -142,7 +142,6 @@ auto AudioDecoder::Process(const std::vector& inputs, // before starting to process data. // TODO(jacqueline): Pass through seek info here? if (!has_prepared_output_ && !output->prepare(*current_output_format_)) { - ESP_LOGI(kTag, "waiting for buffer to become free"); return; } has_prepared_output_ = true; @@ -156,12 +155,9 @@ auto AudioDecoder::Process(const std::vector& inputs, // The codec ran out of input during processing. This is expected to // happen throughout the stream. if (res.second.error() == codecs::ICodec::Error::kOutOfInput) { - ESP_LOGI(kTag, "codec needs more data"); has_input_remaining_ = false; has_samples_to_send_ = false; if (input->is_producer_finished()) { - ESP_LOGI(kTag, "codec is all done."); - // We're out of data, and so is the producer. Nothing left to be done // with the input stream. input->mark_consumer_finished(); diff --git a/src/audio/fatfs_audio_input.cpp b/src/audio/fatfs_audio_input.cpp index d3bd9259..86b455f0 100644 --- a/src/audio/fatfs_audio_input.cpp +++ b/src/audio/fatfs_audio_input.cpp @@ -134,7 +134,6 @@ auto FatfsAudioInput::Process(const std::vector& inputs, } if (!has_prepared_output_ && !output->prepare(*current_format_)) { - ESP_LOGI(kTag, "waiting for buffer to free up"); return; } has_prepared_output_ = true; @@ -156,7 +155,6 @@ auto FatfsAudioInput::Process(const std::vector& inputs, output->add(size); if (size < max_size || f_eof(¤t_file_)) { - ESP_LOGI(kTag, "file finished. closing."); f_close(¤t_file_); is_file_open_ = false; has_prepared_output_ = false; diff --git a/src/audio/stream_info.cpp b/src/audio/stream_info.cpp index 2337b3a3..748cb9ef 100644 --- a/src/audio/stream_info.cpp +++ b/src/audio/stream_info.cpp @@ -30,6 +30,9 @@ void InputStream::consume(std::size_t bytes) const { void InputStream::mark_consumer_finished() const { raw_->info->is_consumer_finished = true; + if (is_producer_finished()) { + raw_->info->format = std::monostate(); + } } bool InputStream::is_producer_finished() const { @@ -71,6 +74,9 @@ cpp::span OutputStream::data() const { void OutputStream::mark_producer_finished() const { raw_->info->is_producer_finished = true; + if (is_consumer_finished()) { + raw_->info->format = std::monostate(); + } } bool OutputStream::is_consumer_finished() const {