APM input volume controller tests
- Test behavior with no input volume controller - Test behavior with startup volume higher than the minimum input volume Bug: webrtc:7494 Change-Id: I36d48e2bd277b8a71eb6fbb0272c26c7176b3d5e Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/286380 Commit-Queue: Alessio Bazzica <alessiob@webrtc.org> Reviewed-by: Hanna Silen <silen@webrtc.org> Cr-Commit-Position: refs/heads/main@{#38932}
This commit is contained in:
parent
7e176c41b9
commit
4f26c25b62
@ -842,6 +842,47 @@ TEST(ApmWithSubmodulesExcludedTest, ToggleTransientSuppressor) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class StartupInputVolumeParameterizedTest
|
||||||
|
: public ::testing::TestWithParam<int> {};
|
||||||
|
|
||||||
|
// Tests that, when no input volume controller is used, the startup input volume
|
||||||
|
// is never modified.
|
||||||
|
TEST_P(StartupInputVolumeParameterizedTest,
|
||||||
|
WithNoInputVolumeControllerStartupVolumeNotModified) {
|
||||||
|
webrtc::AudioProcessing::Config config;
|
||||||
|
config.gain_controller1.enabled = false;
|
||||||
|
config.gain_controller2.enabled = false;
|
||||||
|
auto apm = AudioProcessingBuilder().SetConfig(config).Create();
|
||||||
|
|
||||||
|
int startup_volume = GetParam();
|
||||||
|
int recommended_volume = ProcessInputVolume(
|
||||||
|
*apm, /*num_frames=*/1, /*initial_volume=*/startup_volume);
|
||||||
|
EXPECT_EQ(recommended_volume, startup_volume);
|
||||||
|
}
|
||||||
|
|
||||||
|
INSTANTIATE_TEST_SUITE_P(AudioProcessingImplTest,
|
||||||
|
StartupInputVolumeParameterizedTest,
|
||||||
|
::testing::Values(0, 5, 15, 50, 100));
|
||||||
|
|
||||||
|
// Tests that, when no input volume controller is used, the recommended input
|
||||||
|
// volume always matches the applied one.
|
||||||
|
TEST(AudioProcessingImplTest,
|
||||||
|
WithNoInputVolumeControllerAppliedAndRecommendedVolumesMatch) {
|
||||||
|
webrtc::AudioProcessing::Config config;
|
||||||
|
config.gain_controller1.enabled = false;
|
||||||
|
config.gain_controller2.enabled = false;
|
||||||
|
auto apm = AudioProcessingBuilder().SetConfig(config).Create();
|
||||||
|
|
||||||
|
Random rand_gen(42);
|
||||||
|
for (int i = 0; i < 32; ++i) {
|
||||||
|
SCOPED_TRACE(i);
|
||||||
|
int32_t applied_volume = rand_gen.Rand(/*low=*/0, /*high=*/255);
|
||||||
|
int recommended_volume =
|
||||||
|
ProcessInputVolume(*apm, /*num_frames=*/1, applied_volume);
|
||||||
|
EXPECT_EQ(recommended_volume, applied_volume);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
class ApmInputVolumeControllerParametrizedTest
|
class ApmInputVolumeControllerParametrizedTest
|
||||||
: public ::testing::TestWithParam<
|
: public ::testing::TestWithParam<
|
||||||
std::tuple<int, int, AudioProcessing::Config>> {
|
std::tuple<int, int, AudioProcessing::Config>> {
|
||||||
@ -916,6 +957,18 @@ TEST_P(ApmInputVolumeControllerParametrizedTest,
|
|||||||
EXPECT_GT(apm->recommended_stream_analog_level(), kManuallyAdjustedVolume);
|
EXPECT_GT(apm->recommended_stream_analog_level(), kManuallyAdjustedVolume);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_P(ApmInputVolumeControllerParametrizedTest,
|
||||||
|
DoNotEnforceMinInputVolumeAtStartupWithHighVolume) {
|
||||||
|
const StreamConfig stream_config(sample_rate_hz(), num_channels());
|
||||||
|
auto apm = AudioProcessingBuilder().SetConfig(GetConfig()).Create();
|
||||||
|
|
||||||
|
constexpr int kStartupVolume = 200;
|
||||||
|
apm->set_stream_analog_level(kStartupVolume);
|
||||||
|
apm->ProcessStream(channel_pointers(), stream_config, stream_config,
|
||||||
|
channel_pointers());
|
||||||
|
EXPECT_EQ(apm->recommended_stream_analog_level(), kStartupVolume);
|
||||||
|
}
|
||||||
|
|
||||||
TEST_P(ApmInputVolumeControllerParametrizedTest,
|
TEST_P(ApmInputVolumeControllerParametrizedTest,
|
||||||
DoNotEnforceMinInputVolumeAfterManualVolumeAdjustmentToZero) {
|
DoNotEnforceMinInputVolumeAfterManualVolumeAdjustmentToZero) {
|
||||||
const StreamConfig stream_config(sample_rate_hz(), num_channels());
|
const StreamConfig stream_config(sample_rate_hz(), num_channels());
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user