From 5527d4b50ff729bedd2d5bf02d35e3bb81f42510 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 11 Jul 2013 10:51:56 -0700 Subject: [PATCH] use glm clamp instead of pleateauAdditionOfSamples in audio mixer --- audio-mixer/src/main.cpp | 75 ++++++++++++++++++++-------------------- 1 file changed, 38 insertions(+), 37 deletions(-) diff --git a/audio-mixer/src/main.cpp b/audio-mixer/src/main.cpp index 68d66ac7ac..67ccb47e8c 100644 --- a/audio-mixer/src/main.cpp +++ b/audio-mixer/src/main.cpp @@ -6,42 +6,45 @@ // Copyright (c) 2013 High Fidelity, Inc. All rights reserved. // +#include +#include +#include #include +#include #include -#include +#include #include #include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "InjectedAudioRingBuffer.h" -#include "AvatarAudioRingBuffer.h" -#include -#include "PacketHeaders.h" +#include #ifdef _WIN32 #include "Syssocket.h" #include "Systime.h" #include #else +#include +#include #include #include -#include -#include #endif //_WIN32 +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "AvatarAudioRingBuffer.h" +#include "InjectedAudioRingBuffer.h" + const unsigned short MIXER_LISTEN_PORT = 55443; const short JITTER_BUFFER_MSECS = 12; @@ -49,17 +52,8 @@ const short JITTER_BUFFER_SAMPLES = JITTER_BUFFER_MSECS * (SAMPLE_RATE / 1000.0) const unsigned int BUFFER_SEND_INTERVAL_USECS = floorf((BUFFER_LENGTH_SAMPLES_PER_CHANNEL / SAMPLE_RATE) * 1000000); -const long MAX_SAMPLE_VALUE = std::numeric_limits::max(); -const long MIN_SAMPLE_VALUE = std::numeric_limits::min(); - -void plateauAdditionOfSamples(int16_t &mixSample, int16_t sampleToAdd) { - long sumSample = sampleToAdd + mixSample; - - long normalizedSample = std::min(MAX_SAMPLE_VALUE, sumSample); - normalizedSample = std::max(MIN_SAMPLE_VALUE, sumSample); - - mixSample = normalizedSample; -} +const int MAX_SAMPLE_VALUE = std::numeric_limits::max(); +const int MIN_SAMPLE_VALUE = std::numeric_limits::min(); void attachNewBufferToNode(Node *newNode) { if (!newNode->getLinkedData()) { @@ -304,16 +298,23 @@ int main(int argc, const char* argv[]) { // pull the earlier sample for the delayed channel int earlierSample = delaySamplePointer[s] * attenuationCoefficient * weakChannelAmplitudeRatio; - plateauAdditionOfSamples(delayedChannel[s], earlierSample); + delayedChannel[s] = glm::clamp(delayedChannel[s] + earlierSample, + MIN_SAMPLE_VALUE, + MAX_SAMPLE_VALUE); } int16_t currentSample = stkFrameBuffer[s] * attenuationCoefficient; - plateauAdditionOfSamples(goodChannel[s], currentSample); + goodChannel[s] = glm::clamp(goodChannel[s] + currentSample, + MIN_SAMPLE_VALUE, + MAX_SAMPLE_VALUE); if (s + numSamplesDelay < BUFFER_LENGTH_SAMPLES_PER_CHANNEL) { - plateauAdditionOfSamples(delayedChannel[s + numSamplesDelay], - currentSample * weakChannelAmplitudeRatio); + int sumSample = delayedChannel[s + numSamplesDelay] + + (currentSample * weakChannelAmplitudeRatio); + delayedChannel[s + numSamplesDelay] = glm::clamp(sumSample, + MIN_SAMPLE_VALUE, + MAX_SAMPLE_VALUE); } if (s >= BUFFER_LENGTH_SAMPLES_PER_CHANNEL - PHASE_DELAY_AT_90) {