summaryrefslogtreecommitdiff
path: root/src/audio/include/audio_task.hpp
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2023-07-31 11:00:17 +1000
committerjacqueline <me@jacqueline.id.au>2023-07-31 11:06:27 +1000
commitcdaa2ac97ac663de7c0c2b0361871c97269b1675 (patch)
treec7ac2908d9294613db6f11138fc54786f4d78dab /src/audio/include/audio_task.hpp
parent0a8d2fd12e0781c32d23b67dd938e3ba8caf782e (diff)
downloadtangara-fw-cdaa2ac97ac663de7c0c2b0361871c97269b1675.tar.gz
Add duration for flacs
Diffstat (limited to 'src/audio/include/audio_task.hpp')
-rw-r--r--src/audio/include/audio_task.hpp19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/audio/include/audio_task.hpp b/src/audio/include/audio_task.hpp
index 72732021..f6e9789b 100644
--- a/src/audio/include/audio_task.hpp
+++ b/src/audio/include/audio_task.hpp
@@ -18,15 +18,21 @@
namespace audio {
+struct Duration {
+ enum class Source {
+ kLibTags,
+ kCodec,
+ kFileSize,
+ };
+ Source src;
+ uint32_t duration;
+};
+
class Timer {
public:
- explicit Timer(StreamInfo::Pcm);
-
- auto SetLengthSeconds(uint32_t) -> void;
- auto SetLengthBytes(uint32_t) -> void;
+ Timer(const StreamInfo::Pcm&, const Duration&);
auto AddBytes(std::size_t) -> void;
- auto has_duration() const -> bool { return has_duration_; }
private:
auto bytes_to_samples(uint32_t) -> uint32_t;
@@ -36,7 +42,6 @@ class Timer {
uint32_t current_seconds_;
uint32_t current_sample_in_second_;
- bool has_duration_;
uint32_t total_duration_seconds_;
};
@@ -57,7 +62,7 @@ class AudioTask {
auto ForwardPcmStream(StreamInfo::Pcm&, cpp::span<const std::byte>) -> bool;
- auto ConfigureSink(const StreamInfo::Pcm&) -> bool;
+ auto ConfigureSink(const StreamInfo::Pcm&, const Duration&) -> bool;
IAudioSource* source_;
IAudioSink* sink_;