Removing AudioMixerStatusReceiver and ParticipantStatistics.
BUG=webrtc:497
R=ajm@chromium.org, andrew@webrtc.org, henrikg@webrtc.org
Review URL: https://codereview.webrtc.org/1216133004 .
Cr-Commit-Position: refs/heads/master@{#9647}
diff --git a/webrtc/modules/audio_conference_mixer/audio_conference_mixer.gypi b/webrtc/modules/audio_conference_mixer/audio_conference_mixer.gypi
index 51ee689..5aa3cc4 100644
--- a/webrtc/modules/audio_conference_mixer/audio_conference_mixer.gypi
+++ b/webrtc/modules/audio_conference_mixer/audio_conference_mixer.gypi
@@ -21,8 +21,6 @@
'interface/audio_conference_mixer_defines.h',
'source/audio_frame_manipulator.cc',
'source/audio_frame_manipulator.h',
- 'source/level_indicator.cc',
- 'source/level_indicator.h',
'source/memory_pool.h',
'source/memory_pool_posix.h',
'source/memory_pool_win.h',
diff --git a/webrtc/modules/audio_conference_mixer/interface/audio_conference_mixer.h b/webrtc/modules/audio_conference_mixer/interface/audio_conference_mixer.h
index b9be6c6..29b957d 100644
--- a/webrtc/modules/audio_conference_mixer/interface/audio_conference_mixer.h
+++ b/webrtc/modules/audio_conference_mixer/interface/audio_conference_mixer.h
@@ -17,7 +17,6 @@
namespace webrtc {
class AudioMixerOutputReceiver;
-class AudioMixerStatusReceiver;
class MixerParticipant;
class Trace;
@@ -48,12 +47,6 @@
AudioMixerOutputReceiver& receiver) = 0;
virtual int32_t UnRegisterMixedStreamCallback() = 0;
- // Register/unregister a callback class for receiving status information.
- virtual int32_t RegisterMixerStatusCallback(
- AudioMixerStatusReceiver& mixerStatusCallback,
- const uint32_t amountOf10MsBetweenCallbacks) = 0;
- virtual int32_t UnRegisterMixerStatusCallback() = 0;
-
// Add/remove participants as candidates for mixing.
virtual int32_t SetMixabilityStatus(MixerParticipant& participant,
bool mixable) = 0;
diff --git a/webrtc/modules/audio_conference_mixer/interface/audio_conference_mixer_defines.h b/webrtc/modules/audio_conference_mixer/interface/audio_conference_mixer_defines.h
index 663be18..784f63a 100644
--- a/webrtc/modules/audio_conference_mixer/interface/audio_conference_mixer_defines.h
+++ b/webrtc/modules/audio_conference_mixer/interface/audio_conference_mixer_defines.h
@@ -40,38 +40,6 @@
virtual ~MixerParticipant();
};
-// Container struct for participant statistics.
-struct ParticipantStatistics
-{
- int32_t participant;
- int32_t level;
-};
-
-class AudioMixerStatusReceiver
-{
-public:
- // Callback function that provides an array of ParticipantStatistics for the
- // participants that were mixed last mix iteration.
- virtual void MixedParticipants(
- const int32_t id,
- const ParticipantStatistics* participantStatistics,
- const uint32_t size) = 0;
- // Callback function that provides an array of the ParticipantStatistics for
- // the participants that had a positiv VAD last mix iteration.
- virtual void VADPositiveParticipants(
- const int32_t id,
- const ParticipantStatistics* participantStatistics,
- const uint32_t size) = 0;
- // Callback function that provides the audio level of the mixed audio frame
- // from the last mix iteration.
- virtual void MixedAudioLevel(
- const int32_t id,
- const uint32_t level) = 0;
-protected:
- AudioMixerStatusReceiver() {}
- virtual ~AudioMixerStatusReceiver() {}
-};
-
class AudioMixerOutputReceiver
{
public:
diff --git a/webrtc/modules/audio_conference_mixer/source/audio_conference_mixer_impl.cc b/webrtc/modules/audio_conference_mixer/source/audio_conference_mixer_impl.cc
index 3ee2a08..ad491fb 100644
--- a/webrtc/modules/audio_conference_mixer/source/audio_conference_mixer_impl.cc
+++ b/webrtc/modules/audio_conference_mixer/source/audio_conference_mixer_impl.cc
@@ -60,12 +60,6 @@
return max_num_channels;
}
-void SetParticipantStatistics(ParticipantStatistics* stats,
- const AudioFrame& frame) {
- stats->participant = frame.id_;
- stats->level = 0; // TODO(andrew): to what should this be set?
-}
-
} // namespace
MixerParticipant::MixerParticipant()
@@ -117,17 +111,9 @@
}
AudioConferenceMixerImpl::AudioConferenceMixerImpl(int id)
- : _scratchParticipantsToMixAmount(0),
- _scratchMixedParticipants(),
- _scratchVadPositiveParticipantsAmount(0),
- _scratchVadPositiveParticipants(),
- _id(id),
+ : _id(id),
_minimumMixingFreq(kLowestPossible),
_mixReceiver(NULL),
- _mixerStatusCallback(NULL),
- _amountOf10MsBetweenCallbacks(1),
- _amountOf10MsUntilNextCallback(0),
- _mixerStatusCb(false),
_outputFrequency(kDefaultFrequency),
_sampleSize(0),
_audioFramePool(NULL),
@@ -137,7 +123,6 @@
use_limiter_(true),
_timeStamp(0),
_timeScheduler(kProcessPeriodicityInMs),
- _mixedAudioLevel(),
_processCalls(0) {}
bool AudioConferenceMixerImpl::Init() {
@@ -275,7 +260,6 @@
GetAdditionalAudio(&additionalFramesList);
UpdateMixedStatus(mixedParticipantsMap);
- _scratchParticipantsToMixAmount = mixedParticipantsMap.size();
}
// Get an AudioFrame for mixing from the memory pool.
@@ -287,9 +271,7 @@
return -1;
}
- bool timeForMixerCallback = false;
int retval = 0;
- int32_t audioLevel = 0;
{
CriticalSectionScoped cs(_crit.get());
@@ -325,18 +307,6 @@
if(!LimitMixedAudio(*mixedAudio))
retval = -1;
}
-
- _mixedAudioLevel.ComputeLevel(mixedAudio->data_,_sampleSize);
- audioLevel = _mixedAudioLevel.GetLevel();
-
- if(_mixerStatusCb) {
- _scratchVadPositiveParticipantsAmount = 0;
- UpdateVADPositiveParticipants(&mixList);
- if(_amountOf10MsUntilNextCallback-- == 0) {
- _amountOf10MsUntilNextCallback = _amountOf10MsBetweenCallbacks;
- timeForMixerCallback = true;
- }
- }
}
{
@@ -349,20 +319,6 @@
dummy,
0);
}
-
- if((_mixerStatusCallback != NULL) &&
- timeForMixerCallback) {
- _mixerStatusCallback->MixedParticipants(
- _id,
- _scratchMixedParticipants,
- static_cast<uint32_t>(_scratchParticipantsToMixAmount));
-
- _mixerStatusCallback->VADPositiveParticipants(
- _id,
- _scratchVadPositiveParticipants,
- _scratchVadPositiveParticipantsAmount);
- _mixerStatusCallback->MixedAudioLevel(_id,audioLevel);
- }
}
// Reclaim all outstanding memory.
@@ -412,53 +368,6 @@
return _outputFrequency;
}
-int32_t AudioConferenceMixerImpl::RegisterMixerStatusCallback(
- AudioMixerStatusReceiver& mixerStatusCallback,
- const uint32_t amountOf10MsBetweenCallbacks) {
- if(amountOf10MsBetweenCallbacks == 0) {
- WEBRTC_TRACE(
- kTraceWarning,
- kTraceAudioMixerServer,
- _id,
- "amountOf10MsBetweenCallbacks(%d) needs to be larger than 0");
- return -1;
- }
- {
- CriticalSectionScoped cs(_cbCrit.get());
- if(_mixerStatusCallback != NULL) {
- WEBRTC_TRACE(kTraceWarning, kTraceAudioMixerServer, _id,
- "Mixer status callback already registered");
- return -1;
- }
- _mixerStatusCallback = &mixerStatusCallback;
- }
- {
- CriticalSectionScoped cs(_crit.get());
- _amountOf10MsBetweenCallbacks = amountOf10MsBetweenCallbacks;
- _amountOf10MsUntilNextCallback = 0;
- _mixerStatusCb = true;
- }
- return 0;
-}
-
-int32_t AudioConferenceMixerImpl::UnRegisterMixerStatusCallback() {
- {
- CriticalSectionScoped cs(_crit.get());
- if(!_mixerStatusCb)
- {
- WEBRTC_TRACE(kTraceWarning, kTraceAudioMixerServer, _id,
- "Mixer status callback not registered");
- return -1;
- }
- _mixerStatusCb = false;
- }
- {
- CriticalSectionScoped cs(_cbCrit.get());
- _mixerStatusCallback = NULL;
- }
- return 0;
-}
-
int32_t AudioConferenceMixerImpl::SetMixabilityStatus(
MixerParticipant& participant,
bool mixable) {
@@ -886,15 +795,6 @@
iter != mixList->end();
++iter) {
CalculateEnergy(**iter);
- if((*iter)->vad_activity_ == AudioFrame::kVadActive) {
- _scratchVadPositiveParticipants[
- _scratchVadPositiveParticipantsAmount].participant =
- (*iter)->id_;
- // TODO(andrew): to what should this be set?
- _scratchVadPositiveParticipants[
- _scratchVadPositiveParticipantsAmount].level = 0;
- _scratchVadPositiveParticipantsAmount++;
- }
}
}
@@ -977,9 +877,6 @@
}
MixFrames(&mixedAudio, (*iter), use_limiter_);
- SetParticipantStatistics(&_scratchMixedParticipants[position],
- **iter);
-
position++;
}
diff --git a/webrtc/modules/audio_conference_mixer/source/audio_conference_mixer_impl.h b/webrtc/modules/audio_conference_mixer/source/audio_conference_mixer_impl.h
index b1a812a..2e02448 100644
--- a/webrtc/modules/audio_conference_mixer/source/audio_conference_mixer_impl.h
+++ b/webrtc/modules/audio_conference_mixer/source/audio_conference_mixer_impl.h
@@ -17,7 +17,6 @@
#include "webrtc/base/scoped_ptr.h"
#include "webrtc/engine_configurations.h"
#include "webrtc/modules/audio_conference_mixer/interface/audio_conference_mixer.h"
-#include "webrtc/modules/audio_conference_mixer/source/level_indicator.h"
#include "webrtc/modules/audio_conference_mixer/source/memory_pool.h"
#include "webrtc/modules/audio_conference_mixer/source/time_scheduler.h"
#include "webrtc/modules/interface/module_common_types.h"
@@ -71,10 +70,6 @@
int32_t RegisterMixedStreamCallback(
AudioMixerOutputReceiver& mixReceiver) override;
int32_t UnRegisterMixedStreamCallback() override;
- int32_t RegisterMixerStatusCallback(
- AudioMixerStatusReceiver& mixerStatusCallback,
- const uint32_t amountOf10MsBetweenCallbacks) override;
- int32_t UnRegisterMixerStatusCallback() override;
int32_t SetMixabilityStatus(MixerParticipant& participant,
bool mixable) override;
int32_t MixabilityStatus(MixerParticipant& participant,
@@ -93,8 +88,7 @@
Frequency OutputFrequency() const;
// Fills mixList with the AudioFrames pointers that should be used when
- // mixing. Fills mixParticipantList with ParticipantStatistics for the
- // participants who's AudioFrames are inside mixList.
+ // mixing.
// maxAudioFrameCounter both input and output specifies how many more
// AudioFrames that are allowed to be mixed.
// rampOutList contain AudioFrames corresponding to an audio stream that
@@ -154,16 +148,6 @@
bool LimitMixedAudio(AudioFrame& mixedAudio);
- // Scratch memory
- // Note that the scratch memory may only be touched in the scope of
- // Process().
- size_t _scratchParticipantsToMixAmount;
- ParticipantStatistics _scratchMixedParticipants[
- kMaximumAmountOfMixedParticipants];
- uint32_t _scratchVadPositiveParticipantsAmount;
- ParticipantStatistics _scratchVadPositiveParticipants[
- kMaximumAmountOfMixedParticipants];
-
rtc::scoped_ptr<CriticalSectionWrapper> _crit;
rtc::scoped_ptr<CriticalSectionWrapper> _cbCrit;
@@ -174,11 +158,6 @@
// Mix result callback
AudioMixerOutputReceiver* _mixReceiver;
- AudioMixerStatusReceiver* _mixerStatusCallback;
- uint32_t _amountOf10MsBetweenCallbacks;
- uint32_t _amountOf10MsUntilNextCallback;
- bool _mixerStatusCb;
-
// The current sample frequency and sample size when mixing.
Frequency _outputFrequency;
uint16_t _sampleSize;
@@ -201,9 +180,6 @@
// Metronome class.
TimeScheduler _timeScheduler;
- // Smooth level indicator.
- LevelIndicator _mixedAudioLevel;
-
// Counter keeping track of concurrent calls to process.
// Note: should never be higher than 1 or lower than 0.
int16_t _processCalls;
diff --git a/webrtc/modules/audio_conference_mixer/source/level_indicator.cc b/webrtc/modules/audio_conference_mixer/source/level_indicator.cc
deleted file mode 100644
index 3c573d4..0000000
--- a/webrtc/modules/audio_conference_mixer/source/level_indicator.cc
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/modules/audio_conference_mixer/source/level_indicator.h"
-
-namespace webrtc {
-// Array for adding smothing to level changes (ad-hoc).
-const uint32_t perm[] =
- {0,1,2,3,4,4,5,5,5,5,6,6,6,6,6,7,7,7,7,8,8,8,9,9,9,9,9,9,9,9,9,9,9};
-
-LevelIndicator::LevelIndicator()
- : _max(0),
- _count(0),
- _currentLevel(0)
-{
-}
-
-LevelIndicator::~LevelIndicator()
-{
-}
-
-// Level is based on the highest absolute value for all samples.
-void LevelIndicator::ComputeLevel(const int16_t* speech,
- const uint16_t nrOfSamples)
-{
- int32_t min = 0;
- for(uint32_t i = 0; i < nrOfSamples; i++)
- {
- if(_max < speech[i])
- {
- _max = speech[i];
- }
- if(min > speech[i])
- {
- min = speech[i];
- }
- }
-
- // Absolute max value.
- if(-min > _max)
- {
- _max = -min;
- }
-
- if(_count == TICKS_BEFORE_CALCULATION)
- {
- // Highest sample value maps directly to a level.
- int32_t position = _max / 1000;
- if ((position == 0) &&
- (_max > 250))
- {
- position = 1;
- }
- _currentLevel = perm[position];
- // The max value is decayed and stored so that it can be reused to slow
- // down decreases in level.
- _max = _max >> 1;
- _count = 0;
- } else {
- _count++;
- }
-}
-
-int32_t LevelIndicator::GetLevel()
-{
- return _currentLevel;
-}
-
-} // namespace webrtc
diff --git a/webrtc/modules/audio_conference_mixer/source/level_indicator.h b/webrtc/modules/audio_conference_mixer/source/level_indicator.h
deleted file mode 100644
index b0e87ff..0000000
--- a/webrtc/modules/audio_conference_mixer/source/level_indicator.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef WEBRTC_MODULES_AUDIO_CONFERENCE_MIXER_SOURCE_LEVEL_INDICATOR_H_
-#define WEBRTC_MODULES_AUDIO_CONFERENCE_MIXER_SOURCE_LEVEL_INDICATOR_H_
-
-#include "webrtc/typedefs.h"
-
-namespace webrtc {
-class LevelIndicator
-{
-public:
- enum{TICKS_BEFORE_CALCULATION = 10};
-
- LevelIndicator();
- ~LevelIndicator();
-
- // Updates the level.
- void ComputeLevel(const int16_t* speech,
- const uint16_t nrOfSamples);
-
- int32_t GetLevel();
-private:
- int32_t _max;
- uint32_t _count;
- uint32_t _currentLevel;
-};
-} // namespace webrtc
-
-#endif // WEBRTC_MODULES_AUDIO_CONFERENCE_MIXER_SOURCE_LEVEL_INDICATOR_H_
diff --git a/webrtc/voice_engine/output_mixer.cc b/webrtc/voice_engine/output_mixer.cc
index 7cf98d3..f065f79 100644
--- a/webrtc/voice_engine/output_mixer.cc
+++ b/webrtc/voice_engine/output_mixer.cc
@@ -35,29 +35,6 @@
_audioFrame.id_ = id;
}
-void OutputMixer::MixedParticipants(
- int32_t id,
- const ParticipantStatistics* participantStatistics,
- uint32_t size)
-{
- WEBRTC_TRACE(kTraceStream, kTraceVoice, VoEId(_instanceId,-1),
- "OutputMixer::MixedParticipants(id=%d, size=%u)", id, size);
-}
-
-void OutputMixer::VADPositiveParticipants(int32_t id,
- const ParticipantStatistics* participantStatistics, uint32_t size)
-{
- WEBRTC_TRACE(kTraceStream, kTraceVoice, VoEId(_instanceId,-1),
- "OutputMixer::VADPositiveParticipants(id=%d, size=%u)",
- id, size);
-}
-
-void OutputMixer::MixedAudioLevel(int32_t id, uint32_t level)
-{
- WEBRTC_TRACE(kTraceStream, kTraceVoice, VoEId(_instanceId,-1),
- "OutputMixer::MixedAudioLevel(id=%d, level=%u)", id, level);
-}
-
void OutputMixer::PlayNotification(int32_t id, uint32_t durationMs)
{
WEBRTC_TRACE(kTraceStream, kTraceVoice, VoEId(_instanceId,-1),
@@ -131,8 +108,7 @@
WEBRTC_TRACE(kTraceMemory, kTraceVoice, VoEId(_instanceId,-1),
"OutputMixer::OutputMixer() - ctor");
- if ((_mixerModule.RegisterMixedStreamCallback(*this) == -1) ||
- (_mixerModule.RegisterMixerStatusCallback(*this, 100) == -1))
+ if (_mixerModule.RegisterMixedStreamCallback(*this) == -1)
{
WEBRTC_TRACE(kTraceError, kTraceVoice, VoEId(_instanceId,-1),
"OutputMixer::OutputMixer() failed to register mixer"
@@ -170,7 +146,6 @@
_outputFileRecorderPtr = NULL;
}
}
- _mixerModule.UnRegisterMixerStatusCallback();
_mixerModule.UnRegisterMixedStreamCallback();
delete &_mixerModule;
delete &_callbackCritSect;
diff --git a/webrtc/voice_engine/output_mixer.h b/webrtc/voice_engine/output_mixer.h
index e5c65e4..fab5a16 100644
--- a/webrtc/voice_engine/output_mixer.h
+++ b/webrtc/voice_engine/output_mixer.h
@@ -32,7 +32,6 @@
class Statistics;
class OutputMixer : public AudioMixerOutputReceiver,
- public AudioMixerStatusReceiver,
public FileCallback
{
public:
@@ -93,19 +92,6 @@
const AudioFrame** uniqueAudioFrames,
uint32_t size);
- // from AudioMixerStatusReceiver
- virtual void MixedParticipants(
- int32_t id,
- const ParticipantStatistics* participantStatistics,
- uint32_t size);
-
- virtual void VADPositiveParticipants(
- int32_t id,
- const ParticipantStatistics* participantStatistics,
- uint32_t size);
-
- virtual void MixedAudioLevel(int32_t id, uint32_t level);
-
// For file recording
void PlayNotification(int32_t id, uint32_t durationMs);