diff options
| author | jacqueline <me@jacqueline.id.au> | 2023-07-31 09:41:49 +1000 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2023-07-31 09:41:49 +1000 |
| commit | 485eed28903a0bc23df9c1ced1417e35fd58c43c (patch) | |
| tree | a363714c1b0f5074c48bea64f46a907b4aa45cfc /src/audio/include | |
| parent | 97bd3be892ce549dac8e0b9930607a282701653e (diff) | |
| download | tangara-fw-485eed28903a0bc23df9c1ced1417e35fd58c43c.tar.gz | |
use libtag duration where available
Diffstat (limited to 'src/audio/include')
| -rw-r--r-- | src/audio/include/audio_events.hpp | 4 | ||||
| -rw-r--r-- | src/audio/include/audio_fsm.hpp | 2 | ||||
| -rw-r--r-- | src/audio/include/audio_task.hpp | 2 | ||||
| -rw-r--r-- | src/audio/include/stream_info.hpp | 8 |
4 files changed, 16 insertions, 0 deletions
diff --git a/src/audio/include/audio_events.hpp b/src/audio/include/audio_events.hpp index 933eb7a2..9c945f33 100644 --- a/src/audio/include/audio_events.hpp +++ b/src/audio/include/audio_events.hpp @@ -30,6 +30,10 @@ struct QueueUpdate : tinyfsm::Event { bool current_changed; }; +struct PlayFile : tinyfsm::Event { + std::string filename; +}; + struct VolumeChanged : tinyfsm::Event {}; namespace internal { diff --git a/src/audio/include/audio_fsm.hpp b/src/audio/include/audio_fsm.hpp index 3a598902..cc3dae0e 100644 --- a/src/audio/include/audio_fsm.hpp +++ b/src/audio/include/audio_fsm.hpp @@ -51,6 +51,7 @@ class AudioState : public tinyfsm::Fsm<AudioState> { virtual void react(const system_fsm::BootComplete&) {} + virtual void react(const PlayFile&) {} virtual void react(const QueueUpdate&) {} virtual void react(const PlaybackUpdate&) {} @@ -82,6 +83,7 @@ class Uninitialised : public AudioState { class Standby : public AudioState { public: + void react(const PlayFile&) override; void react(const internal::InputFileOpened&) override; void react(const QueueUpdate&) override; diff --git a/src/audio/include/audio_task.hpp b/src/audio/include/audio_task.hpp index ae4c2221..72732021 100644 --- a/src/audio/include/audio_task.hpp +++ b/src/audio/include/audio_task.hpp @@ -26,6 +26,7 @@ class Timer { auto SetLengthBytes(uint32_t) -> void; auto AddBytes(std::size_t) -> void; + auto has_duration() const -> bool { return has_duration_; } private: auto bytes_to_samples(uint32_t) -> uint32_t; @@ -35,6 +36,7 @@ class Timer { uint32_t current_seconds_; uint32_t current_sample_in_second_; + bool has_duration_; uint32_t total_duration_seconds_; }; diff --git a/src/audio/include/stream_info.hpp b/src/audio/include/stream_info.hpp index 77789c24..d48c39a8 100644 --- a/src/audio/include/stream_info.hpp +++ b/src/audio/include/stream_info.hpp @@ -42,6 +42,13 @@ class StreamInfo { return total_length_bytes_; } + auto total_length_seconds() -> std::optional<std::uint32_t>& { + return total_length_seconds_; + } + auto total_length_seconds() const -> std::optional<std::uint32_t> { + return total_length_seconds_; + } + struct Encoded { // The codec that this stream is associated with. codecs::StreamType type; @@ -77,6 +84,7 @@ class StreamInfo { private: std::size_t bytes_in_stream_; std::optional<std::uint32_t> total_length_bytes_; + std::optional<std::uint32_t> total_length_seconds_; Format format_{}; }; |
