diff options
| author | jacqueline <me@jacqueline.id.au> | 2023-11-24 15:13:10 +1100 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2023-11-24 15:13:10 +1100 |
| commit | 7c6eb2997cbba350e7384151e13659271508e08f (patch) | |
| tree | b6f95a4843521e69b24cbf4c126d84442d19fc23 /src/audio/include/audio_source.hpp | |
| parent | 230721cd6271f3239b42e1d2471f8db15bebd712 (diff) | |
| download | tangara-fw-7c6eb2997cbba350e7384151e13659271508e08f.tar.gz | |
Migrate 'now playing' screen to lua
Diffstat (limited to 'src/audio/include/audio_source.hpp')
| -rw-r--r-- | src/audio/include/audio_source.hpp | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/src/audio/include/audio_source.hpp b/src/audio/include/audio_source.hpp index a0d690a6..a54cb260 100644 --- a/src/audio/include/audio_source.hpp +++ b/src/audio/include/audio_source.hpp @@ -6,16 +6,41 @@ #pragma once +#include <memory> #include "codec.hpp" +#include "track.hpp" +#include "types.hpp" namespace audio { +class TaggedStream : public codecs::IStream { + public: + TaggedStream(std::shared_ptr<database::TrackTags>, + std::unique_ptr<codecs::IStream> wrapped); + + auto tags() -> std::shared_ptr<database::TrackTags>; + + auto Read(cpp::span<std::byte> dest) -> ssize_t override; + + auto CanSeek() -> bool override; + + auto SeekTo(int64_t destination, SeekFrom from) -> void override; + + auto CurrentPosition() -> int64_t override; + + auto SetPreambleFinished() -> void override; + + private: + std::shared_ptr<database::TrackTags> tags_; + std::unique_ptr<codecs::IStream> wrapped_; +}; + class IAudioSource { public: virtual ~IAudioSource() {} virtual auto HasNewStream() -> bool = 0; - virtual auto NextStream() -> std::shared_ptr<codecs::IStream> = 0; + virtual auto NextStream() -> std::shared_ptr<TaggedStream> = 0; }; } // namespace audio |
