From 39f7545cd5ef7a30bbd482f3579df7744c6b688d Mon Sep 17 00:00:00 2001 From: jacqueline Date: Fri, 7 Jul 2023 15:29:47 +1000 Subject: wire up the playing screen with some real data Includes implementing song duration calculation for CBR MP3 files --- src/audio/audio_task.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'src/audio/audio_task.cpp') diff --git a/src/audio/audio_task.cpp b/src/audio/audio_task.cpp index 24bc7be7..babe6849 100644 --- a/src/audio/audio_task.cpp +++ b/src/audio/audio_task.cpp @@ -37,6 +37,7 @@ #include "stream_message.hpp" #include "sys/_stdint.h" #include "tasks.hpp" +#include "ui_fsm.hpp" namespace audio { @@ -87,7 +88,7 @@ void AudioTaskMain(std::unique_ptr pipeline, IAudioSink* sink) { } if (previously_had_work && !has_work) { - events::Dispatch({}); + events::Dispatch({}); } previously_had_work = has_work; @@ -136,6 +137,10 @@ void AudioTaskMain(std::unique_ptr pipeline, IAudioSink* sink) { if (sink_stream.is_producer_finished()) { sink_stream.mark_consumer_finished(); + if (current_second > 0 || current_sample_in_second > 0) { + events::Dispatch({}); + } + current_second = 0; previous_second = 0; current_sample_in_second = 0; @@ -185,8 +190,11 @@ void AudioTaskMain(std::unique_ptr pipeline, IAudioSink* sink) { current_sample_in_second -= pcm.sample_rate; } if (previous_second != current_second) { - events::Dispatch( - {.seconds_elapsed = current_second}); + events::Dispatch({ + .seconds_elapsed = current_second, + .seconds_total = + sink_stream.info().duration_seconds.value_or(current_second), + }); } previous_second = current_second; } -- cgit v1.2.3