Index: webrtc/voice_engine/output_mixer.cc |
diff --git a/webrtc/voice_engine/output_mixer.cc b/webrtc/voice_engine/output_mixer.cc |
index d46ee6296d6a946c179641ad41e53f77fa1b8c08..d3a4f7fc8f98f62c69fbc10c4a4e6d4a45599734 100644 |
--- a/webrtc/voice_engine/output_mixer.cc |
+++ b/webrtc/voice_engine/output_mixer.cc |
@@ -517,8 +517,20 @@ OutputMixer::DoOperationsOnCombinedSignal(bool feed_data_to_apm) |
} |
// --- Far-end Voice Quality Enhancement (AudioProcessing Module) |
- if (feed_data_to_apm) |
- APMProcessReverseStream(); |
+ if (feed_data_to_apm) { |
+ // Convert from mixing to AudioProcessing sample rate, similarly to how it |
+ // is done on the send side. Downmix to mono. |
+ AudioFrame frame; |
+ frame.num_channels_ = 1; |
+ frame.sample_rate_hz_ = _audioProcessingModulePtr->input_sample_rate_hz(); |
+ RemixAndResample(_audioFrame, &audioproc_resampler_, &frame); |
+ |
+ if (_audioProcessingModulePtr->AnalyzeReverseStream(&frame) != 0) { |
+ WEBRTC_TRACE(kTraceWarning, kTraceVoice, VoEId(_instanceId, -1), |
+ "AudioProcessingModule::AnalyzeReverseStream() => error"); |
+ RTC_DCHECK(false); |
+ } |
+ } |
// --- External media processing |
{ |
@@ -549,13 +561,6 @@ OutputMixer::DoOperationsOnCombinedSignal(bool feed_data_to_apm) |
// Private methods |
// ---------------------------------------------------------------------------- |
-void OutputMixer::APMProcessReverseStream() { |
- if (_audioProcessingModulePtr->ProcessReverseStream(&_audioFrame) != 0) { |
- WEBRTC_TRACE(kTraceError, kTraceVoice, VoEId(_instanceId, -1), |
- "AudioProcessingModule::ProcessReverseStream() => error"); |
- } |
-} |
- |
int |
OutputMixer::InsertInbandDtmfTone() |
{ |