diff --git a/daemon/src/audio/sound/audiofile.cpp b/daemon/src/audio/sound/audiofile.cpp index 62425d3e711eacb1f675912884635c900b4a8dc0..63a5636027545581cc086b3ec2457bb4245c2699 100644 --- a/daemon/src/audio/sound/audiofile.cpp +++ b/daemon/src/audio/sound/audiofile.cpp @@ -109,7 +109,7 @@ RawFile::RawFile(const std::string& name, sfl::AudioCodec *codec, unsigned int s } -WaveFile::WaveFile(const std::string &fileName, int sampleRate) : AudioFile(fileName, sampleRate) +WaveFile::WaveFile(const std::string &fileName, unsigned int sampleRate) : AudioFile(fileName, sampleRate) { const std::fstream fs(fileName.c_str(), std::ios_base::in); @@ -174,7 +174,8 @@ WaveFile::WaveFile(const std::string &fileName, int sampleRate) : AudioFile(file fileStream.read(data, sizeof data / sizeof *data); // Samplerate converter initialized with 88200 sample long - SamplerateConverter converter(std::max(fileRate, newRate)); + const int rate = static_cast<SINT32>(sampleRate_); + SamplerateConverter converter(std::max(fileRate, rate)); // Get length of data from the header. SINT32 bytes; @@ -200,15 +201,13 @@ WaveFile::WaveFile(const std::string &fileName, int sampleRate) : AudioFile(file nbSamples *= 0.5; } - if (fileRate != newRate) { - const float ratio = newRate / (float) fileRate; + if (fileRate != rate) { + const float ratio = sampleRate_ / (float) fileRate; const int outSamples = ceil(nbSamples * ratio); size_ = outSamples; buffer_ = new SFLDataFormat[size_]; - converter.resample(tempBuffer, buffer_, size_, fileRate, newRate, nbSamples); + converter.resample(tempBuffer, buffer_, size_, fileRate, sampleRate_, nbSamples); delete [] tempBuffer; } else buffer_ = tempBuffer; - - sampleRate_ = newRate; }