Implemented volume control for jukebox

This commit is contained in:
emeric
2026-02-18 00:12:32 +01:00
parent 5f6d3e796a
commit 7a30bb98f6
9 changed files with 137 additions and 51 deletions
@@ -118,6 +118,20 @@ namespace lms::jukebox
return _outputStream->isPaused();
}
void JukeboxService::setVolume(float volume)
{
std::unique_lock lock{ _mutex };
_outputStream->setVolume(volume);
}
float JukeboxService::getVolume() const
{
std::shared_lock lock{ _mutex };
return _outputStream->getVolume();
}
std::optional<std::size_t> JukeboxService::getCurrentTrackIndex() const
{
std::shared_lock lock{ _mutex };
@@ -51,6 +51,9 @@ namespace lms::jukebox
void resume() override;
bool isPaused() const override;
void setVolume(float volume) override;
float getVolume() const override;
std::optional<std::size_t> getCurrentTrackIndex() const override;
std::chrono::microseconds getPlaybackTrackTime() const override;
@@ -48,6 +48,9 @@ namespace lms::jukebox
virtual void resume() = 0;
virtual bool isPaused() const = 0;
virtual void setVolume(float volume) = 0; // from 0 to 1
virtual float getVolume() const = 0;
virtual std::optional<std::size_t> getCurrentTrackIndex() const = 0; // may be unset if queue is cleared while playing
virtual std::chrono::microseconds getPlaybackTrackTime() const = 0;