Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(38)

Unified Diff: webrtc/modules/audio_conference_mixer/source/audio_conference_mixer_impl.cc

Issue 1311733003: Stylizing AudioConferenceMixer. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webrtc/modules/audio_conference_mixer/source/audio_conference_mixer_impl.cc
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 490fe58e9979d1e88dc031f7a77beb35cd55b527..45a45400d68a47a22bacb417f614a0e1e76161e6 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
@@ -70,7 +70,7 @@ MixerParticipant::~MixerParticipant() {
delete _mixHistory;
}
-int32_t MixerParticipant::IsMixed(bool& mixed) const {
+int32_t MixerParticipant::IsMixed(bool* mixed) const {
return _mixHistory->IsMixed(mixed);
}
@@ -81,12 +81,12 @@ MixHistory::MixHistory()
MixHistory::~MixHistory() {
}
-int32_t MixHistory::IsMixed(bool& mixed) const {
- mixed = _isMixed;
+int32_t MixHistory::IsMixed(bool* mixed) const {
+ *mixed = _isMixed;
return 0;
}
-int32_t MixHistory::WasMixed(bool& wasMixed) const {
+int32_t MixHistory::WasMixed(bool* wasMixed) const {
// Was mixed is the same as is mixed depending on perspective. This function
// is for the perspective of AudioConferenceMixerImpl.
return IsMixed(wasMixed);
@@ -256,7 +256,7 @@ int32_t AudioConferenceMixerImpl::Process() {
}
UpdateToMix(&mixList, &rampOutList, &mixedParticipantsMap,
- remainingParticipantsAllowedToMix);
+ &remainingParticipantsAllowedToMix);
GetAdditionalAudio(&additionalFramesList);
UpdateMixedStatus(mixedParticipantsMap);
@@ -294,9 +294,9 @@ int32_t AudioConferenceMixerImpl::Process() {
use_limiter_ = _numMixedParticipants > 1 &&
_outputFrequency <= kAudioProcMaxNativeSampleRateHz;
- MixFromList(*mixedAudio, &mixList);
- MixAnonomouslyFromList(*mixedAudio, &additionalFramesList);
- MixAnonomouslyFromList(*mixedAudio, &rampOutList);
+ MixFromList(mixedAudio, &mixList);
+ MixAnonomouslyFromList(mixedAudio, &additionalFramesList);
+ MixAnonomouslyFromList(mixedAudio, &rampOutList);
if(mixedAudio->samples_per_channel_ == 0) {
// Nothing was mixed, set the audio samples to silence.
@@ -304,7 +304,7 @@ int32_t AudioConferenceMixerImpl::Process() {
mixedAudio->Mute();
} else {
// Only call the limiter if we have something to mix.
- if(!LimitMixedAudio(*mixedAudio))
+ if(!LimitMixedAudio(mixedAudio))
retval = -1;
}
}
@@ -334,12 +334,12 @@ int32_t AudioConferenceMixerImpl::Process() {
}
int32_t AudioConferenceMixerImpl::RegisterMixedStreamCallback(
- AudioMixerOutputReceiver& mixReceiver) {
+ AudioMixerOutputReceiver* mixReceiver) {
CriticalSectionScoped cs(_cbCrit.get());
if(_mixReceiver != NULL) {
return -1;
}
- _mixReceiver = &mixReceiver;
+ _mixReceiver = mixReceiver;
return 0;
}
@@ -353,7 +353,7 @@ int32_t AudioConferenceMixerImpl::UnRegisterMixedStreamCallback() {
}
int32_t AudioConferenceMixerImpl::SetOutputFrequency(
- const Frequency frequency) {
+ const Frequency& frequency) {
CriticalSectionScoped cs(_crit.get());
_outputFrequency = frequency;
@@ -370,8 +370,7 @@ AudioConferenceMixerImpl::OutputFrequency() const {
}
int32_t AudioConferenceMixerImpl::SetMixabilityStatus(
- MixerParticipant& participant,
- bool mixable) {
+ MixerParticipant* participant, bool mixable) {
if (!mixable) {
// Anonymous participants are in a separate list. Make sure that the
// participant is in the _participantList if it is being mixed.
@@ -381,7 +380,7 @@ int32_t AudioConferenceMixerImpl::SetMixabilityStatus(
{
CriticalSectionScoped cs(_cbCrit.get());
const bool isMixed =
- IsParticipantInList(participant, &_participantList);
+ IsParticipantInList(*participant, &_participantList);
// API must be called with a new state.
if(!(mixable ^ isMixed)) {
WEBRTC_TRACE(kTraceWarning, kTraceAudioMixerServer, _id,
@@ -419,17 +418,16 @@ int32_t AudioConferenceMixerImpl::SetMixabilityStatus(
}
int32_t AudioConferenceMixerImpl::MixabilityStatus(
- MixerParticipant& participant,
- bool& mixable) {
+ const MixerParticipant& participant, bool* mixable) const {
CriticalSectionScoped cs(_cbCrit.get());
- mixable = IsParticipantInList(participant, &_participantList);
+ *mixable = IsParticipantInList(participant, &_participantList);
return 0;
}
int32_t AudioConferenceMixerImpl::SetAnonymousMixabilityStatus(
- MixerParticipant& participant, const bool anonymous) {
+ MixerParticipant* participant, bool anonymous) {
CriticalSectionScoped cs(_cbCrit.get());
- if(IsParticipantInList(participant, &_additionalParticipantList)) {
+ if(IsParticipantInList(*participant, &_additionalParticipantList)) {
if(anonymous) {
return 0;
}
@@ -462,10 +460,10 @@ int32_t AudioConferenceMixerImpl::SetAnonymousMixabilityStatus(
}
int32_t AudioConferenceMixerImpl::AnonymousMixabilityStatus(
- MixerParticipant& participant, bool& mixable) {
+ const MixerParticipant& participant, bool* mixable) const {
CriticalSectionScoped cs(_cbCrit.get());
- mixable = IsParticipantInList(participant,
- &_additionalParticipantList);
+ *mixable = IsParticipantInList(participant,
+ &_additionalParticipantList);
return 0;
}
@@ -493,7 +491,7 @@ int32_t AudioConferenceMixerImpl::SetMinimumMixingFrequency(
// Check all AudioFrames that are to be mixed. The highest sampling frequency
// found is the lowest that can be used without losing information.
-int32_t AudioConferenceMixerImpl::GetLowestMixingFrequency() {
+int32_t AudioConferenceMixerImpl::GetLowestMixingFrequency() const {
const int participantListFrequency =
GetLowestMixingFrequencyFromList(&_participantList);
const int anonymousListFrequency =
@@ -511,9 +509,9 @@ int32_t AudioConferenceMixerImpl::GetLowestMixingFrequency() {
}
int32_t AudioConferenceMixerImpl::GetLowestMixingFrequencyFromList(
- MixerParticipantList* mixList) {
+ const MixerParticipantList* mixList) const {
int32_t highestFreq = 8000;
- for (MixerParticipantList::iterator iter = mixList->begin();
+ for (MixerParticipantList::const_iterator iter = mixList->begin();
Andrew MacDonald 2015/08/26 15:56:01 You should be able to use range based for loops in
Andrew MacDonald 2015/08/28 18:33:20 No change necessary, just wanted to make sure you
iter != mixList->end();
++iter) {
const int32_t neededFrequency = (*iter)->NeededFrequency(_id);
@@ -528,28 +526,28 @@ void AudioConferenceMixerImpl::UpdateToMix(
AudioFrameList* mixList,
AudioFrameList* rampOutList,
std::map<int, MixerParticipant*>* mixParticipantList,
- size_t& maxAudioFrameCounter) {
+ size_t* maxAudioFrameCounter) const {
WEBRTC_TRACE(kTraceStream, kTraceAudioMixerServer, _id,
"UpdateToMix(mixList,rampOutList,mixParticipantList,%d)",
- maxAudioFrameCounter);
+ *maxAudioFrameCounter);
const size_t mixListStartSize = mixList->size();
AudioFrameList activeList;
// Struct needed by the passive lists to keep track of which AudioFrame
// belongs to which MixerParticipant.
ParticipantFramePairList passiveWasNotMixedList;
ParticipantFramePairList passiveWasMixedList;
- for (MixerParticipantList::iterator participant = _participantList.begin();
- participant != _participantList.end();
+ for (MixerParticipantList::const_iterator participant =
+ _participantList.begin(); participant != _participantList.end();
++participant) {
// Stop keeping track of passive participants if there are already
// enough participants available (they wont be mixed anyway).
- bool mustAddToPassiveList = (maxAudioFrameCounter >
+ bool mustAddToPassiveList = (*maxAudioFrameCounter >
(activeList.size() +
passiveWasMixedList.size() +
passiveWasNotMixedList.size()));
bool wasMixed = false;
- (*participant)->_mixHistory->WasMixed(wasMixed);
+ (*participant)->_mixHistory->WasMixed(&wasMixed);
AudioFrame* audioFrame = NULL;
if(_audioFramePool->PopMemory(audioFrame) == -1) {
WEBRTC_TRACE(kTraceMemory, kTraceAudioMixerServer, _id,
@@ -559,7 +557,7 @@ void AudioConferenceMixerImpl::UpdateToMix(
}
audioFrame->sample_rate_hz_ = _outputFrequency;
- if((*participant)->GetAudioFrame(_id,*audioFrame) != 0) {
+ if((*participant)->GetAudioFrame(_id, audioFrame) != 0) {
WEBRTC_TRACE(kTraceWarning, kTraceAudioMixerServer, _id,
"failed to GetAudioFrame() from participant");
_audioFramePool->PushMemory(audioFrame);
@@ -584,7 +582,7 @@ void AudioConferenceMixerImpl::UpdateToMix(
RampIn(*audioFrame);
}
- if(activeList.size() >= maxAudioFrameCounter) {
+ if(activeList.size() >= *maxAudioFrameCounter) {
// There are already more active participants than should be
// mixed. Only keep the ones with the highest energy.
AudioFrameList::iterator replaceItem;
@@ -606,14 +604,14 @@ void AudioConferenceMixerImpl::UpdateToMix(
AudioFrame* replaceFrame = *replaceItem;
bool replaceWasMixed = false;
- std::map<int, MixerParticipant*>::iterator it =
+ std::map<int, MixerParticipant*>::const_iterator it =
mixParticipantList->find(replaceFrame->id_);
// When a frame is pushed to |activeList| it is also pushed
// to mixParticipantList with the frame's id. This means
// that the Find call above should never fail.
assert(it != mixParticipantList->end());
- it->second->_mixHistory->WasMixed(replaceWasMixed);
+ it->second->_mixHistory->WasMixed(&replaceWasMixed);
mixParticipantList->erase(replaceFrame->id_);
activeList.erase(replaceItem);
@@ -664,10 +662,10 @@ void AudioConferenceMixerImpl::UpdateToMix(
}
}
}
- assert(activeList.size() <= maxAudioFrameCounter);
+ assert(activeList.size() <= *maxAudioFrameCounter);
// At this point it is known which participants should be mixed. Transfer
// this information to this functions output parameters.
- for (AudioFrameList::iterator iter = activeList.begin();
+ for (AudioFrameList::const_iterator iter = activeList.begin();
iter != activeList.end();
++iter) {
mixList->push_back(*iter);
@@ -676,10 +674,10 @@ void AudioConferenceMixerImpl::UpdateToMix(
// Always mix a constant number of AudioFrames. If there aren't enough
// active participants mix passive ones. Starting with those that was mixed
// last iteration.
- for (ParticipantFramePairList::iterator iter = passiveWasMixedList.begin();
- iter != passiveWasMixedList.end();
+ for (ParticipantFramePairList::const_iterator
+ iter = passiveWasMixedList.begin(); iter != passiveWasMixedList.end();
++iter) {
- if(mixList->size() < maxAudioFrameCounter + mixListStartSize) {
+ if(mixList->size() < *maxAudioFrameCounter + mixListStartSize) {
mixList->push_back((*iter)->audioFrame);
(*mixParticipantList)[(*iter)->audioFrame->id_] =
(*iter)->participant;
@@ -691,11 +689,11 @@ void AudioConferenceMixerImpl::UpdateToMix(
delete *iter;
}
// And finally the ones that have not been mixed for a while.
- for (ParticipantFramePairList::iterator iter =
+ for (ParticipantFramePairList::const_iterator iter =
passiveWasNotMixedList.begin();
iter != passiveWasNotMixedList.end();
++iter) {
- if(mixList->size() < maxAudioFrameCounter + mixListStartSize) {
+ if(mixList->size() < *maxAudioFrameCounter + mixListStartSize) {
mixList->push_back((*iter)->audioFrame);
(*mixParticipantList)[(*iter)->audioFrame->id_] =
(*iter)->participant;
@@ -706,12 +704,12 @@ void AudioConferenceMixerImpl::UpdateToMix(
}
delete *iter;
}
- assert(maxAudioFrameCounter + mixListStartSize >= mixList->size());
- maxAudioFrameCounter += mixListStartSize - mixList->size();
+ assert(*maxAudioFrameCounter + mixListStartSize >= mixList->size());
+ *maxAudioFrameCounter += mixListStartSize - mixList->size();
}
void AudioConferenceMixerImpl::GetAdditionalAudio(
- AudioFrameList* additionalFramesList) {
+ AudioFrameList* additionalFramesList) const {
WEBRTC_TRACE(kTraceStream, kTraceAudioMixerServer, _id,
"GetAdditionalAudio(additionalFramesList)");
// The GetAudioFrame() callback may result in the participant being removed
@@ -723,7 +721,7 @@ void AudioConferenceMixerImpl::GetAdditionalAudio(
_additionalParticipantList.begin(),
_additionalParticipantList.end());
- for (MixerParticipantList::iterator participant =
+ for (MixerParticipantList::const_iterator participant =
additionalParticipantList.begin();
participant != additionalParticipantList.end();
++participant) {
@@ -735,7 +733,7 @@ void AudioConferenceMixerImpl::GetAdditionalAudio(
return;
}
audioFrame->sample_rate_hz_ = _outputFrequency;
- if((*participant)->GetAudioFrame(_id, *audioFrame) != 0) {
+ if((*participant)->GetAudioFrame(_id, audioFrame) != 0) {
WEBRTC_TRACE(kTraceWarning, kTraceAudioMixerServer, _id,
"failed to GetAudioFrame() from participant");
_audioFramePool->PushMemory(audioFrame);
@@ -751,18 +749,19 @@ void AudioConferenceMixerImpl::GetAdditionalAudio(
}
void AudioConferenceMixerImpl::UpdateMixedStatus(
- std::map<int, MixerParticipant*>& mixedParticipantsMap) {
+ const std::map<int, MixerParticipant*>& mixedParticipantsMap) const {
WEBRTC_TRACE(kTraceStream, kTraceAudioMixerServer, _id,
"UpdateMixedStatus(mixedParticipantsMap)");
assert(mixedParticipantsMap.size() <= kMaximumAmountOfMixedParticipants);
// Loop through all participants. If they are in the mix map they
// were mixed.
- for (MixerParticipantList::iterator participant = _participantList.begin();
- participant != _participantList.end();
+ for (MixerParticipantList::const_iterator
+ participant =_participantList.begin();
+ participant != _participantList.end();
++participant) {
bool isMixed = false;
- for (std::map<int, MixerParticipant*>::iterator it =
+ for (std::map<int, MixerParticipant*>::const_iterator it =
mixedParticipantsMap.begin();
it != mixedParticipantsMap.end();
++it) {
@@ -776,7 +775,7 @@ void AudioConferenceMixerImpl::UpdateMixedStatus(
}
void AudioConferenceMixerImpl::ClearAudioFrameList(
- AudioFrameList* audioFrameList) {
+ AudioFrameList* audioFrameList) const {
WEBRTC_TRACE(kTraceStream, kTraceAudioMixerServer, _id,
"ClearAudioFrameList(audioFrameList)");
for (AudioFrameList::iterator iter = audioFrameList->begin();
@@ -788,11 +787,11 @@ void AudioConferenceMixerImpl::ClearAudioFrameList(
}
void AudioConferenceMixerImpl::UpdateVADPositiveParticipants(
- AudioFrameList* mixList) {
+ AudioFrameList* mixList) const {
WEBRTC_TRACE(kTraceStream, kTraceAudioMixerServer, _id,
"UpdateVADPositiveParticipants(mixList)");
- for (AudioFrameList::iterator iter = mixList->begin();
+ for (AudioFrameList::const_iterator iter = mixList->begin();
iter != mixList->end();
++iter) {
CalculateEnergy(**iter);
@@ -800,8 +799,8 @@ void AudioConferenceMixerImpl::UpdateVADPositiveParticipants(
}
bool AudioConferenceMixerImpl::IsParticipantInList(
- MixerParticipant& participant,
- MixerParticipantList* participantList) const {
+ const MixerParticipant& participant,
+ const MixerParticipantList* participantList) const {
WEBRTC_TRACE(kTraceStream, kTraceAudioMixerServer, _id,
"IsParticipantInList(participant,participantList)");
for (MixerParticipantList::const_iterator iter = participantList->begin();
@@ -815,28 +814,28 @@ bool AudioConferenceMixerImpl::IsParticipantInList(
}
bool AudioConferenceMixerImpl::AddParticipantToList(
- MixerParticipant& participant,
- MixerParticipantList* participantList) {
+ MixerParticipant* participant,
+ MixerParticipantList* participantList) const {
WEBRTC_TRACE(kTraceStream, kTraceAudioMixerServer, _id,
"AddParticipantToList(participant, participantList)");
- participantList->push_back(&participant);
+ participantList->push_back(participant);
// Make sure that the mixed status is correct for new MixerParticipant.
- participant._mixHistory->ResetMixedStatus();
+ participant->_mixHistory->ResetMixedStatus();
return true;
}
bool AudioConferenceMixerImpl::RemoveParticipantFromList(
- MixerParticipant& participant,
- MixerParticipantList* participantList) {
+ MixerParticipant* participant,
+ MixerParticipantList* participantList) const {
WEBRTC_TRACE(kTraceStream, kTraceAudioMixerServer, _id,
"RemoveParticipantFromList(participant, participantList)");
for (MixerParticipantList::iterator iter = participantList->begin();
iter != participantList->end();
++iter) {
- if(*iter == &participant) {
+ if(*iter == participant) {
participantList->erase(iter);
// Participant is no longer mixed, reset to default.
- participant._mixHistory->ResetMixedStatus();
+ participant->_mixHistory->ResetMixedStatus();
return true;
}
}
@@ -844,8 +843,8 @@ bool AudioConferenceMixerImpl::RemoveParticipantFromList(
}
int32_t AudioConferenceMixerImpl::MixFromList(
- AudioFrame& mixedAudio,
- const AudioFrameList* audioFrameList) {
+ AudioFrame* mixedAudio,
+ const AudioFrameList* audioFrameList) const {
WEBRTC_TRACE(kTraceStream, kTraceAudioMixerServer, _id,
"MixFromList(mixedAudio, audioFrameList)");
if(audioFrameList->empty()) return 0;
@@ -853,13 +852,13 @@ int32_t AudioConferenceMixerImpl::MixFromList(
uint32_t position = 0;
if (_numMixedParticipants == 1) {
- mixedAudio.timestamp_ = audioFrameList->front()->timestamp_;
- mixedAudio.elapsed_time_ms_ = audioFrameList->front()->elapsed_time_ms_;
+ mixedAudio->timestamp_ = audioFrameList->front()->timestamp_;
+ mixedAudio->elapsed_time_ms_ = audioFrameList->front()->elapsed_time_ms_;
} else {
// TODO(wu): Issue 3390.
// Audio frame timestamp is only supported in one channel case.
- mixedAudio.timestamp_ = 0;
- mixedAudio.elapsed_time_ms_ = -1;
+ mixedAudio->timestamp_ = 0;
+ mixedAudio->elapsed_time_ms_ = -1;
}
for (AudioFrameList::const_iterator iter = audioFrameList->begin();
@@ -876,7 +875,7 @@ int32_t AudioConferenceMixerImpl::MixFromList(
assert(false);
position = 0;
}
- MixFrames(&mixedAudio, (*iter), use_limiter_);
+ MixFrames(mixedAudio, (*iter), use_limiter_);
position++;
}
@@ -886,8 +885,8 @@ int32_t AudioConferenceMixerImpl::MixFromList(
// TODO(andrew): consolidate this function with MixFromList.
int32_t AudioConferenceMixerImpl::MixAnonomouslyFromList(
- AudioFrame& mixedAudio,
- const AudioFrameList* audioFrameList) {
+ AudioFrame* mixedAudio,
+ const AudioFrameList* audioFrameList) const {
WEBRTC_TRACE(kTraceStream, kTraceAudioMixerServer, _id,
"MixAnonomouslyFromList(mixedAudio, audioFrameList)");
@@ -896,18 +895,18 @@ int32_t AudioConferenceMixerImpl::MixAnonomouslyFromList(
for (AudioFrameList::const_iterator iter = audioFrameList->begin();
iter != audioFrameList->end();
++iter) {
- MixFrames(&mixedAudio, *iter, use_limiter_);
+ MixFrames(mixedAudio, *iter, use_limiter_);
}
return 0;
}
-bool AudioConferenceMixerImpl::LimitMixedAudio(AudioFrame& mixedAudio) {
+bool AudioConferenceMixerImpl::LimitMixedAudio(AudioFrame* mixedAudio) const {
Andrew MacDonald 2015/08/26 15:56:01 Even though you can, I don't think you should mark
minyue-webrtc 2015/08/27 11:31:15 const means that the class members are unaltered.
Andrew MacDonald 2015/08/28 18:33:20 Right, I know what const methods are. There's the
if (!use_limiter_) {
return true;
}
// Smoothly limit the mixed frame.
- const int error = _limiter->ProcessStream(&mixedAudio);
+ const int error = _limiter->ProcessStream(mixedAudio);
// And now we can safely restore the level. This procedure results in
// some loss of resolution, deemed acceptable.
@@ -919,7 +918,7 @@ bool AudioConferenceMixerImpl::LimitMixedAudio(AudioFrame& mixedAudio) {
//
// Instead we double the frame (with addition since left-shifting a
// negative value is undefined).
- mixedAudio += mixedAudio;
+ *mixedAudio += *mixedAudio;
if(error != _limiter->kNoError) {
WEBRTC_TRACE(kTraceError, kTraceAudioMixerServer, _id,

Powered by Google App Engine
This is Rietveld 408576698