diff --git a/webrtc/voice_engine/shared_data.cc b/webrtc/voice_engine/shared_data.cc index 2d485ae719..712bb66a70 100644 --- a/webrtc/voice_engine/shared_data.cc +++ b/webrtc/voice_engine/shared_data.cc @@ -76,9 +76,9 @@ void SharedData::set_audio_processing(AudioProcessing* audioproc) { _outputMixerPtr->SetAudioProcessingModule(audioproc); } -uint16_t SharedData::NumOfSendingChannels() { +int SharedData::NumOfSendingChannels() { ChannelManager::Iterator it(&_channelManager); - uint16_t sending_channels = 0; + int sending_channels = 0; for (ChannelManager::Iterator it(&_channelManager); it.IsValid(); it.Increment()) { @@ -89,6 +89,19 @@ uint16_t SharedData::NumOfSendingChannels() { return sending_channels; } +int SharedData::NumOfPlayingChannels() { + ChannelManager::Iterator it(&_channelManager); + int playout_channels = 0; + + for (ChannelManager::Iterator it(&_channelManager); it.IsValid(); + it.Increment()) { + if (it.GetChannel()->Playing()) + ++playout_channels; + } + + return playout_channels; +} + void SharedData::SetLastError(int32_t error) const { _engineStatistics.SetLastError(error); } diff --git a/webrtc/voice_engine/shared_data.h b/webrtc/voice_engine/shared_data.h index 7c7ad5c93b..dd76e96abd 100644 --- a/webrtc/voice_engine/shared_data.h +++ b/webrtc/voice_engine/shared_data.h @@ -56,7 +56,8 @@ public: _audioDeviceLayer = layer; } - uint16_t NumOfSendingChannels(); + int NumOfSendingChannels(); + int NumOfPlayingChannels(); // Convenience methods for calling statistics().SetLastError(). void SetLastError(int32_t error) const; diff --git a/webrtc/voice_engine/voe_base_impl.cc b/webrtc/voice_engine/voe_base_impl.cc index ab78f77440..c76e06deed 100644 --- a/webrtc/voice_engine/voe_base_impl.cc +++ b/webrtc/voice_engine/voe_base_impl.cc @@ -999,7 +999,7 @@ int32_t VoEBaseImpl::StopPlayout() { VoEId(_shared->instance_id(), -1), "VoEBaseImpl::StopPlayout()"); // Stop audio-device playing if no channel is playing out - if (_shared->NumOfSendingChannels() == 0) { + if (_shared->NumOfPlayingChannels() == 0) { if (_shared->audio_device()->StopPlayout() != 0) { _shared->SetLastError(VE_CANNOT_STOP_PLAYOUT, kTraceError,