diff options
| author | jacqueline <me@jacqueline.id.au> | 2024-02-06 08:50:51 +1100 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2024-02-06 08:50:51 +1100 |
| commit | 2184b6c5f7fb026b52508ec1e234c7f32d3ace25 (patch) | |
| tree | 8615717697d28bc3d9dba2b312a74bcaaafe193b /src | |
| parent | 177277334ff81f3f5f1a69a5216b67b9c3561b4f (diff) | |
| download | tangara-fw-2184b6c5f7fb026b52508ec1e234c7f32d3ace25.tar.gz | |
send a time=0 progress update after opening each file
this helps populate things like the now playing screen when a file is
opened without unpausing (e.g. when restoring a saved queue after boot)
Diffstat (limited to 'src')
| -rw-r--r-- | src/audio/audio_decoder.cpp | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/src/audio/audio_decoder.cpp b/src/audio/audio_decoder.cpp index bd728e5a..b0a973d9 100644 --- a/src/audio/audio_decoder.cpp +++ b/src/audio/audio_decoder.cpp @@ -138,22 +138,27 @@ auto Decoder::BeginDecoding(std::shared_ptr<TaggedStream> stream) -> bool { return false; } stream->SetPreambleFinished(); - - timer_.reset(new Timer(std::shared_ptr<Track>{new Track{ - .tags = stream->tags(), - .db_info = {}, - .bitrate_kbps = open_res->sample_rate_hz, - .encoding = stream->type(), - }}, - open_res.value())); - current_sink_format_ = IAudioOutput::Format{ .sample_rate = open_res->sample_rate_hz, .num_channels = open_res->num_channels, .bits_per_sample = 16, }; + ESP_LOGI(kTag, "stream started ok"); events::Audio().Dispatch(internal::InputFileOpened{}); + + auto tags = std::make_shared<Track>(Track{ + .tags = stream->tags(), + .db_info = {}, + .bitrate_kbps = open_res->sample_rate_hz, + .encoding = stream->type(), + }); + timer_.reset(new Timer(tags, open_res.value())); + + PlaybackUpdate ev{.seconds_elapsed = 0, .track = tags}; + events::Audio().Dispatch(ev); + events::Ui().Dispatch(ev); + return true; } |
