From 3583bdecbb0d2bd6ba4e282bdbbd53772e0e5123 Mon Sep 17 00:00:00 2001 From: Ken Cooke Date: Thu, 18 Aug 2016 16:56:26 -0700 Subject: [PATCH] Fix for calculateDeviceToNetworkInputRatio() which was completely broken. Running the audio back-end at 44.1k now works correctly. --- libraries/audio-client/src/AudioClient.cpp | 13 ++----------- libraries/audio-client/src/AudioClient.h | 1 - 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/libraries/audio-client/src/AudioClient.cpp b/libraries/audio-client/src/AudioClient.cpp index 3a049e0c38..cf43730258 100644 --- a/libraries/audio-client/src/AudioClient.cpp +++ b/libraries/audio-client/src/AudioClient.cpp @@ -748,12 +748,11 @@ void AudioClient::handleLocalEchoAndReverb(QByteArray& inputByteArray) { } void AudioClient::handleAudioInput() { - const float inputToNetworkInputRatio = calculateDeviceToNetworkInputRatio(); - const int inputSamplesRequired = (int)((float)AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL * inputToNetworkInputRatio); + // input samples required to produce exactly NETWORK_FRAME_SAMPLES of output + const int inputSamplesRequired = _inputFormat.channelCount() * _inputToNetworkResampler->getMinInput(AudioConstants::NETWORK_FRAME_SAMPLES_PER_CHANNEL); const auto inputAudioSamples = std::unique_ptr(new int16_t[inputSamplesRequired]); QByteArray inputByteArray = _inputDevice->readAll(); - handleLocalEchoAndReverb(inputByteArray); _inputRingBuffer.writeData(inputByteArray.data(), inputByteArray.size()); @@ -1261,14 +1260,6 @@ int AudioClient::calculateNumberOfInputCallbackBytes(const QAudioFormat& format) return numInputCallbackBytes; } -float AudioClient::calculateDeviceToNetworkInputRatio() const { - float inputToNetworkInputRatio = (int)((_numInputCallbackBytes - * CALLBACK_ACCELERATOR_RATIO - / AudioConstants::NETWORK_FRAME_BYTES_PER_CHANNEL) + 0.5f); - - return inputToNetworkInputRatio; -} - int AudioClient::calculateNumberOfFrameSamples(int numBytes) const { int frameSamples = (int)(numBytes * CALLBACK_ACCELERATOR_RATIO + 0.5f) / sizeof(int16_t); return frameSamples; diff --git a/libraries/audio-client/src/AudioClient.h b/libraries/audio-client/src/AudioClient.h index 171014edda..9db2cc0489 100644 --- a/libraries/audio-client/src/AudioClient.h +++ b/libraries/audio-client/src/AudioClient.h @@ -298,7 +298,6 @@ private: // Callback acceleration dependent calculations int calculateNumberOfInputCallbackBytes(const QAudioFormat& format) const; int calculateNumberOfFrameSamples(int numBytes) const; - float calculateDeviceToNetworkInputRatio() const; quint16 _outgoingAvatarAudioSequenceNumber;