From 7b7e8827e73143e1a0c5c24a773993cbcf480c9b Mon Sep 17 00:00:00 2001 From: Sam Hocevar Date: Wed, 12 Mar 2025 16:39:05 +0100 Subject: [PATCH] audio: add an optional seek API to the stream object --- include/lol/private/audio/stream.h | 39 ++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/include/lol/private/audio/stream.h b/include/lol/private/audio/stream.h index 0085c102..69ad22c0 100644 --- a/include/lol/private/audio/stream.h +++ b/include/lol/private/audio/stream.h @@ -22,6 +22,7 @@ #include // std::function #include // std::numeric_limits #include // std::shared_ptr +#include // std::optional #include // std::is_same_v #include // std::unordered_set @@ -174,6 +175,12 @@ public: inline size_t frame_size() const { return channels() * sizeof(T); } + virtual std::optional size() const { return std::nullopt; } + + virtual std::optional pos() const { return std::nullopt; } + + virtual bool seek(size_t pos) { return false; } + virtual ~stream() = default; protected: @@ -275,6 +282,21 @@ public: return frames; } + virtual std::optional size() const override + { + return m_in->size(); + } + + virtual std::optional pos() const override + { + return m_in->pos(); + } + + virtual bool seek(size_t pos) override + { + return m_in->seek(pos); + } + protected: std::shared_ptr> m_in; }; @@ -316,6 +338,21 @@ public: return frames; } + virtual std::optional size() const override + { + return m_in->size(); + } + + virtual std::optional pos() const override + { + return m_in->pos(); + } + + virtual bool seek(size_t pos) override + { + return m_in->seek(pos); + } + protected: std::shared_ptr> m_in; }; @@ -365,6 +402,8 @@ public: return frames; } + // FIXME: size/pos/seek API + protected: std::shared_ptr> m_in;