| Index: webrtc/voice_engine/test/auto_test/standard/volume_test.cc
|
| diff --git a/webrtc/voice_engine/test/auto_test/standard/volume_test.cc b/webrtc/voice_engine/test/auto_test/standard/volume_test.cc
|
| deleted file mode 100644
|
| index fa0c0eab6443c04a4afe6acef9f7809d9b04a166..0000000000000000000000000000000000000000
|
| --- a/webrtc/voice_engine/test/auto_test/standard/volume_test.cc
|
| +++ /dev/null
|
| @@ -1,302 +0,0 @@
|
| -/*
|
| - * Copyright (c) 2012 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 "webrtc/voice_engine/test/auto_test/fixtures/after_streaming_fixture.h"
|
| -
|
| -namespace {
|
| -
|
| -void ExpectVolumeNear(int expected, int actual) {
|
| - // The hardware volume may be more coarsely quantized than [0, 255], so
|
| - // it is not always reasonable to expect to get exactly what we set. This
|
| - // allows for some error.
|
| - const int kMaxVolumeError = 10;
|
| - EXPECT_NEAR(expected, actual, kMaxVolumeError);
|
| - EXPECT_GE(actual, 0);
|
| - EXPECT_LE(actual, 255);
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -class VolumeTest : public AfterStreamingFixture {
|
| - public:
|
| - void SetAndVerifyMicVolume(unsigned int volume) {
|
| - bool success = voe_volume_control_->SetMicVolume(volume) == 0;
|
| -#if !defined(WEBRTC_LINUX)
|
| - EXPECT_TRUE(success);
|
| -#endif
|
| - if (!success) {
|
| - TEST_LOG("Failed to set microphone volume to %u.\n", volume);
|
| - return;
|
| - }
|
| -
|
| - unsigned int test_volume = 1000;
|
| - success = voe_volume_control_->GetMicVolume(test_volume) == 0;
|
| -#if !defined(WEBRTC_LINUX)
|
| - EXPECT_TRUE(success);
|
| -#endif
|
| - if (success) {
|
| - EXPECT_EQ(volume, test_volume);
|
| - } else {
|
| - TEST_LOG("Failed to get the microphone volume.");
|
| - EXPECT_EQ(1000u, test_volume);
|
| - }
|
| - }
|
| -
|
| - void SetAndVerifyInputMute(bool enable) {
|
| - bool success = voe_volume_control_->SetInputMute(channel_, enable) == 0;
|
| -#if !defined(WEBRTC_LINUX)
|
| - EXPECT_TRUE(success);
|
| -#endif
|
| - if (!success) {
|
| - TEST_LOG("Failed to %smute input.\n", enable ? "" : "un");
|
| - return;
|
| - }
|
| -
|
| - bool is_muted = !enable;
|
| - success = voe_volume_control_->GetInputMute(channel_, is_muted) == 0;
|
| -#if !defined(WEBRTC_LINUX)
|
| - EXPECT_TRUE(success);
|
| -#endif
|
| - if (success) {
|
| - EXPECT_EQ(enable, is_muted);
|
| - } else {
|
| - TEST_LOG("Failed to mute the input.");
|
| - EXPECT_NE(enable, is_muted);
|
| - }
|
| - }
|
| -};
|
| -
|
| -// Some tests are flaky on Linux (Pulse Audio), which boils down to some system
|
| -// values not being acquired in time. In Pulse Audio we make one retry if
|
| -// needed, but if we fail then, a -1 is returned propagating up through VoE.
|
| -// To avoid possible bugs slipping through on other platforms we make adequate
|
| -// changes on Linux only.
|
| -TEST_F(VolumeTest, VerifyCorrectErrorReturns) {
|
| - // All tests run on correct initialization which eliminates one possible error
|
| - // return. In addition, we assume the audio_device returning values without
|
| - // error, which eliminates another potential error.
|
| - // Left to verify are sanity checks of set parameters.
|
| -
|
| - // Valid volume range: [0, 255]
|
| - EXPECT_EQ(-1, voe_volume_control_->SetSpeakerVolume(256));
|
| - EXPECT_EQ(-1, voe_volume_control_->SetMicVolume(256));
|
| -
|
| - // Valid panning rage: [0, 1]
|
| - EXPECT_EQ(-1, voe_volume_control_->SetOutputVolumePan(channel_, -0.1f, 0.5f));
|
| - EXPECT_EQ(-1, voe_volume_control_->SetOutputVolumePan(channel_, 1.1f, 0.5f));
|
| - EXPECT_EQ(-1, voe_volume_control_->SetOutputVolumePan(channel_, 0.5f, -0.1f));
|
| - EXPECT_EQ(-1, voe_volume_control_->SetOutputVolumePan(channel_, 0.5f, 1.1f));
|
| -}
|
| -
|
| -TEST_F(VolumeTest, DefaultSpeakerVolumeIsAtMost255) {
|
| - unsigned int volume = 1000;
|
| - EXPECT_EQ(0, voe_volume_control_->GetSpeakerVolume(volume));
|
| - EXPECT_LE(volume, 255u);
|
| -}
|
| -
|
| -TEST_F(VolumeTest, SetVolumeBeforePlayoutWorks) {
|
| - // This is a rather specialized test, intended to exercise some PulseAudio
|
| - // code. However, these conditions should be satisfied on any platform.
|
| - unsigned int original_volume = 0;
|
| - EXPECT_EQ(0, voe_volume_control_->GetSpeakerVolume(original_volume));
|
| - Sleep(1000);
|
| -
|
| - EXPECT_EQ(0, voe_volume_control_->SetSpeakerVolume(200));
|
| - unsigned int volume;
|
| - EXPECT_EQ(0, voe_volume_control_->GetSpeakerVolume(volume));
|
| - ExpectVolumeNear(200u, volume);
|
| -
|
| - PausePlaying();
|
| - ResumePlaying();
|
| - EXPECT_EQ(0, voe_volume_control_->GetSpeakerVolume(volume));
|
| - // Ensure the volume has not changed after resuming playout.
|
| - ExpectVolumeNear(200u, volume);
|
| -
|
| - PausePlaying();
|
| - EXPECT_EQ(0, voe_volume_control_->SetSpeakerVolume(100));
|
| - ResumePlaying();
|
| - // Ensure the volume set while paused is retained.
|
| - EXPECT_EQ(0, voe_volume_control_->GetSpeakerVolume(volume));
|
| - ExpectVolumeNear(100u, volume);
|
| -
|
| - EXPECT_EQ(0, voe_volume_control_->SetSpeakerVolume(original_volume));
|
| -}
|
| -
|
| -TEST_F(VolumeTest, ManualSetVolumeWorks) {
|
| - unsigned int original_volume = 0;
|
| - EXPECT_EQ(0, voe_volume_control_->GetSpeakerVolume(original_volume));
|
| - Sleep(1000);
|
| -
|
| - TEST_LOG("Setting speaker volume to 0 out of 255.\n");
|
| - EXPECT_EQ(0, voe_volume_control_->SetSpeakerVolume(0));
|
| - unsigned int volume;
|
| - EXPECT_EQ(0, voe_volume_control_->GetSpeakerVolume(volume));
|
| - ExpectVolumeNear(0u, volume);
|
| - Sleep(1000);
|
| -
|
| - TEST_LOG("Setting speaker volume to 100 out of 255.\n");
|
| - EXPECT_EQ(0, voe_volume_control_->SetSpeakerVolume(100));
|
| - EXPECT_EQ(0, voe_volume_control_->GetSpeakerVolume(volume));
|
| - ExpectVolumeNear(100u, volume);
|
| - Sleep(1000);
|
| -
|
| - // Set the volume to 255 very briefly so we don't blast the poor user
|
| - // listening to this. This is just to test the call succeeds.
|
| - EXPECT_EQ(0, voe_volume_control_->SetSpeakerVolume(255));
|
| - EXPECT_EQ(0, voe_volume_control_->GetSpeakerVolume(volume));
|
| - ExpectVolumeNear(255u, volume);
|
| -
|
| - TEST_LOG("Setting speaker volume to the original %d out of 255.\n",
|
| - original_volume);
|
| - EXPECT_EQ(0, voe_volume_control_->SetSpeakerVolume(original_volume));
|
| - Sleep(1000);
|
| -}
|
| -
|
| -TEST_F(VolumeTest, DefaultMicrophoneVolumeIsAtMost255) {
|
| - unsigned int volume = 1000;
|
| - bool could_get_mic_volume = voe_volume_control_->GetMicVolume(volume) == 0;
|
| -#if !defined(WEBRTC_LINUX)
|
| - EXPECT_TRUE(could_get_mic_volume);
|
| -#endif
|
| - if (could_get_mic_volume) {
|
| - EXPECT_LE(volume, 255u);
|
| - } else {
|
| - TEST_LOG("Failed to get the microphone volume.");
|
| - EXPECT_EQ(1000u, volume);
|
| - }
|
| -}
|
| -
|
| -// The test below is disabled due to issue webrtc:6206.
|
| -TEST_F(VolumeTest, DISABLED_ManualRequiresMicrophoneCanSetMicrophoneVolumeWithAgcOff) {
|
| - SwitchToManualMicrophone();
|
| - EXPECT_EQ(0, voe_apm_->SetAgcStatus(false));
|
| -
|
| - unsigned int original_volume = 0;
|
| - bool could_get_mic_volume =
|
| - (voe_volume_control_->GetMicVolume(original_volume) == 0);
|
| -#if !defined(WEBRTC_LINUX)
|
| - EXPECT_TRUE(could_get_mic_volume);
|
| -#endif
|
| - if (could_get_mic_volume)
|
| - TEST_LOG("Current microphone volume is %u.\n", original_volume);
|
| - else
|
| - TEST_LOG("Failed to fetch current microphone volume.\n");
|
| -
|
| - TEST_LOG("Setting microphone volume to 0.\n");
|
| - SetAndVerifyMicVolume(0);
|
| - Sleep(1000);
|
| - TEST_LOG("Setting microphone volume to 255.\n");
|
| - SetAndVerifyMicVolume(255);
|
| - Sleep(1000);
|
| - if (could_get_mic_volume) {
|
| - TEST_LOG("Setting microphone volume back to %u.\n", original_volume);
|
| - SetAndVerifyMicVolume(original_volume);
|
| - Sleep(1000);
|
| - }
|
| -}
|
| -
|
| -TEST_F(VolumeTest, ChannelScalingIsOneByDefault) {
|
| - float scaling = -1.0f;
|
| -
|
| - EXPECT_EQ(0, voe_volume_control_->GetChannelOutputVolumeScaling(
|
| - channel_, scaling));
|
| - EXPECT_FLOAT_EQ(1.0f, scaling);
|
| -}
|
| -
|
| -TEST_F(VolumeTest, ManualCanSetChannelScaling) {
|
| - EXPECT_EQ(0, voe_volume_control_->SetChannelOutputVolumeScaling(
|
| - channel_, 0.1f));
|
| -
|
| - float scaling = 1.0f;
|
| - EXPECT_EQ(0, voe_volume_control_->GetChannelOutputVolumeScaling(
|
| - channel_, scaling));
|
| -
|
| - EXPECT_FLOAT_EQ(0.1f, scaling);
|
| -
|
| - TEST_LOG("Channel scaling set to 0.1: audio should be barely audible.\n");
|
| - Sleep(2000);
|
| -}
|
| -
|
| -TEST_F(VolumeTest, InputMutingIsNotEnabledByDefault) {
|
| - bool is_muted = true;
|
| - EXPECT_EQ(0, voe_volume_control_->GetInputMute(channel_, is_muted));
|
| - EXPECT_FALSE(is_muted);
|
| -}
|
| -
|
| -TEST_F(VolumeTest, ManualInputMutingMutesMicrophone) {
|
| - SwitchToManualMicrophone();
|
| - // Enable muting.
|
| - SetAndVerifyInputMute(true);
|
| - TEST_LOG("Muted: talk into microphone and verify you can't hear yourself.\n");
|
| - Sleep(2000);
|
| -
|
| - // Test that we can disable muting.
|
| - SetAndVerifyInputMute(false);
|
| - TEST_LOG("Unmuted: talk into microphone and verify you can hear yourself.\n");
|
| - Sleep(2000);
|
| -}
|
| -
|
| -TEST_F(VolumeTest, ManualTestInputAndOutputLevels) {
|
| - SwitchToManualMicrophone();
|
| -
|
| - TEST_LOG("Speak and verify that the following levels look right:\n");
|
| - for (int i = 0; i < 5; i++) {
|
| - Sleep(1000);
|
| - unsigned int input_level = 0;
|
| - unsigned int output_level = 0;
|
| - unsigned int input_level_full_range = 0;
|
| - unsigned int output_level_full_range = 0;
|
| -
|
| - EXPECT_EQ(0, voe_volume_control_->GetSpeechInputLevel(
|
| - input_level));
|
| - EXPECT_EQ(0, voe_volume_control_->GetSpeechOutputLevel(
|
| - channel_, output_level));
|
| - EXPECT_EQ(0, voe_volume_control_->GetSpeechInputLevelFullRange(
|
| - input_level_full_range));
|
| - EXPECT_EQ(0, voe_volume_control_->GetSpeechOutputLevelFullRange(
|
| - channel_, output_level_full_range));
|
| -
|
| - TEST_LOG(" warped levels (0-9) : in=%5d, out=%5d\n",
|
| - input_level, output_level);
|
| - TEST_LOG(" linear levels (0-32768): in=%5d, out=%5d\n",
|
| - input_level_full_range, output_level_full_range);
|
| - }
|
| -}
|
| -
|
| -TEST_F(VolumeTest, ChannelsAreNotPannedByDefault) {
|
| - float left = -1.0;
|
| - float right = -1.0;
|
| -
|
| - EXPECT_EQ(0, voe_volume_control_->GetOutputVolumePan(channel_, left, right));
|
| - EXPECT_FLOAT_EQ(1.0, left);
|
| - EXPECT_FLOAT_EQ(1.0, right);
|
| -}
|
| -
|
| -TEST_F(VolumeTest, ManualTestChannelPanning) {
|
| - TEST_LOG("Panning left.\n");
|
| - EXPECT_EQ(0, voe_volume_control_->SetOutputVolumePan(channel_, 0.8f, 0.1f));
|
| - Sleep(1000);
|
| -
|
| - TEST_LOG("Back to center.\n");
|
| - EXPECT_EQ(0, voe_volume_control_->SetOutputVolumePan(channel_, 1.0f, 1.0f));
|
| - Sleep(1000);
|
| -
|
| - TEST_LOG("Panning right.\n");
|
| - EXPECT_EQ(0, voe_volume_control_->SetOutputVolumePan(channel_, 0.1f, 0.8f));
|
| - Sleep(1000);
|
| -
|
| - // To finish, verify that the getter works.
|
| - float left = 0.0f;
|
| - float right = 0.0f;
|
| -
|
| - EXPECT_EQ(0, voe_volume_control_->GetOutputVolumePan(channel_, left, right));
|
| - EXPECT_FLOAT_EQ(0.1f, left);
|
| - EXPECT_FLOAT_EQ(0.8f, right);
|
| -}
|
|
|