From 71de3d5ca103f32d85ef95854496fedd2ca0175d Mon Sep 17 00:00:00 2001 From: Ken Cooke Date: Tue, 23 May 2017 08:40:15 -0700 Subject: [PATCH] Instantiate new gate with the correct number of channels --- libraries/audio-client/src/AudioClient.cpp | 8 ++++++++ libraries/audio-client/src/AudioClient.h | 2 ++ 2 files changed, 10 insertions(+) diff --git a/libraries/audio-client/src/AudioClient.cpp b/libraries/audio-client/src/AudioClient.cpp index 1282dbb2dc..5f187b599c 100644 --- a/libraries/audio-client/src/AudioClient.cpp +++ b/libraries/audio-client/src/AudioClient.cpp @@ -1415,6 +1415,10 @@ bool AudioClient::switchInputToAudioDevice(const QAudioDeviceInfo& inputDeviceIn delete _inputToNetworkResampler; _inputToNetworkResampler = NULL; } + if (_audioGate) { + delete _audioGate; + _audioGate = nullptr; + } if (!inputDeviceInfo.isNull()) { qCDebug(audioclient) << "The audio input device " << inputDeviceInfo.deviceName() << "is available."; @@ -1440,6 +1444,10 @@ bool AudioClient::switchInputToAudioDevice(const QAudioDeviceInfo& inputDeviceIn qCDebug(audioclient) << "No resampling required for audio input to match desired network format."; } + // the audio gate runs after the resampler + _audioGate = new AudioGate(_desiredInputFormat.sampleRate(), _desiredInputFormat.channelCount()); + qCDebug(audioclient) << "Noise gate created with" << _desiredInputFormat.channelCount() << "channels."; + // if the user wants stereo but this device can't provide then bail if (!_isStereoInput || _inputFormat.channelCount() == 2) { _audioInput = new QAudioInput(inputDeviceInfo, _inputFormat, this); diff --git a/libraries/audio-client/src/AudioClient.h b/libraries/audio-client/src/AudioClient.h index 47808767b3..563c01d98a 100644 --- a/libraries/audio-client/src/AudioClient.h +++ b/libraries/audio-client/src/AudioClient.h @@ -46,6 +46,7 @@ #include #include #include +#include #include @@ -361,6 +362,7 @@ private: AudioIOStats _stats; AudioNoiseGate _noiseGate; + AudioGate* _audioGate { nullptr }; AudioPositionGetter _positionGetter; AudioOrientationGetter _orientationGetter;