summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Kellermann <max@musicpd.org>2018-09-23 15:23:42 +0200
committerMax Kellermann <max@musicpd.org>2018-09-23 15:46:27 +0200
commitc1600bcf3d5af915a2c4d999d92d9418c5058f65 (patch)
treefea56d3323d1388b46767d14948e4fd912135488
parenta82d864c91b2fdb4aa7ca0d125a62a39c20bda20 (diff)
player/Thread: copy `buffered_before_play`
-rw-r--r--src/player/Thread.cxx13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/player/Thread.cxx b/src/player/Thread.cxx
index 13477fe0a..017e4c5be 100644
--- a/src/player/Thread.cxx
+++ b/src/player/Thread.cxx
@@ -79,6 +79,12 @@ class Player {
std::unique_ptr<Tag> cross_fade_tag;
/**
+ * Start playback as soon as this number of chunks has been
+ * pushed to the decoder pipe.
+ */
+ const unsigned buffer_before_play;
+
+ /**
* If the decoder pipe gets consumed below this threshold,
* it's time to wake up the decoder.
*
@@ -89,7 +95,7 @@ class Player {
const unsigned decoder_wakeup_threshold;
/**
- * are we waiting for buffered_before_play?
+ * Are we waiting for #buffer_before_play?
*/
bool buffering = true;
@@ -185,6 +191,7 @@ public:
Player(PlayerControl &_pc, DecoderControl &_dc,
MusicBuffer &_buffer) noexcept
:pc(_pc), dc(_dc), buffer(_buffer),
+ buffer_before_play(pc.buffered_before_play),
decoder_wakeup_threshold(buffer.GetSize() * 3 / 4)
{
}
@@ -954,7 +961,7 @@ Player::Run() noexcept
until the buffer is large enough, to
prevent stuttering on slow machines */
- if (pipe->GetSize() < pc.buffered_before_play &&
+ if (pipe->GetSize() < buffer_before_play &&
!dc.IsIdle() && !buffer.IsFull()) {
/* not enough decoded buffer space yet */
@@ -1002,7 +1009,7 @@ Player::Run() noexcept
dc.out_audio_format,
play_audio_format,
buffer.GetSize() -
- pc.buffered_before_play);
+ buffer_before_play);
if (cross_fade_chunks > 0)
xfade_state = CrossFadeState::ENABLED;
else