Index: webrtc/voice_engine/voe_base_impl.cc |
diff --git a/webrtc/voice_engine/voe_base_impl.cc b/webrtc/voice_engine/voe_base_impl.cc |
index d1981a4a3a72a55495009f4e9dbcff4c004d7d15..9f569fe92736eb49bba7da45c31bc20d9fe7c6cc 100644 |
--- a/webrtc/voice_engine/voe_base_impl.cc |
+++ b/webrtc/voice_engine/voe_base_impl.cc |
@@ -112,14 +112,15 @@ void VoEBaseImpl::PushCaptureData(int voe_channel, const void* audio_data, |
size_t number_of_channels, |
size_t number_of_frames) { |
voe::ChannelOwner ch = shared_->channel_manager().GetChannel(voe_channel); |
- voe::Channel* channel_ptr = ch.channel(); |
- if (!channel_ptr) return; |
- |
- if (channel_ptr->Sending()) { |
- channel_ptr->Demultiplex(static_cast<const int16_t*>(audio_data), |
- sample_rate, number_of_frames, number_of_channels); |
- channel_ptr->PrepareEncodeAndSend(sample_rate); |
- channel_ptr->EncodeAndSend(); |
+ voe::Channel* channel = ch.channel(); |
+ if (!channel) |
+ return; |
+ if (channel->Sending()) { |
+ // Send the audio to each channel directly without using the APM in the |
+ // transmit mixer. |
+ channel->ProcessAndEncodeAudio(static_cast<const int16_t*>(audio_data), |
+ sample_rate, number_of_frames, |
+ number_of_channels); |
} |
} |
@@ -377,7 +378,8 @@ int VoEBaseImpl::InitializeChannel(voe::ChannelOwner* channel_owner) { |
if (channel_owner->channel()->SetEngineInformation( |
shared_->statistics(), *shared_->output_mixer(), |
*shared_->process_thread(), *shared_->audio_device(), |
- voiceEngineObserverPtr_, &callbackCritSect_) != 0) { |
+ voiceEngineObserverPtr_, &callbackCritSect_, |
+ shared_->encoder_queue()) != 0) { |
shared_->SetLastError( |
VE_CHANNEL_NOT_CREATED, kTraceError, |
"CreateChannel() failed to associate engine and channel." |
@@ -693,13 +695,12 @@ int VoEBaseImpl::ProcessRecordedDataWithAPM( |
// do the operations on all the existing VoE channels; otherwise the |
// operations will be done on specific channels. |
if (number_of_voe_channels == 0) { |
- shared_->transmit_mixer()->DemuxAndMix(); |
- shared_->transmit_mixer()->EncodeAndSend(); |
+ shared_->transmit_mixer()->ProcessAudio(); |
} else { |
- shared_->transmit_mixer()->DemuxAndMix(voe_channels, |
- number_of_voe_channels); |
- shared_->transmit_mixer()->EncodeAndSend(voe_channels, |
- number_of_voe_channels); |
+ // TODO(henrika): I am unable to find any client who triggers this else |
+ // clause. To me it looks like it can be removed. |
+ shared_->transmit_mixer()->ProcessAudio(voe_channels, |
+ number_of_voe_channels); |
} |
// Scale from VoE to ADM level range. |