fix bug with audio mixer muting too often

This commit is contained in:
Philip Rosedale 2014-11-07 14:18:57 -08:00
parent 3323ac11ff
commit 12eb67c734
5 changed files with 11 additions and 14 deletions

View file

@ -61,7 +61,7 @@
const float LOUDNESS_TO_DISTANCE_RATIO = 0.00001f; const float LOUDNESS_TO_DISTANCE_RATIO = 0.00001f;
const float DEFAULT_ATTENUATION_PER_DOUBLING_IN_DISTANCE = 0.18; const float DEFAULT_ATTENUATION_PER_DOUBLING_IN_DISTANCE = 0.18;
const float DEFAULT_NOISE_MUTING_THRESHOLD = 0.003f; const float DEFAULT_NOISE_MUTING_THRESHOLD = 0.001f;
const QString AUDIO_MIXER_LOGGING_TARGET_NAME = "audio-mixer"; const QString AUDIO_MIXER_LOGGING_TARGET_NAME = "audio-mixer";
const QString AUDIO_ENV_GROUP_KEY = "audio_env"; const QString AUDIO_ENV_GROUP_KEY = "audio_env";
const QString AUDIO_BUFFER_GROUP_KEY = "audio_buffer"; const QString AUDIO_BUFFER_GROUP_KEY = "audio_buffer";
@ -78,7 +78,7 @@ bool AudioMixer::_printStreamStats = false;
bool AudioMixer::_enableFilter = true; bool AudioMixer::_enableFilter = true;
bool AudioMixer::shouldMute(float quietestFrame, float loudestFrame) { bool AudioMixer::shouldMute(float quietestFrame) {
return (quietestFrame > _noiseMutingThreshold); return (quietestFrame > _noiseMutingThreshold);
} }
@ -142,7 +142,7 @@ int AudioMixer::addStreamToMixForListeningNodeWithStream(AudioMixerClientData* l
} }
// if the stream should be muted, bail // if the stream should be muted, bail
if (shouldMute(streamToAdd->getQuietestTrailingFrameLoudness(), streamToAdd->getLoudestTrailingFrameLoudness())) { if (shouldMute(streamToAdd->getQuietestFrameLoudness())) {
return 0; return 0;
} }

View file

@ -60,7 +60,7 @@ private:
void perSecondActions(); void perSecondActions();
bool shouldMute(float quietestFrame, float loudestFrame); bool shouldMute(float quietestFrame);
QString getReadPendingDatagramsCallsPerSecondsStatsString() const; QString getReadPendingDatagramsCallsPerSecondsStatsString() const;
QString getReadPendingDatagramsPacketsPerCallStatsString() const; QString getReadPendingDatagramsPacketsPerCallStatsString() const;

View file

@ -93,8 +93,8 @@
"name": "noise_muting_threshold", "name": "noise_muting_threshold",
"label": "Noise Muting Threshold", "label": "Noise Muting Threshold",
"help": "Loudness value for noise background between 0 and 1.0 (0: mute everyone, 1.0: never mute)", "help": "Loudness value for noise background between 0 and 1.0 (0: mute everyone, 1.0: never mute)",
"placeholder": "0.003", "placeholder": "0.001",
"default": "0.003", "default": "0.001",
"advanced": false "advanced": false
}, },
{ {

View file

@ -33,7 +33,7 @@ PositionalAudioStream::PositionalAudioStream(PositionalAudioStream::Type type, b
_lastPopOutputTrailingLoudness(0.0f), _lastPopOutputTrailingLoudness(0.0f),
_lastPopOutputLoudness(0.0f), _lastPopOutputLoudness(0.0f),
_quietestTrailingFrameLoudness(std::numeric_limits<float>::max()), _quietestTrailingFrameLoudness(std::numeric_limits<float>::max()),
_loudestTrailingFrameLoudness(0.0f), _quietestFrameLoudness(0.0f),
_frameCounter(0) _frameCounter(0)
{ {
} }
@ -62,16 +62,14 @@ void PositionalAudioStream::updateLastPopOutputLoudnessAndTrailingLoudness() {
} }
} }
if (_frameCounter++ == TRAILING_MUTE_THRESHOLD_FRAMES) { if (_frameCounter++ == TRAILING_MUTE_THRESHOLD_FRAMES) {
_quietestFrameLoudness = _quietestTrailingFrameLoudness;
_frameCounter = 0; _frameCounter = 0;
_quietestTrailingFrameLoudness = std::numeric_limits<float>::max(); _quietestTrailingFrameLoudness = std::numeric_limits<float>::max();
_loudestTrailingFrameLoudness = 0.0f;
} }
if (_lastPopOutputLoudness < _quietestTrailingFrameLoudness) { if (_lastPopOutputLoudness < _quietestTrailingFrameLoudness) {
_quietestTrailingFrameLoudness = _lastPopOutputLoudness; _quietestTrailingFrameLoudness = _lastPopOutputLoudness;
} }
if (_lastPopOutputLoudness > _loudestTrailingFrameLoudness) {
_loudestTrailingFrameLoudness = _lastPopOutputLoudness;
}
} }
int PositionalAudioStream::parsePositionalData(const QByteArray& positionalByteArray) { int PositionalAudioStream::parsePositionalData(const QByteArray& positionalByteArray) {

View file

@ -36,8 +36,7 @@ public:
void updateLastPopOutputLoudnessAndTrailingLoudness(); void updateLastPopOutputLoudnessAndTrailingLoudness();
float getLastPopOutputTrailingLoudness() const { return _lastPopOutputTrailingLoudness; } float getLastPopOutputTrailingLoudness() const { return _lastPopOutputTrailingLoudness; }
float getLastPopOutputLoudness() const { return _lastPopOutputLoudness; } float getLastPopOutputLoudness() const { return _lastPopOutputLoudness; }
float getQuietestTrailingFrameLoudness() const { return _quietestTrailingFrameLoudness; } float getQuietestFrameLoudness() const { return _quietestFrameLoudness; }
float getLoudestTrailingFrameLoudness() const { return _loudestTrailingFrameLoudness; }
bool shouldLoopbackForNode() const { return _shouldLoopbackForNode; } bool shouldLoopbackForNode() const { return _shouldLoopbackForNode; }
bool isStereo() const { return _isStereo; } bool isStereo() const { return _isStereo; }
@ -67,7 +66,7 @@ protected:
float _lastPopOutputTrailingLoudness; float _lastPopOutputTrailingLoudness;
float _lastPopOutputLoudness; float _lastPopOutputLoudness;
float _quietestTrailingFrameLoudness; float _quietestTrailingFrameLoudness;
float _loudestTrailingFrameLoudness; float _quietestFrameLoudness;
int _frameCounter; int _frameCounter;
}; };