diff --git a/src/modules/audio_conference_mixer/source/audio_conference_mixer_impl.cc b/src/modules/audio_conference_mixer/source/audio_conference_mixer_impl.cc index ba4c82954e..e7ec069c3b 100644 --- a/src/modules/audio_conference_mixer/source/audio_conference_mixer_impl.cc +++ b/src/modules/audio_conference_mixer/source/audio_conference_mixer_impl.cc @@ -625,9 +625,30 @@ WebRtc_Word32 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. WebRtc_Word32 AudioConferenceMixerImpl::GetLowestMixingFrequency() +{ + const int participantListFrequency = + GetLowestMixingFrequencyFromList(_participantList); + const int anonymousListFrequency = + GetLowestMixingFrequencyFromList(_additionalParticipantList); + const int highestFreq = + (participantListFrequency > anonymousListFrequency) ? + participantListFrequency : anonymousListFrequency; + // Check if the user specified a lowest mixing frequency. + if(_minimumMixingFreq != kLowestPossible) + { + if(_minimumMixingFreq > highestFreq) + { + return _minimumMixingFreq; + } + } + return highestFreq; +} + +WebRtc_Word32 AudioConferenceMixerImpl::GetLowestMixingFrequencyFromList( + ListWrapper& mixList) { WebRtc_Word32 highestFreq = 8000; - ListItem* item = _participantList.First(); + ListItem* item = mixList.First(); while(item) { MixerParticipant* participant = @@ -637,16 +658,7 @@ WebRtc_Word32 AudioConferenceMixerImpl::GetLowestMixingFrequency() { highestFreq = neededFrequency; } - item = _participantList.Next(item); - } - - // Check if the user specified a lowest mixing frequency. - if(_minimumMixingFreq != kLowestPossible) - { - if(_minimumMixingFreq > highestFreq) - { - return _minimumMixingFreq; - } + item = mixList.Next(item); } return highestFreq; } diff --git a/src/modules/audio_conference_mixer/source/audio_conference_mixer_impl.h b/src/modules/audio_conference_mixer/source/audio_conference_mixer_impl.h index 6c961b93e3..f20e8ab20b 100644 --- a/src/modules/audio_conference_mixer/source/audio_conference_mixer_impl.h +++ b/src/modules/audio_conference_mixer/source/audio_conference_mixer_impl.h @@ -104,6 +104,7 @@ private: // Return the lowest mixing frequency that can be used without having to // downsample any audio. WebRtc_Word32 GetLowestMixingFrequency(); + WebRtc_Word32 GetLowestMixingFrequencyFromList(ListWrapper& mixList); // Return the AudioFrames that should be mixed anonymously. void GetAdditionalAudio(ListWrapper& additionalFramesList);