From 34f90759803f61eaa2ccfaca9d8fd6c140879711 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Fri, 21 Mar 2014 16:47:41 -0700 Subject: [PATCH] use a linear change to audability ratio --- assignment-client/src/audio/AudioMixer.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/assignment-client/src/audio/AudioMixer.cpp b/assignment-client/src/audio/AudioMixer.cpp index 6754b1eee7..f2c766460a 100644 --- a/assignment-client/src/audio/AudioMixer.cpp +++ b/assignment-client/src/audio/AudioMixer.cpp @@ -379,6 +379,7 @@ void AudioMixer::run() { const float STRUGGLE_TRIGGER_SLEEP_PERCENTAGE_THRESHOLD = 0.10f; const float BACK_OFF_TRIGGER_SLEEP_PERCENTAGE_THRESHOLD = 0.20f; const float CUTOFF_EPSILON = 0.0001f; + const float CUTOFF_DELTA = 0.05; const float CURRENT_FRAME_RATIO = 1.0f / TRAILING_AVERAGE_FRAMES; const float PREVIOUS_FRAMES_RATIO = 1.0f - CURRENT_FRAME_RATIO; @@ -396,17 +397,21 @@ void AudioMixer::run() { if (framesSinceCutoffEvent >= TRAILING_AVERAGE_FRAMES) { if (_trailingSleepRatio <= STRUGGLE_TRIGGER_SLEEP_PERCENTAGE_THRESHOLD) { // we're struggling - change our min required loudness to reduce some load - audabilityCutoffRatio += (1.0f - audabilityCutoffRatio) / 2.0f; + audabilityCutoffRatio += CUTOFF_DELTA; + + if (audabilityCutoffRatio > 1) { + audabilityCutoffRatio = 1; + } qDebug() << "Mixer is struggling, sleeping" << _trailingSleepRatio * 100 << "% of frame time. Old cutoff was" << lastCutoffRatio << "and is now" << audabilityCutoffRatio; hasRatioChanged = true; } else if (_trailingSleepRatio >= BACK_OFF_TRIGGER_SLEEP_PERCENTAGE_THRESHOLD && audabilityCutoffRatio != 0) { // we've recovered and can back off the required loudness - audabilityCutoffRatio -= audabilityCutoffRatio / 2.0f; + audabilityCutoffRatio -= CUTOFF_DELTA; - if (audabilityCutoffRatio < CUTOFF_EPSILON) { - audabilityCutoffRatio = 0.0f; + if (audabilityCutoffRatio < 0) { + audabilityCutoffRatio = 0; } qDebug() << "Mixer is recovering, sleeping" << _trailingSleepRatio * 100 << "% of frame time. Old cutoff was"