diff options
Diffstat (limited to 'src/audio')
| -rw-r--r-- | src/audio/audio_decoder.cpp | 1 | ||||
| -rw-r--r-- | src/audio/fatfs_audio_input.cpp | 7 | ||||
| -rw-r--r-- | src/audio/track_queue.cpp | 5 |
3 files changed, 10 insertions, 3 deletions
diff --git a/src/audio/audio_decoder.cpp b/src/audio/audio_decoder.cpp index 7751bf37..86394a37 100644 --- a/src/audio/audio_decoder.cpp +++ b/src/audio/audio_decoder.cpp @@ -103,6 +103,7 @@ void Decoder::Main() { for (;;) { if (source_->HasNewStream() || !stream_) { std::shared_ptr<codecs::IStream> new_stream = source_->NextStream(); + ESP_LOGI(kTag, "decoder has new stream"); if (new_stream && BeginDecoding(new_stream)) { stream_ = new_stream; } else { diff --git a/src/audio/fatfs_audio_input.cpp b/src/audio/fatfs_audio_input.cpp index f71f0463..6039ff9d 100644 --- a/src/audio/fatfs_audio_input.cpp +++ b/src/audio/fatfs_audio_input.cpp @@ -34,6 +34,7 @@ #include "future_fetcher.hpp" #include "tag_parser.hpp" #include "tasks.hpp" +#include "track.hpp" #include "types.hpp" static const char* kTag = "SRC"; @@ -118,13 +119,13 @@ auto FatfsAudioInput::NextStream() -> std::shared_ptr<codecs::IStream> { auto FatfsAudioInput::OpenFile(const std::pmr::string& path) -> bool { ESP_LOGI(kTag, "opening file %s", path.c_str()); - database::TrackTags tags; - if (!tag_parser_.ReadAndParseTags(path, &tags)) { + auto tags = tag_parser_.ReadAndParseTags(path); + if (!tags) { ESP_LOGE(kTag, "failed to read tags"); return false; } - auto stream_type = ContainerToStreamType(tags.encoding()); + auto stream_type = ContainerToStreamType(tags->encoding()); if (!stream_type.has_value()) { ESP_LOGE(kTag, "couldn't match container to stream"); return false; diff --git a/src/audio/track_queue.cpp b/src/audio/track_queue.cpp index 6f17ad33..b1cacc00 100644 --- a/src/audio/track_queue.cpp +++ b/src/audio/track_queue.cpp @@ -19,6 +19,8 @@ namespace audio { +static constexpr char kTag[] = "tracks"; + TrackQueue::TrackQueue() {} auto TrackQueue::GetCurrent() const -> std::optional<database::TrackId> { @@ -202,6 +204,9 @@ auto TrackQueue::Previous() -> void { auto TrackQueue::Clear() -> void { const std::lock_guard<std::mutex> lock(mutex_); + if (enqueued_.empty() && played_.empty()) { + return; + } QueueUpdate ev{.current_changed = !enqueued_.empty()}; played_.clear(); enqueued_.clear(); |
