diff --git a/client/player/player.cpp b/client/player/player.cpp index 5c60ef4a..59df22f4 100644 --- a/client/player/player.cpp +++ b/client/player/player.cpp @@ -31,7 +31,8 @@ Player::Player(const PcmDevice& pcmDevice, Stream* stream) : stream_(stream), pcmDevice_(pcmDevice), volume_(1.0), - muted_(false) + muted_(false), + volCorrection_(1.0) { } @@ -69,13 +70,14 @@ void Player::adjustVolume(char* buffer, size_t frames) const SampleFormat& sampleFormat = stream_->getFormat(); - if (volume < 1.0) + if ((volume < 1.0) || (volCorrection_ != 1.)) { - if (sampleFormat.bits == 8) + volume *= volCorrection_; + if (sampleFormat.sampleSize == 1) adjustVolume(buffer, frames*sampleFormat.channels, volume); - else if (sampleFormat.bits == 16) + else if (sampleFormat.sampleSize == 2) adjustVolume(buffer, frames*sampleFormat.channels, volume); - else if (sampleFormat.bits == 32) + else if (sampleFormat.sampleSize == 4) adjustVolume(buffer, frames*sampleFormat.channels, volume); } } diff --git a/client/player/player.h b/client/player/player.h index fcbd58b2..e7372442 100644 --- a/client/player/player.h +++ b/client/player/player.h @@ -52,9 +52,21 @@ protected: void adjustVolume(char *buffer, size_t count, double volume) { T* bufferT = (T*)buffer; - //TODO: SWAP_T. Hard coded to 16 bit audio - for (size_t n=0; n