| Index: webrtc/media/engine/webrtcvoiceengine.cc
|
| diff --git a/webrtc/media/engine/webrtcvoiceengine.cc b/webrtc/media/engine/webrtcvoiceengine.cc
|
| index 4f6166556acab033171b67b0f01b85fa58e81dc3..ebcd1613946cbf82b07fdbe1f1b36bffa885bcb4 100644
|
| --- a/webrtc/media/engine/webrtcvoiceengine.cc
|
| +++ b/webrtc/media/engine/webrtcvoiceengine.cc
|
| @@ -553,6 +553,9 @@ WebRtcVoiceEngine::WebRtcVoiceEngine(
|
| }
|
| RTC_DCHECK(adm_);
|
|
|
| + apm_ = voe_wrapper_->base()->audio_processing();
|
| + RTC_DCHECK(apm_);
|
| +
|
| // Save the default AGC configuration settings. This must happen before
|
| // calling ApplyOptions or the default will be overwritten.
|
| int error = voe_wrapper_->processing()->GetAgcConfig(default_agc_config_);
|
| @@ -877,13 +880,8 @@ bool WebRtcVoiceEngine::ApplyOptions(const AudioOptions& options_in) {
|
| }
|
| }
|
|
|
| - // We check audioproc for the benefit of tests, since FakeWebRtcVoiceEngine
|
| - // returns NULL on audio_processing().
|
| - webrtc::AudioProcessing* audioproc = voe_wrapper_->base()->audio_processing();
|
| - if (audioproc) {
|
| - audioproc->SetExtraOptions(config);
|
| - audioproc->ApplyConfig(apm_config);
|
| - }
|
| + apm()->SetExtraOptions(config);
|
| + apm()->ApplyConfig(apm_config);
|
|
|
| if (options.recording_sample_rate) {
|
| LOG(LS_INFO) << "Recording sample rate is "
|
| @@ -916,10 +914,8 @@ void WebRtcVoiceEngine::SetDefaultDevices() {
|
| LOG_RTCERR1(SetRecordingDevice, in_id);
|
| ret = false;
|
| }
|
| - webrtc::AudioProcessing* ap = voe()->base()->audio_processing();
|
| - if (ap) {
|
| - ap->Initialize();
|
| - }
|
| +
|
| + apm()->Initialize();
|
|
|
| if (voe_wrapper_->hw()->SetPlayoutDevice(out_id) == -1) {
|
| LOG_RTCERR1(SetPlayoutDevice, out_id);
|
| @@ -1040,8 +1036,7 @@ bool WebRtcVoiceEngine::StartAecDump(rtc::PlatformFile file,
|
| return false;
|
| }
|
| StopAecDump();
|
| - if (voe_wrapper_->base()->audio_processing()->StartDebugRecording(
|
| - aec_dump_file_stream, max_size_bytes) !=
|
| + if (apm()->StartDebugRecording(aec_dump_file_stream, max_size_bytes) !=
|
| webrtc::AudioProcessing::kNoError) {
|
| LOG_RTCERR0(StartDebugRecording);
|
| fclose(aec_dump_file_stream);
|
| @@ -1055,8 +1050,8 @@ void WebRtcVoiceEngine::StartAecDump(const std::string& filename) {
|
| RTC_DCHECK(worker_thread_checker_.CalledOnValidThread());
|
| if (!is_dumping_aec_) {
|
| // Start dumping AEC when we are not dumping.
|
| - if (voe_wrapper_->base()->audio_processing()->StartDebugRecording(
|
| - filename.c_str(), -1) != webrtc::AudioProcessing::kNoError) {
|
| + if (apm()->StartDebugRecording(filename.c_str(), -1) !=
|
| + webrtc::AudioProcessing::kNoError) {
|
| LOG_RTCERR1(StartDebugRecording, filename.c_str());
|
| } else {
|
| is_dumping_aec_ = true;
|
| @@ -1068,8 +1063,7 @@ void WebRtcVoiceEngine::StopAecDump() {
|
| RTC_DCHECK(worker_thread_checker_.CalledOnValidThread());
|
| if (is_dumping_aec_) {
|
| // Stop dumping AEC when we are dumping.
|
| - if (voe_wrapper_->base()->audio_processing()->StopDebugRecording() !=
|
| - webrtc::AudioProcessing::kNoError) {
|
| + if (apm()->StopDebugRecording() != webrtc::AudioProcessing::kNoError) {
|
| LOG_RTCERR0(StopDebugRecording);
|
| }
|
| is_dumping_aec_ = false;
|
| @@ -1087,6 +1081,12 @@ webrtc::AudioDeviceModule* WebRtcVoiceEngine::adm() {
|
| return adm_;
|
| }
|
|
|
| +webrtc::AudioProcessing* WebRtcVoiceEngine::apm() {
|
| + RTC_DCHECK(worker_thread_checker_.CalledOnValidThread());
|
| + RTC_DCHECK(apm_);
|
| + return apm_;
|
| +}
|
| +
|
| AudioCodecs WebRtcVoiceEngine::CollectRecvCodecs() const {
|
| PayloadTypeMapper mapper;
|
| AudioCodecs out;
|
| @@ -2378,11 +2378,8 @@ bool WebRtcVoiceMediaChannel::MuteStream(uint32_t ssrc, bool muted) {
|
| for (const auto& kv : send_streams_) {
|
| all_muted = all_muted && kv.second->muted();
|
| }
|
| + engine()->apm()->set_output_will_be_muted(all_muted);
|
|
|
| - webrtc::AudioProcessing* ap = engine()->voe()->base()->audio_processing();
|
| - if (ap) {
|
| - ap->set_output_will_be_muted(all_muted);
|
| - }
|
| return true;
|
| }
|
|
|
|
|