Add AGC1-compliant fake recording device.

The AGC submodule of APM changes analog gain. These gain changes are
typically ignored by the test tool audioproc_f.

There is an option of the test tool to take action on the gain
changes.  It's the '--simulate_mic_gain' option. The option converts
the analog gain to a digital gain. The digital gain is applied to the
capture stream.

This change adds a new simulated microphone kind. The new microphone
has a gain curve defined by
modules/audio_processing/agc/gain_map_internal.h. That gain curve
defines how AGC1 expects a microphone to behave.

Bug: webrtc:7494
Change-Id: Ifb3f54a8c6f8c001a711fa977f39f32413069780
Reviewed-on: https://webrtc-review.googlesource.com/86128
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23801}
This commit is contained in:
Alex Loiko
2018-07-02 11:37:47 +02:00
committed by Commit Bot
parent c167673c4d
commit 5c71e74331
3 changed files with 58 additions and 12 deletions

View File

@ -39,7 +39,6 @@ rtc_static_library("audio_processing") {
"agc/agc.h",
"agc/agc_manager_direct.cc",
"agc/agc_manager_direct.h",
"agc/gain_map_internal.h",
"agc/loudness_histogram.cc",
"agc/loudness_histogram.h",
"agc/utility.cc",
@ -110,6 +109,7 @@ rtc_static_library("audio_processing") {
defines = []
deps = [
":aec_core",
":agc_gain_map_internal",
":apm_logging",
":audio_frame_view",
":audio_generator_interface",
@ -413,6 +413,12 @@ rtc_source_set("aec_core") {
}
}
rtc_source_set("agc_gain_map_internal") {
sources = [
"agc/gain_map_internal.h",
]
}
if (rtc_include_tests) {
rtc_source_set("mocks") {
testonly = true
@ -629,11 +635,13 @@ if (rtc_include_tests) {
"test/fake_recording_device.h",
]
deps = [
":agc_gain_map_internal",
"../../api:array_view",
"../../api/audio:audio_frame_api",
"../../common_audio:common_audio",
"../../rtc_base:checks",
"../../rtc_base:rtc_base_approved",
"../../rtc_base:safe_minmax",
"//third_party/abseil-cpp/absl/types:optional",
]
}