webrtc/modules/audio_processing/test/runtime_setting_util.cc
Per Åhgren 8be2f201ba Add ability to state whether the APM output will be used
This CL adds the ability for the surrounding code to state that the
APM output will not be used. The intended usecase for this is to allow
APM to run at a lower complexity when the endpoint is muted.
When APM has been informed that the output will not be used, it can
turn off code that is needed only for ensuring that the output audio
will sound good.

Bug: b/154437967,b/163802450
Change-Id: I8e22989e35354372e96191d15da44beb9d1b26ae
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/181200
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31949}
2020-08-17 12:56:24 +00:00

50 lines
2 KiB
C++

/*
* Copyright (c) 2018 The WebRTC project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#include "modules/audio_processing/test/runtime_setting_util.h"
#include "rtc_base/checks.h"
namespace webrtc {
void ReplayRuntimeSetting(AudioProcessing* apm,
const webrtc::audioproc::RuntimeSetting& setting) {
RTC_CHECK(apm);
// TODO(bugs.webrtc.org/9138): Add ability to handle different types
// of settings. Currently CapturePreGain, CaptureFixedPostGain and
// PlayoutVolumeChange are supported.
RTC_CHECK(setting.has_capture_pre_gain() ||
setting.has_capture_fixed_post_gain() ||
setting.has_playout_volume_change());
if (setting.has_capture_pre_gain()) {
apm->SetRuntimeSetting(
AudioProcessing::RuntimeSetting::CreateCapturePreGain(
setting.capture_pre_gain()));
} else if (setting.has_capture_fixed_post_gain()) {
apm->SetRuntimeSetting(
AudioProcessing::RuntimeSetting::CreateCaptureFixedPostGain(
setting.capture_fixed_post_gain()));
} else if (setting.has_playout_volume_change()) {
apm->SetRuntimeSetting(
AudioProcessing::RuntimeSetting::CreatePlayoutVolumeChange(
setting.playout_volume_change()));
} else if (setting.has_playout_audio_device_change()) {
apm->SetRuntimeSetting(
AudioProcessing::RuntimeSetting::CreatePlayoutAudioDeviceChange(
{setting.playout_audio_device_change().id(),
setting.playout_audio_device_change().max_volume()}));
} else if (setting.has_capture_output_used()) {
apm->SetRuntimeSetting(
AudioProcessing::RuntimeSetting::CreateCaptureOutputUsedSetting(
setting.capture_output_used()));
}
}
} // namespace webrtc