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

Side by Side Diff: webrtc/voice_engine/output_mixer.cc

Issue 1525173002: Bugfix that fixes the integration issue that cause WebRTC AEC mobile to fail (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Added missing input_sample_rate_hz() to FakeAudioProcessing Created 5 years 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 unified diff | Download patch
« no previous file with comments | « webrtc/voice_engine/output_mixer.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 499 matching lines...) Expand 10 before | Expand all | Expand 10 after
510 else 510 else
511 { 511 {
512 // Pure stereo mode (we are receiving a stereo signal). 512 // Pure stereo mode (we are receiving a stereo signal).
513 } 513 }
514 514
515 assert(_audioFrame.num_channels_ == 2); 515 assert(_audioFrame.num_channels_ == 2);
516 AudioFrameOperations::Scale(_panLeft, _panRight, _audioFrame); 516 AudioFrameOperations::Scale(_panLeft, _panRight, _audioFrame);
517 } 517 }
518 518
519 // --- Far-end Voice Quality Enhancement (AudioProcessing Module) 519 // --- Far-end Voice Quality Enhancement (AudioProcessing Module)
520 if (feed_data_to_apm) 520 if (feed_data_to_apm) {
521 APMProcessReverseStream(); 521 // Convert from mixing to AudioProcessing sample rate, similarly to how it
522 // is done on the send side. Downmix to mono.
523 AudioFrame frame;
524 frame.num_channels_ = 1;
525 frame.sample_rate_hz_ = _audioProcessingModulePtr->input_sample_rate_hz();
526 RemixAndResample(_audioFrame, &audioproc_resampler_, &frame);
527
528 if (_audioProcessingModulePtr->AnalyzeReverseStream(&frame) != 0) {
529 WEBRTC_TRACE(kTraceWarning, kTraceVoice, VoEId(_instanceId, -1),
530 "AudioProcessingModule::AnalyzeReverseStream() => error");
531 RTC_DCHECK(false);
532 }
533 }
522 534
523 // --- External media processing 535 // --- External media processing
524 { 536 {
525 CriticalSectionScoped cs(&_callbackCritSect); 537 CriticalSectionScoped cs(&_callbackCritSect);
526 if (_externalMedia) 538 if (_externalMedia)
527 { 539 {
528 const bool is_stereo = (_audioFrame.num_channels_ == 2); 540 const bool is_stereo = (_audioFrame.num_channels_ == 2);
529 if (_externalMediaCallbackPtr) 541 if (_externalMediaCallbackPtr)
530 { 542 {
531 _externalMediaCallbackPtr->Process( 543 _externalMediaCallbackPtr->Process(
(...skipping 10 matching lines...) Expand all
542 // --- Measure audio level (0-9) for the combined signal 554 // --- Measure audio level (0-9) for the combined signal
543 _audioLevel.ComputeLevel(_audioFrame); 555 _audioLevel.ComputeLevel(_audioFrame);
544 556
545 return 0; 557 return 0;
546 } 558 }
547 559
548 // ---------------------------------------------------------------------------- 560 // ----------------------------------------------------------------------------
549 // Private methods 561 // Private methods
550 // ---------------------------------------------------------------------------- 562 // ----------------------------------------------------------------------------
551 563
552 void OutputMixer::APMProcessReverseStream() {
553 if (_audioProcessingModulePtr->ProcessReverseStream(&_audioFrame) != 0) {
554 WEBRTC_TRACE(kTraceError, kTraceVoice, VoEId(_instanceId, -1),
555 "AudioProcessingModule::ProcessReverseStream() => error");
556 }
557 }
558
559 int 564 int
560 OutputMixer::InsertInbandDtmfTone() 565 OutputMixer::InsertInbandDtmfTone()
561 { 566 {
562 uint16_t sampleRate(0); 567 uint16_t sampleRate(0);
563 _dtmfGenerator.GetSampleRate(sampleRate); 568 _dtmfGenerator.GetSampleRate(sampleRate);
564 if (sampleRate != _audioFrame.sample_rate_hz_) 569 if (sampleRate != _audioFrame.sample_rate_hz_)
565 { 570 {
566 // Update sample rate of Dtmf tone since the mixing frequency changed. 571 // Update sample rate of Dtmf tone since the mixing frequency changed.
567 _dtmfGenerator.SetSampleRate( 572 _dtmfGenerator.SetSampleRate(
568 (uint16_t)(_audioFrame.sample_rate_hz_)); 573 (uint16_t)(_audioFrame.sample_rate_hz_));
(...skipping 26 matching lines...) Expand all
595 _audioFrame.data_[2 * i + 1] = 0; 600 _audioFrame.data_[2 * i + 1] = 0;
596 } 601 }
597 } 602 }
598 assert(_audioFrame.samples_per_channel_ == toneSamples); 603 assert(_audioFrame.samples_per_channel_ == toneSamples);
599 604
600 return 0; 605 return 0;
601 } 606 }
602 607
603 } // namespace voe 608 } // namespace voe
604 } // namespace webrtc 609 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/voice_engine/output_mixer.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698