From f7ed8cef8fd9a6ad68b813e9149620d9c30fda41 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Mon, 16 Dec 2013 15:31:05 -0800 Subject: [PATCH] fixes for all current headsets work --- interface/src/Audio.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/interface/src/Audio.cpp b/interface/src/Audio.cpp index bd7da88aef..c1794fc4dd 100644 --- a/interface/src/Audio.cpp +++ b/interface/src/Audio.cpp @@ -185,14 +185,16 @@ void linearResampling(int16_t* sourceSamples, int16_t* destinationSamples, // we need to downsample from 48 to 24 // for now this only supports a mono output - this would be the case for audio input - for (int i = 2; i < numSourceSamples; i += 4) { - if (i + 2 >= numSourceSamples) { - destinationSamples[(i - 2) / 4] = (sourceSamples[i - 2] / 2) + for (int i = sourceAudioFormat.channelCount(); i < numSourceSamples; i += 2 * sourceAudioFormat.channelCount()) { + if (i + (sourceAudioFormat.channelCount()) >= numSourceSamples) { + destinationSamples[(i - sourceAudioFormat.channelCount()) / (int) sourceToDestinationFactor] = + (sourceSamples[i - sourceAudioFormat.channelCount()] / 2) + (sourceSamples[i] / 2); } else { - destinationSamples[(i - 2) / 4] = (sourceSamples[i - 2] / 4) + destinationSamples[(i - sourceAudioFormat.channelCount()) / (int) sourceToDestinationFactor] = + (sourceSamples[i - sourceAudioFormat.channelCount()] / 4) + (sourceSamples[i] / 2) - + (sourceSamples[i + 2] / 4); + + (sourceSamples[i + sourceAudioFormat.channelCount()] / 4); } } @@ -448,7 +450,8 @@ void Audio::addReceivedAudioToBuffer(const QByteArray& audioByteArray) { // add output (@speakers) data just written to the scope QMetaObject::invokeMethod(_scope, "addSamples", Qt::QueuedConnection, - Q_ARG(QByteArray, outputBuffer), + Q_ARG(QByteArray, QByteArray((char*) ringBufferSamples, + NETWORK_BUFFER_LENGTH_BYTES_STEREO)), Q_ARG(bool, true), Q_ARG(bool, false)); } }