| Index: webrtc/modules/audio_device/test/audio_device_test_api.cc
|
| diff --git a/webrtc/modules/audio_device/test/audio_device_test_api.cc b/webrtc/modules/audio_device/test/audio_device_test_api.cc
|
| deleted file mode 100644
|
| index e36fc1d2cdf6e08ab4423daa49da6d4b42861495..0000000000000000000000000000000000000000
|
| --- a/webrtc/modules/audio_device/test/audio_device_test_api.cc
|
| +++ /dev/null
|
| @@ -1,1609 +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 <math.h>
|
| -#include <stdio.h>
|
| -#include <string.h>
|
| -
|
| -#include <memory>
|
| -
|
| -#include "webrtc/modules/audio_device/test/audio_device_test_defines.h"
|
| -
|
| -#include "webrtc/test/gtest.h"
|
| -#include "webrtc/test/testsupport/fileutils.h"
|
| -
|
| -#include "webrtc/modules/audio_device/audio_device_config.h"
|
| -#include "webrtc/modules/audio_device/audio_device_impl.h"
|
| -#include "webrtc/modules/utility/include/process_thread.h"
|
| -#include "webrtc/system_wrappers/include/sleep.h"
|
| -
|
| -// Helper functions
|
| -#if defined(ANDROID)
|
| -char filenameStr[2][256] =
|
| -{ {0},
|
| - {0},
|
| -}; // Allow two buffers for those API calls taking two filenames
|
| -int currentStr = 0;
|
| -
|
| -const char* GetFilename(const char* filename)
|
| -{
|
| - currentStr = !currentStr;
|
| - sprintf(filenameStr[currentStr], "/sdcard/admtest/%s", filename);
|
| - return filenameStr[currentStr];
|
| -}
|
| -#elif !defined(WEBRTC_IOS)
|
| -const char* GetFilename(const char* filename) {
|
| - std::string full_path_filename = webrtc::test::OutputPath() + filename;
|
| - return full_path_filename.c_str();
|
| -}
|
| -#endif
|
| -
|
| -using namespace webrtc;
|
| -
|
| -class AudioEventObserverAPI: public AudioDeviceObserver {
|
| - public:
|
| - AudioEventObserverAPI(
|
| - const rtc::scoped_refptr<AudioDeviceModule>& audioDevice)
|
| - : error_(kRecordingError),
|
| - warning_(kRecordingWarning),
|
| - audio_device_(audioDevice) {}
|
| -
|
| - ~AudioEventObserverAPI() override {}
|
| -
|
| - void OnErrorIsReported(const ErrorCode error) override {
|
| - TEST_LOG("\n[*** ERROR ***] => OnErrorIsReported(%d)\n\n", error);
|
| - error_ = error;
|
| - }
|
| -
|
| - void OnWarningIsReported(const WarningCode warning) override {
|
| - TEST_LOG("\n[*** WARNING ***] => OnWarningIsReported(%d)\n\n", warning);
|
| - warning_ = warning;
|
| - EXPECT_EQ(0, audio_device_->StopRecording());
|
| - EXPECT_EQ(0, audio_device_->StopPlayout());
|
| - }
|
| -
|
| - public:
|
| - ErrorCode error_;
|
| - WarningCode warning_;
|
| - private:
|
| - rtc::scoped_refptr<AudioDeviceModule> audio_device_;
|
| -};
|
| -
|
| -class AudioTransportAPI: public AudioTransport {
|
| - public:
|
| - AudioTransportAPI(const rtc::scoped_refptr<AudioDeviceModule>& audioDevice)
|
| - : rec_count_(0),
|
| - play_count_(0) {
|
| - }
|
| -
|
| - ~AudioTransportAPI() override {}
|
| -
|
| - int32_t RecordedDataIsAvailable(const void* audioSamples,
|
| - const size_t nSamples,
|
| - const size_t nBytesPerSample,
|
| - const size_t nChannels,
|
| - const uint32_t sampleRate,
|
| - const uint32_t totalDelay,
|
| - const int32_t clockSkew,
|
| - const uint32_t currentMicLevel,
|
| - const bool keyPressed,
|
| - uint32_t& newMicLevel) override {
|
| - rec_count_++;
|
| - if (rec_count_ % 100 == 0) {
|
| - if (nChannels == 1) {
|
| - // mono
|
| - TEST_LOG("-");
|
| - } else if ((nChannels == 2) && (nBytesPerSample == 2)) {
|
| - // stereo but only using one channel
|
| - TEST_LOG("-|");
|
| - } else {
|
| - // stereo
|
| - TEST_LOG("--");
|
| - }
|
| - }
|
| - return 0;
|
| - }
|
| -
|
| - int32_t NeedMorePlayData(const size_t nSamples,
|
| - const size_t nBytesPerSample,
|
| - const size_t nChannels,
|
| - const uint32_t sampleRate,
|
| - void* audioSamples,
|
| - size_t& nSamplesOut,
|
| - int64_t* elapsed_time_ms,
|
| - int64_t* ntp_time_ms) override {
|
| - play_count_++;
|
| - if (play_count_ % 100 == 0) {
|
| - if (nChannels == 1) {
|
| - TEST_LOG("+");
|
| - } else {
|
| - TEST_LOG("++");
|
| - }
|
| - }
|
| - nSamplesOut = 480;
|
| - return 0;
|
| - }
|
| -
|
| - void PushCaptureData(int voe_channel,
|
| - const void* audio_data,
|
| - int bits_per_sample,
|
| - int sample_rate,
|
| - size_t number_of_channels,
|
| - size_t number_of_frames) override {}
|
| -
|
| - void PullRenderData(int bits_per_sample,
|
| - int sample_rate,
|
| - size_t number_of_channels,
|
| - size_t number_of_frames,
|
| - void* audio_data,
|
| - int64_t* elapsed_time_ms,
|
| - int64_t* ntp_time_ms) override {}
|
| -
|
| - private:
|
| - uint32_t rec_count_;
|
| - uint32_t play_count_;
|
| -};
|
| -
|
| -class AudioDeviceAPITest: public testing::Test {
|
| - protected:
|
| - AudioDeviceAPITest() {}
|
| -
|
| - ~AudioDeviceAPITest() override {}
|
| -
|
| - static void SetUpTestCase() {
|
| - process_thread_ = ProcessThread::Create("ProcessThread");
|
| - process_thread_->Start();
|
| -
|
| - // Windows:
|
| - // if (WEBRTC_WINDOWS_CORE_AUDIO_BUILD)
|
| - // user can select only the default (Core)
|
| - const int32_t kId = 444;
|
| -
|
| -#if defined(WEBRTC_WINDOWS_CORE_AUDIO_BUILD)
|
| - TEST_LOG("WEBRTC_WINDOWS_CORE_AUDIO_BUILD is defined!\n\n");
|
| - // create default implementation (=Core Audio) instance
|
| - EXPECT_TRUE((audio_device_ = AudioDeviceModule::Create(
|
| - kId, AudioDeviceModule::kPlatformDefaultAudio)) != NULL);
|
| - EXPECT_EQ(0, audio_device_.release()->Release());
|
| - // explicitly specify usage of Core Audio (same as default)
|
| - EXPECT_TRUE((audio_device_ = AudioDeviceModule::Create(
|
| - kId, AudioDeviceModule::kWindowsCoreAudio)) != NULL);
|
| -#endif
|
| -
|
| -#if defined(ANDROID)
|
| - // Fails tests
|
| - EXPECT_TRUE((audio_device_ = AudioDeviceModule::Create(
|
| - kId, AudioDeviceModule::kWindowsCoreAudio)) == NULL);
|
| - EXPECT_TRUE((audio_device_ = AudioDeviceModule::Create(
|
| - kId, AudioDeviceModule::kLinuxAlsaAudio)) == NULL);
|
| - EXPECT_TRUE((audio_device_ = AudioDeviceModule::Create(
|
| - kId, AudioDeviceModule::kLinuxPulseAudio)) == NULL);
|
| - // Create default implementation instance
|
| - EXPECT_TRUE((audio_device_ = AudioDeviceModule::Create(
|
| - kId, AudioDeviceModule::kPlatformDefaultAudio)) != NULL);
|
| -#elif defined(WEBRTC_LINUX)
|
| - EXPECT_TRUE((audio_device_ = AudioDeviceModule::Create(
|
| - kId, AudioDeviceModule::kWindowsCoreAudio)) == NULL);
|
| - // create default implementation instance
|
| - EXPECT_TRUE((audio_device_ = AudioDeviceModule::Create(
|
| - kId, AudioDeviceModule::kPlatformDefaultAudio)) != NULL);
|
| - EXPECT_EQ(0, audio_device_->Terminate());
|
| - EXPECT_EQ(0, audio_device_.release()->Release());
|
| - // explicitly specify usage of Pulse Audio (same as default)
|
| - EXPECT_TRUE((audio_device_ = AudioDeviceModule::Create(
|
| - kId, AudioDeviceModule::kLinuxPulseAudio)) != NULL);
|
| -#endif
|
| -
|
| -#if defined(WEBRTC_MAC)
|
| - // Fails tests
|
| - EXPECT_TRUE((audio_device_ = AudioDeviceModule::Create(
|
| - kId, AudioDeviceModule::kWindowsCoreAudio)) == NULL);
|
| - EXPECT_TRUE((audio_device_ = AudioDeviceModule::Create(
|
| - kId, AudioDeviceModule::kLinuxAlsaAudio)) == NULL);
|
| - EXPECT_TRUE((audio_device_ = AudioDeviceModule::Create(
|
| - kId, AudioDeviceModule::kLinuxPulseAudio)) == NULL);
|
| - // Create default implementation instance
|
| - EXPECT_TRUE((audio_device_ = AudioDeviceModule::Create(
|
| - kId, AudioDeviceModule::kPlatformDefaultAudio)) != NULL);
|
| -#endif
|
| -
|
| - if (audio_device_ == NULL) {
|
| - FAIL() << "Failed creating audio device object!";
|
| - }
|
| -
|
| - process_thread_->RegisterModule(audio_device_);
|
| -
|
| - AudioDeviceModule::AudioLayer audio_layer =
|
| - AudioDeviceModule::kPlatformDefaultAudio;
|
| - EXPECT_EQ(0, audio_device_->ActiveAudioLayer(&audio_layer));
|
| - if (audio_layer == AudioDeviceModule::kLinuxAlsaAudio) {
|
| - linux_alsa_ = true;
|
| - }
|
| - }
|
| -
|
| - static void TearDownTestCase() {
|
| - if (process_thread_) {
|
| - process_thread_->DeRegisterModule(audio_device_);
|
| - process_thread_->Stop();
|
| - process_thread_.reset();
|
| - }
|
| - if (event_observer_) {
|
| - delete event_observer_;
|
| - event_observer_ = NULL;
|
| - }
|
| - if (audio_transport_) {
|
| - delete audio_transport_;
|
| - audio_transport_ = NULL;
|
| - }
|
| - if (audio_device_)
|
| - EXPECT_EQ(0, audio_device_.release()->Release());
|
| - PRINT_TEST_RESULTS;
|
| - }
|
| -
|
| - void SetUp() override {
|
| - if (linux_alsa_) {
|
| - FAIL() << "API Test is not available on ALSA on Linux!";
|
| - }
|
| - EXPECT_EQ(0, audio_device_->Init());
|
| - EXPECT_TRUE(audio_device_->Initialized());
|
| - }
|
| -
|
| - void TearDown() override { EXPECT_EQ(0, audio_device_->Terminate()); }
|
| -
|
| - void CheckVolume(uint32_t expected, uint32_t actual) {
|
| - // Mac and Windows have lower resolution on the volume settings.
|
| -#if defined(WEBRTC_MAC) || defined(_WIN32)
|
| - int diff = abs(static_cast<int>(expected - actual));
|
| - EXPECT_LE(diff, 5);
|
| -#else
|
| - EXPECT_TRUE((actual == expected) || (actual == expected-1));
|
| -#endif
|
| - }
|
| -
|
| - void CheckInitialPlayoutStates() {
|
| - EXPECT_FALSE(audio_device_->PlayoutIsInitialized());
|
| - EXPECT_FALSE(audio_device_->Playing());
|
| - EXPECT_FALSE(audio_device_->SpeakerIsInitialized());
|
| - }
|
| -
|
| - void CheckInitialRecordingStates() {
|
| - EXPECT_FALSE(audio_device_->RecordingIsInitialized());
|
| - EXPECT_FALSE(audio_device_->Recording());
|
| - EXPECT_FALSE(audio_device_->MicrophoneIsInitialized());
|
| - }
|
| -
|
| - // TODO(henrika): Get rid of globals.
|
| - static bool linux_alsa_;
|
| - static std::unique_ptr<ProcessThread> process_thread_;
|
| - static rtc::scoped_refptr<AudioDeviceModule> audio_device_;
|
| - static AudioTransportAPI* audio_transport_;
|
| - static AudioEventObserverAPI* event_observer_;
|
| -};
|
| -
|
| -// Must be initialized like this to handle static SetUpTestCase() above.
|
| -bool AudioDeviceAPITest::linux_alsa_ = false;
|
| -std::unique_ptr<ProcessThread> AudioDeviceAPITest::process_thread_;
|
| -rtc::scoped_refptr<AudioDeviceModule> AudioDeviceAPITest::audio_device_;
|
| -AudioTransportAPI* AudioDeviceAPITest::audio_transport_ = NULL;
|
| -AudioEventObserverAPI* AudioDeviceAPITest::event_observer_ = NULL;
|
| -
|
| -TEST_F(AudioDeviceAPITest, RegisterEventObserver) {
|
| - event_observer_ = new AudioEventObserverAPI(audio_device_);
|
| - EXPECT_EQ(0, audio_device_->RegisterEventObserver(NULL));
|
| - EXPECT_EQ(0, audio_device_->RegisterEventObserver(event_observer_));
|
| - EXPECT_EQ(0, audio_device_->RegisterEventObserver(NULL));
|
| -}
|
| -
|
| -TEST_F(AudioDeviceAPITest, RegisterAudioCallback) {
|
| - audio_transport_ = new AudioTransportAPI(audio_device_);
|
| - EXPECT_EQ(0, audio_device_->RegisterAudioCallback(NULL));
|
| - EXPECT_EQ(0, audio_device_->RegisterAudioCallback(audio_transport_));
|
| - EXPECT_EQ(0, audio_device_->RegisterAudioCallback(NULL));
|
| -}
|
| -
|
| -TEST_F(AudioDeviceAPITest, Init) {
|
| - EXPECT_TRUE(audio_device_->Initialized());
|
| - EXPECT_EQ(0, audio_device_->Init());
|
| - EXPECT_TRUE(audio_device_->Initialized());
|
| - EXPECT_EQ(0, audio_device_->Terminate());
|
| - EXPECT_FALSE(audio_device_->Initialized());
|
| - EXPECT_EQ(0, audio_device_->Init());
|
| - EXPECT_TRUE(audio_device_->Initialized());
|
| - EXPECT_EQ(0, audio_device_->Terminate());
|
| - EXPECT_FALSE(audio_device_->Initialized());
|
| -}
|
| -
|
| -TEST_F(AudioDeviceAPITest, Terminate) {
|
| - EXPECT_TRUE(audio_device_->Initialized());
|
| - EXPECT_EQ(0, audio_device_->Terminate());
|
| - EXPECT_FALSE(audio_device_->Initialized());
|
| - EXPECT_EQ(0, audio_device_->Terminate());
|
| - EXPECT_FALSE(audio_device_->Initialized());
|
| - EXPECT_EQ(0, audio_device_->Init());
|
| - EXPECT_TRUE(audio_device_->Initialized());
|
| - EXPECT_EQ(0, audio_device_->Terminate());
|
| - EXPECT_FALSE(audio_device_->Initialized());
|
| -}
|
| -
|
| -TEST_F(AudioDeviceAPITest, PlayoutDevices) {
|
| - EXPECT_GT(audio_device_->PlayoutDevices(), 0);
|
| - EXPECT_GT(audio_device_->PlayoutDevices(), 0);
|
| -}
|
| -
|
| -TEST_F(AudioDeviceAPITest, RecordingDevices) {
|
| - EXPECT_GT(audio_device_->RecordingDevices(), 0);
|
| - EXPECT_GT(audio_device_->RecordingDevices(), 0);
|
| -}
|
| -
|
| -// TODO(henrika): uncomment when you have decided what to do with issue 3675.
|
| -#if 0
|
| -TEST_F(AudioDeviceAPITest, PlayoutDeviceName) {
|
| - char name[kAdmMaxDeviceNameSize];
|
| - char guid[kAdmMaxGuidSize];
|
| - int16_t no_devices = audio_device_->PlayoutDevices();
|
| -
|
| - // fail tests
|
| - EXPECT_EQ(-1, audio_device_->PlayoutDeviceName(-2, name, guid));
|
| - EXPECT_EQ(-1, audio_device_->PlayoutDeviceName(no_devices, name, guid));
|
| - EXPECT_EQ(-1, audio_device_->PlayoutDeviceName(0, NULL, guid));
|
| -
|
| - // bulk tests
|
| - EXPECT_EQ(0, audio_device_->PlayoutDeviceName(0, name, NULL));
|
| -#ifdef _WIN32
|
| - // shall be mapped to 0.
|
| - EXPECT_EQ(0, audio_device_->PlayoutDeviceName(-1, name, NULL));
|
| -#else
|
| - EXPECT_EQ(-1, audio_device_->PlayoutDeviceName(-1, name, NULL));
|
| -#endif
|
| - for (int i = 0; i < no_devices; i++) {
|
| - EXPECT_EQ(0, audio_device_->PlayoutDeviceName(i, name, guid));
|
| - EXPECT_EQ(0, audio_device_->PlayoutDeviceName(i, name, NULL));
|
| - }
|
| -}
|
| -
|
| -TEST_F(AudioDeviceAPITest, RecordingDeviceName) {
|
| - char name[kAdmMaxDeviceNameSize];
|
| - char guid[kAdmMaxGuidSize];
|
| - int16_t no_devices = audio_device_->RecordingDevices();
|
| -
|
| - // fail tests
|
| - EXPECT_EQ(-1, audio_device_->RecordingDeviceName(-2, name, guid));
|
| - EXPECT_EQ(-1, audio_device_->RecordingDeviceName(no_devices, name, guid));
|
| - EXPECT_EQ(-1, audio_device_->RecordingDeviceName(0, NULL, guid));
|
| -
|
| - // bulk tests
|
| - EXPECT_EQ(0, audio_device_->RecordingDeviceName(0, name, NULL));
|
| -#ifdef _WIN32
|
| - // shall me mapped to 0
|
| - EXPECT_EQ(0, audio_device_->RecordingDeviceName(-1, name, NULL));
|
| -#else
|
| - EXPECT_EQ(-1, audio_device_->RecordingDeviceName(-1, name, NULL));
|
| -#endif
|
| - for (int i = 0; i < no_devices; i++) {
|
| - EXPECT_EQ(0, audio_device_->RecordingDeviceName(i, name, guid));
|
| - EXPECT_EQ(0, audio_device_->RecordingDeviceName(i, name, NULL));
|
| - }
|
| -}
|
| -
|
| -TEST_F(AudioDeviceAPITest, SetPlayoutDevice) {
|
| - int16_t no_devices = audio_device_->PlayoutDevices();
|
| -
|
| - // fail tests
|
| - EXPECT_EQ(-1, audio_device_->SetPlayoutDevice(-1));
|
| - EXPECT_EQ(-1, audio_device_->SetPlayoutDevice(no_devices));
|
| -
|
| - // bulk tests
|
| -#ifdef _WIN32
|
| - EXPECT_EQ(0, audio_device_->SetPlayoutDevice(
|
| - AudioDeviceModule::kDefaultCommunicationDevice));
|
| - EXPECT_EQ(0, audio_device_->SetPlayoutDevice(
|
| - AudioDeviceModule::kDefaultDevice));
|
| -#else
|
| - EXPECT_EQ(-1, audio_device_->SetPlayoutDevice(
|
| - AudioDeviceModule::kDefaultCommunicationDevice));
|
| - EXPECT_EQ(-1, audio_device_->SetPlayoutDevice(
|
| - AudioDeviceModule::kDefaultDevice));
|
| -#endif
|
| - for (int i = 0; i < no_devices; i++) {
|
| - EXPECT_EQ(0, audio_device_->SetPlayoutDevice(i));
|
| - }
|
| -}
|
| -
|
| -TEST_F(AudioDeviceAPITest, SetRecordingDevice) {
|
| - EXPECT_EQ(0, audio_device_->Init());
|
| - int16_t no_devices = audio_device_->RecordingDevices();
|
| -
|
| - // fail tests
|
| - EXPECT_EQ(-1, audio_device_->SetRecordingDevice(-1));
|
| - EXPECT_EQ(-1, audio_device_->SetRecordingDevice(no_devices));
|
| -
|
| - // bulk tests
|
| -#ifdef _WIN32
|
| - EXPECT_TRUE(audio_device_->SetRecordingDevice(
|
| - AudioDeviceModule::kDefaultCommunicationDevice) == 0);
|
| - EXPECT_EQ(0, audio_device_->SetRecordingDevice(
|
| - AudioDeviceModule::kDefaultDevice));
|
| -#else
|
| - EXPECT_TRUE(audio_device_->SetRecordingDevice(
|
| - AudioDeviceModule::kDefaultCommunicationDevice) == -1);
|
| - EXPECT_TRUE(audio_device_->SetRecordingDevice(
|
| - AudioDeviceModule::kDefaultDevice) == -1);
|
| -#endif
|
| - for (int i = 0; i < no_devices; i++) {
|
| - EXPECT_EQ(0, audio_device_->SetRecordingDevice(i));
|
| - }
|
| -}
|
| -#endif // 0
|
| -
|
| -TEST_F(AudioDeviceAPITest, PlayoutIsAvailable) {
|
| - bool available;
|
| -#if defined(WEBRTC_WINDOWS_CORE_AUDIO_BUILD)
|
| - EXPECT_TRUE(audio_device_->SetPlayoutDevice(
|
| - AudioDeviceModule::kDefaultCommunicationDevice) == 0);
|
| - EXPECT_EQ(0, audio_device_->PlayoutIsAvailable(&available));
|
| - // Availability check should not initialize.
|
| - EXPECT_FALSE(audio_device_->PlayoutIsInitialized());
|
| -
|
| - EXPECT_EQ(0,
|
| - audio_device_->SetPlayoutDevice(AudioDeviceModule::kDefaultDevice));
|
| - EXPECT_EQ(0, audio_device_->PlayoutIsAvailable(&available));
|
| - EXPECT_FALSE(audio_device_->PlayoutIsInitialized());
|
| -#endif
|
| -
|
| - int16_t no_devices = audio_device_->PlayoutDevices();
|
| - for (int i = 0; i < no_devices; i++) {
|
| - EXPECT_EQ(0, audio_device_->SetPlayoutDevice(i));
|
| - EXPECT_EQ(0, audio_device_->PlayoutIsAvailable(&available));
|
| - EXPECT_FALSE(audio_device_->PlayoutIsInitialized());
|
| - }
|
| -}
|
| -
|
| -TEST_F(AudioDeviceAPITest, RecordingIsAvailable) {
|
| - bool available;
|
| -#if defined(WEBRTC_WINDOWS_CORE_AUDIO_BUILD)
|
| - EXPECT_EQ(0, audio_device_->SetRecordingDevice(
|
| - AudioDeviceModule::kDefaultCommunicationDevice));
|
| - EXPECT_EQ(0, audio_device_->RecordingIsAvailable(&available));
|
| - EXPECT_FALSE(audio_device_->RecordingIsInitialized());
|
| -
|
| - EXPECT_EQ(0, audio_device_->SetRecordingDevice(
|
| - AudioDeviceModule::kDefaultDevice));
|
| - EXPECT_EQ(0, audio_device_->RecordingIsAvailable(&available));
|
| - EXPECT_FALSE(audio_device_->RecordingIsInitialized());
|
| -#endif
|
| -
|
| - int16_t no_devices = audio_device_->RecordingDevices();
|
| - for (int i = 0; i < no_devices; i++) {
|
| - EXPECT_EQ(0, audio_device_->SetRecordingDevice(i));
|
| - EXPECT_EQ(0, audio_device_->RecordingIsAvailable(&available));
|
| - EXPECT_FALSE(audio_device_->RecordingIsInitialized());
|
| - }
|
| -}
|
| -
|
| -TEST_F(AudioDeviceAPITest, InitPlayout) {
|
| - // check initial state
|
| - EXPECT_FALSE(audio_device_->PlayoutIsInitialized());
|
| -
|
| - // ensure that device must be set before we can initialize
|
| - EXPECT_EQ(-1, audio_device_->InitPlayout());
|
| - EXPECT_EQ(0, audio_device_->SetPlayoutDevice(MACRO_DEFAULT_DEVICE));
|
| - EXPECT_EQ(0, audio_device_->InitPlayout());
|
| - EXPECT_TRUE(audio_device_->PlayoutIsInitialized());
|
| -
|
| - // bulk tests
|
| - bool available;
|
| - EXPECT_EQ(0, audio_device_->PlayoutIsAvailable(&available));
|
| - if (available) {
|
| - EXPECT_EQ(0, audio_device_->InitPlayout());
|
| - EXPECT_TRUE(audio_device_->PlayoutIsInitialized());
|
| - EXPECT_EQ(0, audio_device_->InitPlayout());
|
| - EXPECT_EQ(-1, audio_device_->SetPlayoutDevice(
|
| - MACRO_DEFAULT_COMMUNICATION_DEVICE));
|
| - EXPECT_EQ(0, audio_device_->StopPlayout());
|
| - EXPECT_FALSE(audio_device_->PlayoutIsInitialized());
|
| - }
|
| -
|
| - EXPECT_EQ(0, audio_device_->SetPlayoutDevice(
|
| - MACRO_DEFAULT_COMMUNICATION_DEVICE));
|
| - EXPECT_EQ(0, audio_device_->PlayoutIsAvailable(&available));
|
| - if (available) {
|
| - EXPECT_EQ(0, audio_device_->InitPlayout());
|
| - // Sleep is needed for e.g. iPhone since we after stopping then starting may
|
| - // have a hangover time of a couple of ms before initialized.
|
| - SleepMs(50);
|
| - EXPECT_TRUE(audio_device_->PlayoutIsInitialized());
|
| - }
|
| -
|
| - int16_t no_devices = audio_device_->PlayoutDevices();
|
| - for (int i = 0; i < no_devices; i++) {
|
| - EXPECT_EQ(0, audio_device_->PlayoutIsAvailable(&available));
|
| - if (available) {
|
| - EXPECT_EQ(0, audio_device_->StopPlayout());
|
| - EXPECT_FALSE(audio_device_->PlayoutIsInitialized());
|
| - EXPECT_EQ(0, audio_device_->SetPlayoutDevice(i));
|
| - EXPECT_EQ(0, audio_device_->PlayoutIsAvailable(&available));
|
| - if (available) {
|
| - EXPECT_EQ(0, audio_device_->InitPlayout());
|
| - EXPECT_TRUE(audio_device_->PlayoutIsInitialized());
|
| - }
|
| - }
|
| - }
|
| - EXPECT_EQ(0, audio_device_->StopPlayout());
|
| -}
|
| -
|
| -TEST_F(AudioDeviceAPITest, InitRecording) {
|
| - // check initial state
|
| - EXPECT_FALSE(audio_device_->RecordingIsInitialized());
|
| -
|
| - // ensure that device must be set before we can initialize
|
| - EXPECT_EQ(-1, audio_device_->InitRecording());
|
| - EXPECT_EQ(0, audio_device_->SetRecordingDevice(MACRO_DEFAULT_DEVICE));
|
| - EXPECT_EQ(0, audio_device_->InitRecording());
|
| - EXPECT_TRUE(audio_device_->RecordingIsInitialized());
|
| -
|
| - // bulk tests
|
| - bool available;
|
| - EXPECT_EQ(0, audio_device_->RecordingIsAvailable(&available));
|
| - if (available) {
|
| - EXPECT_EQ(0, audio_device_->InitRecording());
|
| - EXPECT_TRUE(audio_device_->RecordingIsInitialized());
|
| - EXPECT_EQ(0, audio_device_->InitRecording());
|
| - EXPECT_EQ(-1,
|
| - audio_device_->SetRecordingDevice(MACRO_DEFAULT_COMMUNICATION_DEVICE));
|
| - EXPECT_EQ(0, audio_device_->StopRecording());
|
| - EXPECT_FALSE(audio_device_->RecordingIsInitialized());
|
| - }
|
| -
|
| - EXPECT_EQ(0,
|
| - audio_device_->SetRecordingDevice(MACRO_DEFAULT_COMMUNICATION_DEVICE));
|
| - EXPECT_EQ(0, audio_device_->RecordingIsAvailable(&available));
|
| - if (available) {
|
| - EXPECT_EQ(0, audio_device_->InitRecording());
|
| - SleepMs(50);
|
| - EXPECT_TRUE(audio_device_->RecordingIsInitialized());
|
| - }
|
| -
|
| - int16_t no_devices = audio_device_->RecordingDevices();
|
| - for (int i = 0; i < no_devices; i++) {
|
| - EXPECT_EQ(0, audio_device_->RecordingIsAvailable(&available));
|
| - if (available) {
|
| - EXPECT_EQ(0, audio_device_->StopRecording());
|
| - EXPECT_FALSE(audio_device_->RecordingIsInitialized());
|
| - EXPECT_EQ(0, audio_device_->SetRecordingDevice(i));
|
| - EXPECT_EQ(0, audio_device_->RecordingIsAvailable(&available));
|
| - if (available) {
|
| - EXPECT_EQ(0, audio_device_->InitRecording());
|
| - EXPECT_TRUE(audio_device_->RecordingIsInitialized());
|
| - }
|
| - }
|
| - }
|
| - EXPECT_EQ(0, audio_device_->StopRecording());
|
| -}
|
| -
|
| -TEST_F(AudioDeviceAPITest, StartAndStopPlayout) {
|
| - bool available;
|
| - EXPECT_EQ(0, audio_device_->RegisterAudioCallback(NULL));
|
| -
|
| - CheckInitialPlayoutStates();
|
| -
|
| - EXPECT_EQ(-1, audio_device_->StartPlayout());
|
| - EXPECT_EQ(0, audio_device_->StopPlayout());
|
| -
|
| -#if defined(WEBRTC_WINDOWS_CORE_AUDIO_BUILD)
|
| - // kDefaultCommunicationDevice
|
| - EXPECT_TRUE(audio_device_->SetPlayoutDevice(
|
| - AudioDeviceModule::kDefaultCommunicationDevice) == 0);
|
| - EXPECT_EQ(0, audio_device_->PlayoutIsAvailable(&available));
|
| - if (available)
|
| - {
|
| - EXPECT_FALSE(audio_device_->PlayoutIsInitialized());
|
| - EXPECT_EQ(0, audio_device_->InitPlayout());
|
| - EXPECT_EQ(0, audio_device_->StartPlayout());
|
| - EXPECT_TRUE(audio_device_->Playing());
|
| - EXPECT_EQ(-1, audio_device_->RegisterAudioCallback(audio_transport_));
|
| - EXPECT_EQ(0, audio_device_->StopPlayout());
|
| - EXPECT_FALSE(audio_device_->Playing());
|
| - EXPECT_EQ(0, audio_device_->RegisterAudioCallback(NULL));
|
| - }
|
| -#endif
|
| -
|
| - // repeat test but for kDefaultDevice
|
| - EXPECT_EQ(0, audio_device_->SetPlayoutDevice(MACRO_DEFAULT_DEVICE));
|
| - EXPECT_EQ(0, audio_device_->PlayoutIsAvailable(&available));
|
| - if (available) {
|
| - EXPECT_FALSE(audio_device_->PlayoutIsInitialized());
|
| - EXPECT_EQ(0, audio_device_->InitPlayout());
|
| - EXPECT_EQ(0, audio_device_->StartPlayout());
|
| - EXPECT_TRUE(audio_device_->Playing());
|
| - EXPECT_EQ(-1, audio_device_->RegisterAudioCallback(audio_transport_));
|
| - EXPECT_EQ(0, audio_device_->StopPlayout());
|
| - EXPECT_FALSE(audio_device_->Playing());
|
| - EXPECT_EQ(0, audio_device_->RegisterAudioCallback(NULL));
|
| - }
|
| -
|
| - // repeat test for all devices
|
| - int16_t no_devices = audio_device_->PlayoutDevices();
|
| - for (int i = 0; i < no_devices; i++) {
|
| - EXPECT_EQ(0, audio_device_->SetPlayoutDevice(i));
|
| - EXPECT_EQ(0, audio_device_->PlayoutIsAvailable(&available));
|
| - if (available) {
|
| - EXPECT_FALSE(audio_device_->PlayoutIsInitialized());
|
| - EXPECT_EQ(0, audio_device_->InitPlayout());
|
| - EXPECT_EQ(0, audio_device_->StartPlayout());
|
| - EXPECT_TRUE(audio_device_->Playing());
|
| - EXPECT_EQ(-1, audio_device_->RegisterAudioCallback(audio_transport_));
|
| - EXPECT_EQ(0, audio_device_->StopPlayout());
|
| - EXPECT_FALSE(audio_device_->Playing());
|
| - EXPECT_EQ(0, audio_device_->RegisterAudioCallback(NULL));
|
| - }
|
| - }
|
| -}
|
| -
|
| -TEST_F(AudioDeviceAPITest, StartAndStopRecording) {
|
| - bool available;
|
| - EXPECT_EQ(0, audio_device_->RegisterAudioCallback(NULL));
|
| -
|
| - CheckInitialRecordingStates();
|
| -
|
| - EXPECT_EQ(-1, audio_device_->StartRecording());
|
| - EXPECT_EQ(0, audio_device_->StopRecording());
|
| -
|
| -#if defined(WEBRTC_WINDOWS_CORE_AUDIO_BUILD)
|
| - // kDefaultCommunicationDevice
|
| - EXPECT_TRUE(audio_device_->SetRecordingDevice(
|
| - AudioDeviceModule::kDefaultCommunicationDevice) == 0);
|
| - EXPECT_EQ(0, audio_device_->RecordingIsAvailable(&available));
|
| - if (available)
|
| - {
|
| - EXPECT_FALSE(audio_device_->RecordingIsInitialized());
|
| - EXPECT_EQ(0, audio_device_->InitRecording());
|
| - EXPECT_EQ(0, audio_device_->StartRecording());
|
| - EXPECT_TRUE(audio_device_->Recording());
|
| - EXPECT_EQ(-1, audio_device_->RegisterAudioCallback(audio_transport_));
|
| - EXPECT_EQ(0, audio_device_->StopRecording());
|
| - EXPECT_FALSE(audio_device_->Recording());
|
| - EXPECT_EQ(0, audio_device_->RegisterAudioCallback(NULL));
|
| - }
|
| -#endif
|
| -
|
| - // repeat test but for kDefaultDevice
|
| - EXPECT_EQ(0, audio_device_->SetRecordingDevice(MACRO_DEFAULT_DEVICE));
|
| - EXPECT_EQ(0, audio_device_->RecordingIsAvailable(&available));
|
| - if (available) {
|
| - EXPECT_FALSE(audio_device_->RecordingIsInitialized());
|
| - EXPECT_EQ(0, audio_device_->InitRecording());
|
| - EXPECT_EQ(0, audio_device_->StartRecording());
|
| - EXPECT_TRUE(audio_device_->Recording());
|
| - EXPECT_EQ(-1, audio_device_->RegisterAudioCallback(audio_transport_));
|
| - EXPECT_EQ(0, audio_device_->StopRecording());
|
| - EXPECT_FALSE(audio_device_->Recording());
|
| - EXPECT_EQ(0, audio_device_->RegisterAudioCallback(NULL));
|
| - }
|
| -
|
| - // repeat test for all devices
|
| - int16_t no_devices = audio_device_->RecordingDevices();
|
| - for (int i = 0; i < no_devices; i++) {
|
| - EXPECT_EQ(0, audio_device_->SetRecordingDevice(i));
|
| - EXPECT_EQ(0, audio_device_->RecordingIsAvailable(&available));
|
| - if (available) {
|
| - EXPECT_FALSE(audio_device_->RecordingIsInitialized());
|
| - EXPECT_EQ(0, audio_device_->InitRecording());
|
| - EXPECT_EQ(0, audio_device_->StartRecording());
|
| - EXPECT_TRUE(audio_device_->Recording());
|
| - EXPECT_EQ(-1, audio_device_->RegisterAudioCallback(audio_transport_));
|
| - EXPECT_EQ(0, audio_device_->StopRecording());
|
| - EXPECT_FALSE(audio_device_->Recording());
|
| - EXPECT_EQ(0, audio_device_->RegisterAudioCallback(NULL));
|
| - }
|
| - }
|
| -}
|
| -
|
| -
|
| -TEST_F(AudioDeviceAPITest, InitSpeaker) {
|
| - // NOTE: By calling Terminate (in TearDown) followed by Init (in SetUp) we
|
| - // ensure that any existing output mixer handle is set to NULL.
|
| - // The mixer handle is closed and reopened again for each call to
|
| - // SetPlayoutDevice.
|
| - CheckInitialPlayoutStates();
|
| -
|
| - // kDefaultCommunicationDevice
|
| - EXPECT_EQ(0, audio_device_->SetPlayoutDevice(
|
| - MACRO_DEFAULT_COMMUNICATION_DEVICE));
|
| - EXPECT_EQ(0, audio_device_->InitSpeaker());
|
| -
|
| - // fail tests
|
| - bool available;
|
| - EXPECT_EQ(0, audio_device_->PlayoutIsAvailable(&available));
|
| - if (available) {
|
| - EXPECT_EQ(0, audio_device_->InitPlayout());
|
| - EXPECT_EQ(0, audio_device_->StartPlayout());
|
| - EXPECT_EQ(-1, audio_device_->InitSpeaker());
|
| - EXPECT_EQ(0, audio_device_->StopPlayout());
|
| - }
|
| -
|
| - // kDefaultDevice
|
| - EXPECT_EQ(0, audio_device_->SetPlayoutDevice(MACRO_DEFAULT_DEVICE));
|
| - EXPECT_EQ(0, audio_device_->InitSpeaker());
|
| -
|
| - // repeat test for all devices
|
| - int16_t no_devices = audio_device_->PlayoutDevices();
|
| - for (int i = 0; i < no_devices; i++) {
|
| - EXPECT_EQ(0, audio_device_->SetPlayoutDevice(i));
|
| - EXPECT_EQ(0, audio_device_->InitSpeaker());
|
| - }
|
| -}
|
| -
|
| -TEST_F(AudioDeviceAPITest, InitMicrophone) {
|
| - // NOTE: By calling Terminate (in TearDown) followed by Init (in SetUp) we
|
| - // ensure that any existing output mixer handle is set to NULL.
|
| - // The mixer handle is closed and reopened again for each call to
|
| - // SetRecordingDevice.
|
| - CheckInitialRecordingStates();
|
| -
|
| - // kDefaultCommunicationDevice
|
| - EXPECT_EQ(0,
|
| - audio_device_->SetRecordingDevice(MACRO_DEFAULT_COMMUNICATION_DEVICE));
|
| - EXPECT_EQ(0, audio_device_->InitMicrophone());
|
| -
|
| - // fail tests
|
| - bool available;
|
| - EXPECT_EQ(0, audio_device_->RecordingIsAvailable(&available));
|
| - if (available) {
|
| - EXPECT_EQ(0, audio_device_->InitRecording());
|
| - EXPECT_EQ(0, audio_device_->StartRecording());
|
| - EXPECT_EQ(-1, audio_device_->InitMicrophone());
|
| - EXPECT_EQ(0, audio_device_->StopRecording());
|
| - }
|
| -
|
| - // kDefaultDevice
|
| - EXPECT_EQ(0, audio_device_->SetRecordingDevice(MACRO_DEFAULT_DEVICE));
|
| - EXPECT_EQ(0, audio_device_->InitMicrophone());
|
| -
|
| - // repeat test for all devices
|
| - int16_t no_devices = audio_device_->RecordingDevices();
|
| - for (int i = 0; i < no_devices; i++) {
|
| - EXPECT_EQ(0, audio_device_->SetRecordingDevice(i));
|
| - EXPECT_EQ(0, audio_device_->InitMicrophone());
|
| - }
|
| -}
|
| -
|
| -TEST_F(AudioDeviceAPITest, SpeakerVolumeIsAvailable) {
|
| - CheckInitialPlayoutStates();
|
| - bool available;
|
| -
|
| -#if defined(WEBRTC_WINDOWS_CORE_AUDIO_BUILD)
|
| - // check the kDefaultCommunicationDevice
|
| - EXPECT_TRUE(audio_device_->SetPlayoutDevice(
|
| - AudioDeviceModule::kDefaultCommunicationDevice) == 0);
|
| - EXPECT_EQ(0, audio_device_->SpeakerVolumeIsAvailable(&available));
|
| - // check for availability should not lead to initialization
|
| - EXPECT_FALSE(audio_device_->SpeakerIsInitialized());
|
| -#endif
|
| -
|
| - // check the kDefaultDevice
|
| - EXPECT_EQ(0, audio_device_->SetPlayoutDevice(MACRO_DEFAULT_DEVICE));
|
| - EXPECT_EQ(0, audio_device_->SpeakerVolumeIsAvailable(&available));
|
| - EXPECT_FALSE(audio_device_->SpeakerIsInitialized());
|
| -
|
| - // check all availiable devices
|
| - int16_t no_devices = audio_device_->PlayoutDevices();
|
| - for (int i = 0; i < no_devices; i++) {
|
| - EXPECT_EQ(0, audio_device_->SetPlayoutDevice(i));
|
| - EXPECT_EQ(0, audio_device_->SpeakerVolumeIsAvailable(&available));
|
| - EXPECT_FALSE(audio_device_->SpeakerIsInitialized());
|
| - }
|
| -}
|
| -
|
| -// Tests the following methods:
|
| -// SetSpeakerVolume
|
| -// SpeakerVolume
|
| -// MaxSpeakerVolume
|
| -// MinSpeakerVolume
|
| -// NOTE: Disabled on mac due to issue 257.
|
| -#ifndef WEBRTC_MAC
|
| -TEST_F(AudioDeviceAPITest, SpeakerVolumeTests) {
|
| - uint32_t vol(0);
|
| - uint32_t volume(0);
|
| - uint32_t maxVolume(0);
|
| - uint32_t minVolume(0);
|
| - uint16_t stepSize(0);
|
| - bool available;
|
| - CheckInitialPlayoutStates();
|
| -
|
| - // fail tests
|
| - EXPECT_EQ(-1, audio_device_->SetSpeakerVolume(0));
|
| - // speaker must be initialized first
|
| - EXPECT_EQ(-1, audio_device_->SpeakerVolume(&volume));
|
| - EXPECT_EQ(-1, audio_device_->MaxSpeakerVolume(&maxVolume));
|
| - EXPECT_EQ(-1, audio_device_->MinSpeakerVolume(&minVolume));
|
| - EXPECT_EQ(-1, audio_device_->SpeakerVolumeStepSize(&stepSize));
|
| -
|
| -#if defined(WEBRTC_WINDOWS_CORE_AUDIO_BUILD)
|
| - // use kDefaultCommunicationDevice and modify/retrieve the volume
|
| - EXPECT_TRUE(audio_device_->SetPlayoutDevice(
|
| - AudioDeviceModule::kDefaultCommunicationDevice) == 0);
|
| - EXPECT_EQ(0, audio_device_->SpeakerVolumeIsAvailable(&available));
|
| - if (available) {
|
| - EXPECT_EQ(0, audio_device_->InitSpeaker());
|
| - EXPECT_EQ(0, audio_device_->MaxSpeakerVolume(&maxVolume));
|
| - EXPECT_EQ(0, audio_device_->MinSpeakerVolume(&minVolume));
|
| - EXPECT_EQ(0, audio_device_->SpeakerVolumeStepSize(&stepSize));
|
| - for (vol = minVolume; vol < (unsigned int)maxVolume; vol += 20*stepSize) {
|
| - EXPECT_EQ(0, audio_device_->SetSpeakerVolume(vol));
|
| - EXPECT_EQ(0, audio_device_->SpeakerVolume(&volume));
|
| - CheckVolume(volume, vol);
|
| - }
|
| - }
|
| -#endif
|
| -
|
| - // use kDefaultDevice and modify/retrieve the volume
|
| - EXPECT_EQ(0, audio_device_->SetPlayoutDevice(MACRO_DEFAULT_DEVICE));
|
| - EXPECT_EQ(0, audio_device_->SpeakerVolumeIsAvailable(&available));
|
| - if (available) {
|
| - EXPECT_EQ(0, audio_device_->InitSpeaker());
|
| - EXPECT_EQ(0, audio_device_->MaxSpeakerVolume(&maxVolume));
|
| - EXPECT_EQ(0, audio_device_->MinSpeakerVolume(&minVolume));
|
| - EXPECT_EQ(0, audio_device_->SpeakerVolumeStepSize(&stepSize));
|
| - uint32_t step = (maxVolume - minVolume) / 10;
|
| - step = (step < stepSize ? stepSize : step);
|
| - for (vol = minVolume; vol <= maxVolume; vol += step) {
|
| - EXPECT_EQ(0, audio_device_->SetSpeakerVolume(vol));
|
| - EXPECT_EQ(0, audio_device_->SpeakerVolume(&volume));
|
| - CheckVolume(volume, vol);
|
| - }
|
| - }
|
| -
|
| - // use all (indexed) devices and modify/retrieve the volume
|
| - int16_t no_devices = audio_device_->PlayoutDevices();
|
| - for (int i = 0; i < no_devices; i++) {
|
| - EXPECT_EQ(0, audio_device_->SetPlayoutDevice(i));
|
| - EXPECT_EQ(0, audio_device_->SpeakerVolumeIsAvailable(&available));
|
| - if (available) {
|
| - EXPECT_EQ(0, audio_device_->InitSpeaker());
|
| - EXPECT_EQ(0, audio_device_->MaxSpeakerVolume(&maxVolume));
|
| - EXPECT_EQ(0, audio_device_->MinSpeakerVolume(&minVolume));
|
| - EXPECT_EQ(0, audio_device_->SpeakerVolumeStepSize(&stepSize));
|
| - uint32_t step = (maxVolume - minVolume) / 10;
|
| - step = (step < stepSize ? stepSize : step);
|
| - for (vol = minVolume; vol <= maxVolume; vol += step) {
|
| - EXPECT_EQ(0, audio_device_->SetSpeakerVolume(vol));
|
| - EXPECT_EQ(0, audio_device_->SpeakerVolume(&volume));
|
| - CheckVolume(volume, vol);
|
| - }
|
| - }
|
| - }
|
| -
|
| - // restore reasonable level
|
| - EXPECT_EQ(0, audio_device_->SetPlayoutDevice(MACRO_DEFAULT_DEVICE));
|
| - EXPECT_EQ(0, audio_device_->SpeakerVolumeIsAvailable(&available));
|
| - if (available) {
|
| - EXPECT_EQ(0, audio_device_->InitSpeaker());
|
| - EXPECT_EQ(0, audio_device_->MaxSpeakerVolume(&maxVolume));
|
| - EXPECT_TRUE(audio_device_->SetSpeakerVolume(maxVolume < 10 ?
|
| - maxVolume/3 : maxVolume/10) == 0);
|
| - }
|
| -}
|
| -#endif // !WEBRTC_MAC
|
| -
|
| -TEST_F(AudioDeviceAPITest, AGC) {
|
| - // NOTE: The AGC API only enables/disables the AGC. To ensure that it will
|
| - // have an effect, use it in combination with MicrophoneVolumeIsAvailable.
|
| - CheckInitialRecordingStates();
|
| - EXPECT_FALSE(audio_device_->AGC());
|
| -
|
| - // set/get tests
|
| - EXPECT_EQ(0, audio_device_->SetAGC(true));
|
| - EXPECT_TRUE(audio_device_->AGC());
|
| - EXPECT_EQ(0, audio_device_->SetAGC(false));
|
| - EXPECT_FALSE(audio_device_->AGC());
|
| -}
|
| -
|
| -TEST_F(AudioDeviceAPITest, MicrophoneVolumeIsAvailable) {
|
| - CheckInitialRecordingStates();
|
| - bool available;
|
| -
|
| -#if defined(WEBRTC_WINDOWS_CORE_AUDIO_BUILD)
|
| - // check the kDefaultCommunicationDevice
|
| - EXPECT_TRUE(audio_device_->SetRecordingDevice(
|
| - AudioDeviceModule::kDefaultCommunicationDevice) == 0);
|
| - EXPECT_EQ(0, audio_device_->MicrophoneVolumeIsAvailable(&available));
|
| - // check for availability should not lead to initialization
|
| - EXPECT_FALSE(audio_device_->MicrophoneIsInitialized());
|
| -#endif
|
| -
|
| - // check the kDefaultDevice
|
| - EXPECT_EQ(0, audio_device_->SetRecordingDevice(MACRO_DEFAULT_DEVICE));
|
| - EXPECT_EQ(0, audio_device_->MicrophoneVolumeIsAvailable(&available));
|
| - EXPECT_FALSE(audio_device_->MicrophoneIsInitialized());
|
| -
|
| - // check all availiable devices
|
| - int16_t no_devices = audio_device_->RecordingDevices();
|
| - for (int i = 0; i < no_devices; i++) {
|
| - EXPECT_EQ(0, audio_device_->SetRecordingDevice(i));
|
| - EXPECT_EQ(0, audio_device_->MicrophoneVolumeIsAvailable(&available));
|
| - EXPECT_FALSE(audio_device_->MicrophoneIsInitialized());
|
| - }
|
| -}
|
| -
|
| -// Tests the methods:
|
| -// SetMicrophoneVolume
|
| -// MicrophoneVolume
|
| -// MaxMicrophoneVolume
|
| -// MinMicrophoneVolume
|
| -
|
| -// Disabled on Mac and Linux,
|
| -// see https://bugs.chromium.org/p/webrtc/issues/detail?id=5414
|
| -#if defined(WEBRTC_MAC) || defined(WEBRTC_LINUX)
|
| -#define MAYBE_MicrophoneVolumeTests DISABLED_MicrophoneVolumeTests
|
| -#else
|
| -#define MAYBE_MicrophoneVolumeTests MicrophoneVolumeTests
|
| -#endif
|
| -TEST_F(AudioDeviceAPITest, MAYBE_MicrophoneVolumeTests) {
|
| - uint32_t vol(0);
|
| - uint32_t volume(0);
|
| - uint32_t maxVolume(0);
|
| - uint32_t minVolume(0);
|
| - uint16_t stepSize(0);
|
| - bool available;
|
| - CheckInitialRecordingStates();
|
| -
|
| - // fail tests
|
| - EXPECT_EQ(-1, audio_device_->SetMicrophoneVolume(0));
|
| - // must be initialized first
|
| - EXPECT_EQ(-1, audio_device_->MicrophoneVolume(&volume));
|
| - EXPECT_EQ(-1, audio_device_->MaxMicrophoneVolume(&maxVolume));
|
| - EXPECT_EQ(-1, audio_device_->MinMicrophoneVolume(&minVolume));
|
| - EXPECT_EQ(-1, audio_device_->MicrophoneVolumeStepSize(&stepSize));
|
| -
|
| -#if defined(WEBRTC_WINDOWS_CORE_AUDIO_BUILD)
|
| - // initialize kDefaultCommunicationDevice and modify/retrieve the volume
|
| - EXPECT_TRUE(audio_device_->SetRecordingDevice(
|
| - AudioDeviceModule::kDefaultCommunicationDevice) == 0);
|
| - EXPECT_EQ(0, audio_device_->MicrophoneVolumeIsAvailable(&available));
|
| - if (available)
|
| - {
|
| - EXPECT_EQ(0, audio_device_->InitMicrophone());
|
| - EXPECT_EQ(0, audio_device_->MaxMicrophoneVolume(&maxVolume));
|
| - EXPECT_EQ(0, audio_device_->MinMicrophoneVolume(&minVolume));
|
| - EXPECT_EQ(0, audio_device_->MicrophoneVolumeStepSize(&stepSize));
|
| - for (vol = minVolume; vol < (unsigned int)maxVolume; vol += 10*stepSize)
|
| - {
|
| - EXPECT_EQ(0, audio_device_->SetMicrophoneVolume(vol));
|
| - EXPECT_EQ(0, audio_device_->MicrophoneVolume(&volume));
|
| - CheckVolume(volume, vol);
|
| - }
|
| - }
|
| -#endif
|
| -
|
| - // reinitialize kDefaultDevice and modify/retrieve the volume
|
| - EXPECT_EQ(0, audio_device_->SetRecordingDevice(MACRO_DEFAULT_DEVICE));
|
| - EXPECT_EQ(0, audio_device_->MicrophoneVolumeIsAvailable(&available));
|
| - if (available) {
|
| - EXPECT_EQ(0, audio_device_->InitMicrophone());
|
| - EXPECT_EQ(0, audio_device_->MaxMicrophoneVolume(&maxVolume));
|
| - EXPECT_EQ(0, audio_device_->MinMicrophoneVolume(&minVolume));
|
| - EXPECT_EQ(0, audio_device_->MicrophoneVolumeStepSize(&stepSize));
|
| - for (vol = minVolume; vol < maxVolume; vol += 10 * stepSize) {
|
| - EXPECT_EQ(0, audio_device_->SetMicrophoneVolume(vol));
|
| - EXPECT_EQ(0, audio_device_->MicrophoneVolume(&volume));
|
| - CheckVolume(volume, vol);
|
| - }
|
| - }
|
| -
|
| - // use all (indexed) devices and modify/retrieve the volume
|
| - int16_t no_devices = audio_device_->RecordingDevices();
|
| - for (int i = 0; i < no_devices; i++) {
|
| - EXPECT_EQ(0, audio_device_->SetRecordingDevice(i));
|
| - EXPECT_EQ(0, audio_device_->MicrophoneVolumeIsAvailable(&available));
|
| - if (available) {
|
| - EXPECT_EQ(0, audio_device_->InitMicrophone());
|
| - EXPECT_EQ(0, audio_device_->MaxMicrophoneVolume(&maxVolume));
|
| - EXPECT_EQ(0, audio_device_->MinMicrophoneVolume(&minVolume));
|
| - EXPECT_EQ(0, audio_device_->MicrophoneVolumeStepSize(&stepSize));
|
| - for (vol = minVolume; vol < maxVolume; vol += 20 * stepSize) {
|
| - EXPECT_EQ(0, audio_device_->SetMicrophoneVolume(vol));
|
| - EXPECT_EQ(0, audio_device_->MicrophoneVolume(&volume));
|
| - CheckVolume(volume, vol);
|
| - }
|
| - }
|
| - }
|
| -
|
| - // restore reasonable level
|
| - EXPECT_EQ(0, audio_device_->SetRecordingDevice(MACRO_DEFAULT_DEVICE));
|
| - EXPECT_EQ(0, audio_device_->MicrophoneVolumeIsAvailable(&available));
|
| - if (available) {
|
| - EXPECT_EQ(0, audio_device_->InitMicrophone());
|
| - EXPECT_EQ(0, audio_device_->MaxMicrophoneVolume(&maxVolume));
|
| - EXPECT_EQ(0, audio_device_->SetMicrophoneVolume(maxVolume/10));
|
| - }
|
| -}
|
| -
|
| -TEST_F(AudioDeviceAPITest, SpeakerMuteIsAvailable) {
|
| - bool available;
|
| - CheckInitialPlayoutStates();
|
| -#if defined(WEBRTC_WINDOWS_CORE_AUDIO_BUILD)
|
| - // check the kDefaultCommunicationDevice
|
| - EXPECT_TRUE(audio_device_->SetPlayoutDevice(
|
| - AudioDeviceModule::kDefaultCommunicationDevice) == 0);
|
| - EXPECT_EQ(0, audio_device_->SpeakerMuteIsAvailable(&available));
|
| - // check for availability should not lead to initialization
|
| - EXPECT_FALSE(audio_device_->SpeakerIsInitialized());
|
| -#endif
|
| -
|
| - // check the kDefaultDevice
|
| - EXPECT_EQ(0, audio_device_->SetPlayoutDevice(MACRO_DEFAULT_DEVICE));
|
| - EXPECT_EQ(0, audio_device_->SpeakerMuteIsAvailable(&available));
|
| - EXPECT_FALSE(audio_device_->SpeakerIsInitialized());
|
| -
|
| - // check all availiable devices
|
| - int16_t no_devices = audio_device_->PlayoutDevices();
|
| - for (int i = 0; i < no_devices; i++) {
|
| - EXPECT_EQ(0, audio_device_->SetPlayoutDevice(i));
|
| - EXPECT_EQ(0, audio_device_->SpeakerMuteIsAvailable(&available));
|
| - EXPECT_FALSE(audio_device_->SpeakerIsInitialized());
|
| - }
|
| -}
|
| -
|
| -TEST_F(AudioDeviceAPITest, MicrophoneMuteIsAvailable) {
|
| - bool available;
|
| - CheckInitialRecordingStates();
|
| -#if defined(WEBRTC_WINDOWS_CORE_AUDIO_BUILD)
|
| - // check the kDefaultCommunicationDevice
|
| - EXPECT_TRUE(audio_device_->SetRecordingDevice(
|
| - AudioDeviceModule::kDefaultCommunicationDevice) == 0);
|
| - EXPECT_EQ(0, audio_device_->MicrophoneMuteIsAvailable(&available));
|
| - // check for availability should not lead to initialization
|
| -#endif
|
| - EXPECT_FALSE(audio_device_->MicrophoneIsInitialized());
|
| -
|
| - // check the kDefaultDevice
|
| - EXPECT_EQ(0, audio_device_->SetRecordingDevice(MACRO_DEFAULT_DEVICE));
|
| - EXPECT_EQ(0, audio_device_->MicrophoneMuteIsAvailable(&available));
|
| - EXPECT_FALSE(audio_device_->MicrophoneIsInitialized());
|
| -
|
| - // check all availiable devices
|
| - int16_t no_devices = audio_device_->RecordingDevices();
|
| - for (int i = 0; i < no_devices; i++) {
|
| - EXPECT_EQ(0, audio_device_->SetRecordingDevice(i));
|
| - EXPECT_EQ(0, audio_device_->MicrophoneMuteIsAvailable(&available));
|
| - EXPECT_FALSE(audio_device_->MicrophoneIsInitialized());
|
| - }
|
| -}
|
| -
|
| -TEST_F(AudioDeviceAPITest, MicrophoneBoostIsAvailable) {
|
| - bool available;
|
| - CheckInitialRecordingStates();
|
| -#if defined(WEBRTC_WINDOWS_CORE_AUDIO_BUILD)
|
| - // check the kDefaultCommunicationDevice
|
| - EXPECT_TRUE(audio_device_->SetRecordingDevice(
|
| - AudioDeviceModule::kDefaultCommunicationDevice) == 0);
|
| - EXPECT_EQ(0, audio_device_->MicrophoneBoostIsAvailable(&available));
|
| - // check for availability should not lead to initialization
|
| - EXPECT_FALSE(audio_device_->MicrophoneIsInitialized());
|
| -#endif
|
| -
|
| - // check the kDefaultDevice
|
| - EXPECT_EQ(0, audio_device_->SetRecordingDevice(MACRO_DEFAULT_DEVICE));
|
| - EXPECT_EQ(0, audio_device_->MicrophoneBoostIsAvailable(&available));
|
| - EXPECT_FALSE(audio_device_->MicrophoneIsInitialized());
|
| -
|
| - // check all availiable devices
|
| - int16_t no_devices = audio_device_->RecordingDevices();
|
| - for (int i = 0; i < no_devices; i++) {
|
| - EXPECT_EQ(0, audio_device_->SetRecordingDevice(i));
|
| - EXPECT_EQ(0, audio_device_->MicrophoneBoostIsAvailable(&available));
|
| - EXPECT_FALSE(audio_device_->MicrophoneIsInitialized());
|
| - }
|
| -}
|
| -
|
| -TEST_F(AudioDeviceAPITest, SpeakerMuteTests) {
|
| - bool available;
|
| - bool enabled;
|
| - CheckInitialPlayoutStates();
|
| - // fail tests
|
| - EXPECT_EQ(-1, audio_device_->SetSpeakerMute(true));
|
| - // requires initialization
|
| - EXPECT_EQ(-1, audio_device_->SpeakerMute(&enabled));
|
| -
|
| -#if defined(WEBRTC_WINDOWS_CORE_AUDIO_BUILD)
|
| - // initialize kDefaultCommunicationDevice and modify/retrieve the mute state
|
| - EXPECT_EQ(0, audio_device_->SetPlayoutDevice(
|
| - AudioDeviceModule::kDefaultCommunicationDevice));
|
| - EXPECT_EQ(0, audio_device_->SpeakerMuteIsAvailable(&available));
|
| - if (available)
|
| - {
|
| - EXPECT_EQ(0, audio_device_->InitSpeaker());
|
| - EXPECT_EQ(0, audio_device_->SetSpeakerMute(true));
|
| - EXPECT_EQ(0, audio_device_->SpeakerMute(&enabled));
|
| - EXPECT_TRUE(enabled);
|
| - EXPECT_EQ(0, audio_device_->SetSpeakerMute(false));
|
| - EXPECT_EQ(0, audio_device_->SpeakerMute(&enabled));
|
| - EXPECT_FALSE(enabled);
|
| - }
|
| -#endif
|
| -
|
| - // reinitialize kDefaultDevice and modify/retrieve the mute state
|
| - EXPECT_EQ(0, audio_device_->SetPlayoutDevice(MACRO_DEFAULT_DEVICE));
|
| - EXPECT_EQ(0, audio_device_->SpeakerMuteIsAvailable(&available));
|
| - if (available) {
|
| - EXPECT_EQ(0, audio_device_->InitSpeaker());
|
| - EXPECT_EQ(0, audio_device_->SetSpeakerMute(true));
|
| - EXPECT_EQ(0, audio_device_->SpeakerMute(&enabled));
|
| - EXPECT_TRUE(enabled);
|
| - EXPECT_EQ(0, audio_device_->SetSpeakerMute(false));
|
| - EXPECT_EQ(0, audio_device_->SpeakerMute(&enabled));
|
| - EXPECT_FALSE(enabled);
|
| - }
|
| -
|
| - // reinitialize the default device (0) and modify/retrieve the mute state
|
| - EXPECT_EQ(0, audio_device_->SetPlayoutDevice(0));
|
| - EXPECT_EQ(0, audio_device_->SpeakerMuteIsAvailable(&available));
|
| - if (available) {
|
| - EXPECT_EQ(0, audio_device_->InitSpeaker());
|
| - EXPECT_EQ(0, audio_device_->SetSpeakerMute(true));
|
| - EXPECT_EQ(0, audio_device_->SpeakerMute(&enabled));
|
| - EXPECT_TRUE(enabled);
|
| - EXPECT_EQ(0, audio_device_->SetSpeakerMute(false));
|
| - EXPECT_EQ(0, audio_device_->SpeakerMute(&enabled));
|
| - EXPECT_FALSE(enabled);
|
| - }
|
| -}
|
| -
|
| -TEST_F(AudioDeviceAPITest, MicrophoneMuteTests) {
|
| - CheckInitialRecordingStates();
|
| -
|
| - // fail tests
|
| - EXPECT_EQ(-1, audio_device_->SetMicrophoneMute(true));
|
| - // requires initialization
|
| - bool available;
|
| - bool enabled;
|
| - EXPECT_EQ(-1, audio_device_->MicrophoneMute(&enabled));
|
| -
|
| -#if defined(WEBRTC_WINDOWS_CORE_AUDIO_BUILD)
|
| - // initialize kDefaultCommunicationDevice and modify/retrieve the mute
|
| - EXPECT_TRUE(audio_device_->SetRecordingDevice(
|
| - AudioDeviceModule::kDefaultCommunicationDevice) == 0);
|
| - EXPECT_EQ(0, audio_device_->MicrophoneMuteIsAvailable(&available));
|
| - if (available)
|
| - {
|
| - EXPECT_EQ(0, audio_device_->InitMicrophone());
|
| - EXPECT_EQ(0, audio_device_->SetMicrophoneMute(true));
|
| - EXPECT_EQ(0, audio_device_->MicrophoneMute(&enabled));
|
| - EXPECT_TRUE(enabled);
|
| - EXPECT_EQ(0, audio_device_->SetMicrophoneMute(false));
|
| - EXPECT_EQ(0, audio_device_->MicrophoneMute(&enabled));
|
| - EXPECT_FALSE(enabled);
|
| - }
|
| -#endif
|
| -
|
| - // reinitialize kDefaultDevice and modify/retrieve the mute
|
| - EXPECT_EQ(0, audio_device_->SetRecordingDevice(MACRO_DEFAULT_DEVICE));
|
| - EXPECT_EQ(0, audio_device_->MicrophoneMuteIsAvailable(&available));
|
| - if (available) {
|
| - EXPECT_EQ(0, audio_device_->InitMicrophone());
|
| - EXPECT_EQ(0, audio_device_->SetMicrophoneMute(true));
|
| - EXPECT_EQ(0, audio_device_->MicrophoneMute(&enabled));
|
| - EXPECT_TRUE(enabled);
|
| - EXPECT_EQ(0, audio_device_->SetMicrophoneMute(false));
|
| - EXPECT_EQ(0, audio_device_->MicrophoneMute(&enabled));
|
| - EXPECT_FALSE(enabled);
|
| - }
|
| -
|
| - // reinitialize the default device (0) and modify/retrieve the Mute
|
| - EXPECT_EQ(0, audio_device_->SetRecordingDevice(0));
|
| - EXPECT_EQ(0, audio_device_->MicrophoneMuteIsAvailable(&available));
|
| - if (available) {
|
| - EXPECT_EQ(0, audio_device_->InitMicrophone());
|
| - EXPECT_EQ(0, audio_device_->SetMicrophoneMute(true));
|
| - EXPECT_EQ(0, audio_device_->MicrophoneMute(&enabled));
|
| - EXPECT_TRUE(enabled);
|
| - EXPECT_EQ(0, audio_device_->SetMicrophoneMute(false));
|
| - EXPECT_EQ(0, audio_device_->MicrophoneMute(&enabled));
|
| - EXPECT_FALSE(enabled);
|
| - }
|
| -}
|
| -
|
| -TEST_F(AudioDeviceAPITest, MicrophoneBoostTests) {
|
| - bool available;
|
| - bool enabled;
|
| - CheckInitialRecordingStates();
|
| -
|
| - // fail tests
|
| - EXPECT_EQ(-1, audio_device_->SetMicrophoneBoost(true));
|
| - // requires initialization
|
| - EXPECT_EQ(-1, audio_device_->MicrophoneBoost(&enabled));
|
| -
|
| -#if defined(WEBRTC_WINDOWS_CORE_AUDIO_BUILD)
|
| - // initialize kDefaultCommunicationDevice and modify/retrieve the boost
|
| - EXPECT_TRUE(audio_device_->SetRecordingDevice(
|
| - AudioDeviceModule::kDefaultCommunicationDevice) == 0);
|
| - EXPECT_EQ(0, audio_device_->MicrophoneBoostIsAvailable(&available));
|
| - if (available)
|
| - {
|
| - EXPECT_EQ(0, audio_device_->InitMicrophone());
|
| - EXPECT_EQ(0, audio_device_->SetMicrophoneBoost(true));
|
| - EXPECT_EQ(0, audio_device_->MicrophoneBoost(&enabled));
|
| - EXPECT_TRUE(enabled);
|
| - EXPECT_EQ(0, audio_device_->SetMicrophoneBoost(false));
|
| - EXPECT_EQ(0, audio_device_->MicrophoneBoost(&enabled));
|
| - EXPECT_FALSE(enabled);
|
| - }
|
| -#endif
|
| -
|
| - // reinitialize kDefaultDevice and modify/retrieve the boost
|
| - EXPECT_EQ(0, audio_device_->SetRecordingDevice(MACRO_DEFAULT_DEVICE));
|
| - EXPECT_EQ(0, audio_device_->MicrophoneBoostIsAvailable(&available));
|
| - if (available) {
|
| - EXPECT_EQ(0, audio_device_->InitMicrophone());
|
| - EXPECT_EQ(0, audio_device_->SetMicrophoneBoost(true));
|
| - EXPECT_EQ(0, audio_device_->MicrophoneBoost(&enabled));
|
| - EXPECT_TRUE(enabled);
|
| - EXPECT_EQ(0, audio_device_->SetMicrophoneBoost(false));
|
| - EXPECT_EQ(0, audio_device_->MicrophoneBoost(&enabled));
|
| - EXPECT_FALSE(enabled);
|
| - }
|
| -
|
| - // reinitialize the default device (0) and modify/retrieve the boost
|
| - EXPECT_EQ(0, audio_device_->SetRecordingDevice(0));
|
| - EXPECT_EQ(0, audio_device_->MicrophoneBoostIsAvailable(&available));
|
| - if (available) {
|
| - EXPECT_EQ(0, audio_device_->InitMicrophone());
|
| - EXPECT_EQ(0, audio_device_->SetMicrophoneBoost(true));
|
| - EXPECT_EQ(0, audio_device_->MicrophoneBoost(&enabled));
|
| - EXPECT_TRUE(enabled);
|
| - EXPECT_EQ(0, audio_device_->SetMicrophoneBoost(false));
|
| - EXPECT_EQ(0, audio_device_->MicrophoneBoost(&enabled));
|
| - EXPECT_FALSE(enabled);
|
| - }
|
| -}
|
| -
|
| -TEST_F(AudioDeviceAPITest, StereoPlayoutTests) {
|
| - CheckInitialPlayoutStates();
|
| -
|
| - // fail tests
|
| - EXPECT_EQ(-1, audio_device_->InitPlayout());
|
| - EXPECT_EQ(0, audio_device_->SetPlayoutDevice(
|
| - MACRO_DEFAULT_COMMUNICATION_DEVICE));
|
| -
|
| - // TODO(kjellander): Fix so these tests pass on Mac.
|
| -#if !defined(WEBRTC_MAC)
|
| - EXPECT_EQ(0, audio_device_->InitPlayout());
|
| - EXPECT_TRUE(audio_device_->PlayoutIsInitialized());
|
| - // must be performed before initialization
|
| - EXPECT_EQ(-1, audio_device_->SetStereoPlayout(true));
|
| -#endif
|
| -
|
| - // ensure that we can set the stereo mode for playout
|
| - EXPECT_EQ(0, audio_device_->StopPlayout());
|
| - EXPECT_FALSE(audio_device_->PlayoutIsInitialized());
|
| -
|
| - // initialize kDefaultCommunicationDevice and modify/retrieve stereo support
|
| - EXPECT_EQ(0, audio_device_->SetPlayoutDevice(
|
| - MACRO_DEFAULT_COMMUNICATION_DEVICE));
|
| - bool available;
|
| - bool enabled;
|
| - EXPECT_EQ(0, audio_device_->StereoPlayoutIsAvailable(&available));
|
| - if (available) {
|
| - EXPECT_EQ(0, audio_device_->SetStereoPlayout(true));
|
| - EXPECT_EQ(0, audio_device_->StereoPlayout(&enabled));
|
| - EXPECT_TRUE(enabled);
|
| - EXPECT_EQ(0, audio_device_->SetStereoPlayout(false));
|
| - EXPECT_EQ(0, audio_device_->StereoPlayout(&enabled));
|
| - EXPECT_FALSE(enabled);
|
| - EXPECT_EQ(0, audio_device_->SetStereoPlayout(true));
|
| - EXPECT_EQ(0, audio_device_->StereoPlayout(&enabled));
|
| - EXPECT_TRUE(enabled);
|
| - }
|
| -
|
| - // initialize kDefaultDevice and modify/retrieve stereo support
|
| - EXPECT_EQ(0, audio_device_->SetPlayoutDevice(MACRO_DEFAULT_DEVICE));
|
| - EXPECT_EQ(0, audio_device_->StereoPlayoutIsAvailable(&available));
|
| - if (available) {
|
| - EXPECT_EQ(0, audio_device_->SetStereoPlayout(true));
|
| - EXPECT_EQ(0, audio_device_->StereoPlayout(&enabled));
|
| - EXPECT_TRUE(enabled);
|
| - EXPECT_EQ(0, audio_device_->SetStereoPlayout(false));
|
| - EXPECT_EQ(0, audio_device_->StereoPlayout(&enabled));
|
| - EXPECT_FALSE(enabled);
|
| - EXPECT_EQ(0, audio_device_->SetStereoPlayout(true));
|
| - EXPECT_EQ(0, audio_device_->StereoPlayout(&enabled));
|
| - EXPECT_TRUE(enabled);
|
| - }
|
| -
|
| - // initialize default device (0) and modify/retrieve stereo support
|
| - EXPECT_EQ(0, audio_device_->SetPlayoutDevice(0));
|
| - EXPECT_EQ(0, audio_device_->StereoPlayoutIsAvailable(&available));
|
| - if (available) {
|
| - EXPECT_EQ(0, audio_device_->SetStereoPlayout(true));
|
| - EXPECT_EQ(0, audio_device_->StereoPlayout(&enabled));
|
| - EXPECT_TRUE(enabled);
|
| - EXPECT_EQ(0, audio_device_->SetStereoPlayout(false));
|
| - EXPECT_EQ(0, audio_device_->StereoPlayout(&enabled));
|
| - EXPECT_FALSE(enabled);
|
| - EXPECT_EQ(0, audio_device_->SetStereoPlayout(true));
|
| - EXPECT_EQ(0, audio_device_->StereoPlayout(&enabled));
|
| - EXPECT_TRUE(enabled);
|
| - }
|
| -}
|
| -
|
| -TEST_F(AudioDeviceAPITest, StereoRecordingTests) {
|
| - CheckInitialRecordingStates();
|
| - EXPECT_FALSE(audio_device_->Playing());
|
| -
|
| - // fail tests
|
| - EXPECT_EQ(-1, audio_device_->InitRecording());
|
| - EXPECT_EQ(0, audio_device_->SetRecordingDevice(
|
| - MACRO_DEFAULT_COMMUNICATION_DEVICE));
|
| -
|
| - // TODO(kjellander): Fix so these tests pass on Mac.
|
| -#if !defined(WEBRTC_MAC)
|
| - EXPECT_EQ(0, audio_device_->InitRecording());
|
| - EXPECT_TRUE(audio_device_->RecordingIsInitialized());
|
| - // must be performed before initialization
|
| - EXPECT_EQ(-1, audio_device_->SetStereoRecording(true));
|
| -#endif
|
| - // ensures that we can set the stereo mode for recording
|
| - EXPECT_EQ(0, audio_device_->StopRecording());
|
| - EXPECT_FALSE(audio_device_->RecordingIsInitialized());
|
| -
|
| - // initialize kDefaultCommunicationDevice and modify/retrieve stereo support
|
| - EXPECT_EQ(0, audio_device_->SetRecordingDevice(
|
| - MACRO_DEFAULT_COMMUNICATION_DEVICE));
|
| - bool available;
|
| - bool enabled;
|
| - EXPECT_EQ(0, audio_device_->StereoRecordingIsAvailable(&available));
|
| - if (available) {
|
| - EXPECT_EQ(0, audio_device_->SetStereoRecording(true));
|
| - EXPECT_EQ(0, audio_device_->StereoRecording(&enabled));
|
| - EXPECT_TRUE(enabled);
|
| - EXPECT_EQ(0, audio_device_->SetStereoRecording(false));
|
| - EXPECT_EQ(0, audio_device_->StereoRecording(&enabled));
|
| - EXPECT_FALSE(enabled);
|
| - }
|
| -
|
| - // initialize kDefaultDevice and modify/retrieve stereo support
|
| - EXPECT_EQ(0, audio_device_->SetRecordingDevice(MACRO_DEFAULT_DEVICE));
|
| - EXPECT_EQ(0, audio_device_->StereoRecordingIsAvailable(&available));
|
| - if (available) {
|
| - EXPECT_EQ(0, audio_device_->SetStereoRecording(true));
|
| - EXPECT_EQ(0, audio_device_->StereoRecording(&enabled));
|
| - EXPECT_TRUE(enabled);
|
| - EXPECT_EQ(0, audio_device_->SetStereoRecording(false));
|
| - EXPECT_EQ(0, audio_device_->StereoRecording(&enabled));
|
| - EXPECT_FALSE(enabled);
|
| - }
|
| -
|
| - // initialize default device (0) and modify/retrieve stereo support
|
| - EXPECT_EQ(0, audio_device_->SetRecordingDevice(0));
|
| - EXPECT_EQ(0, audio_device_->StereoRecordingIsAvailable(&available));
|
| - if (available) {
|
| - EXPECT_EQ(0, audio_device_->SetStereoRecording(true));
|
| - EXPECT_EQ(0, audio_device_->StereoRecording(&enabled));
|
| - EXPECT_TRUE(enabled);
|
| - EXPECT_EQ(0, audio_device_->SetStereoRecording(false));
|
| - EXPECT_EQ(0, audio_device_->StereoRecording(&enabled));
|
| - EXPECT_FALSE(enabled);
|
| - }
|
| -}
|
| -
|
| -TEST_F(AudioDeviceAPITest, PlayoutBufferTests) {
|
| - AudioDeviceModule::BufferType bufferType;
|
| - uint16_t sizeMS(0);
|
| -
|
| - CheckInitialPlayoutStates();
|
| - EXPECT_EQ(0, audio_device_->PlayoutBuffer(&bufferType, &sizeMS));
|
| -#if defined(WEBRTC_WINDOWS_CORE_AUDIO_BUILD) || defined(ANDROID) || \
|
| - defined(WEBRTC_IOS)
|
| - EXPECT_EQ(AudioDeviceModule::kAdaptiveBufferSize, bufferType);
|
| -#else
|
| - EXPECT_EQ(AudioDeviceModule::kFixedBufferSize, bufferType);
|
| -#endif
|
| -
|
| - // fail tests
|
| - EXPECT_EQ(-1, audio_device_->InitPlayout());
|
| - // must set device first
|
| - EXPECT_EQ(0, audio_device_->SetPlayoutDevice(
|
| - MACRO_DEFAULT_COMMUNICATION_DEVICE));
|
| -
|
| - // TODO(kjellander): Fix so these tests pass on Mac.
|
| -#if !defined(WEBRTC_MAC)
|
| - EXPECT_EQ(0, audio_device_->InitPlayout());
|
| - EXPECT_TRUE(audio_device_->PlayoutIsInitialized());
|
| -#endif
|
| - EXPECT_TRUE(audio_device_->SetPlayoutBuffer(
|
| - AudioDeviceModule::kAdaptiveBufferSize, 100) == -1);
|
| - EXPECT_EQ(0, audio_device_->StopPlayout());
|
| - EXPECT_TRUE(audio_device_->SetPlayoutBuffer(
|
| - AudioDeviceModule::kFixedBufferSize, kAdmMinPlayoutBufferSizeMs-1) == -1);
|
| - EXPECT_TRUE(audio_device_->SetPlayoutBuffer(
|
| - AudioDeviceModule::kFixedBufferSize, kAdmMaxPlayoutBufferSizeMs+1) == -1);
|
| -
|
| - // bulk tests (all should be successful)
|
| - EXPECT_FALSE(audio_device_->PlayoutIsInitialized());
|
| -#if defined(WEBRTC_WINDOWS_CORE_AUDIO_BUILD)
|
| - EXPECT_EQ(0, audio_device_->SetPlayoutBuffer(
|
| - AudioDeviceModule::kAdaptiveBufferSize, 0));
|
| - EXPECT_EQ(0, audio_device_->PlayoutBuffer(&bufferType, &sizeMS));
|
| - EXPECT_EQ(AudioDeviceModule::kAdaptiveBufferSize, bufferType);
|
| - EXPECT_EQ(0, audio_device_->SetPlayoutBuffer(
|
| - AudioDeviceModule::kAdaptiveBufferSize, 10000));
|
| - EXPECT_EQ(0, audio_device_->PlayoutBuffer(&bufferType, &sizeMS));
|
| - EXPECT_EQ(AudioDeviceModule::kAdaptiveBufferSize, bufferType);
|
| -#endif
|
| -#if defined(ANDROID) || defined(WEBRTC_IOS)
|
| - EXPECT_EQ(-1,
|
| - audio_device_->SetPlayoutBuffer(AudioDeviceModule::kFixedBufferSize,
|
| - kAdmMinPlayoutBufferSizeMs));
|
| -#else
|
| - EXPECT_EQ(0, audio_device_->SetPlayoutBuffer(
|
| - AudioDeviceModule::kFixedBufferSize, kAdmMinPlayoutBufferSizeMs));
|
| - EXPECT_EQ(0, audio_device_->PlayoutBuffer(&bufferType, &sizeMS));
|
| - EXPECT_EQ(AudioDeviceModule::kFixedBufferSize, bufferType);
|
| - EXPECT_EQ(kAdmMinPlayoutBufferSizeMs, sizeMS);
|
| - EXPECT_EQ(0, audio_device_->SetPlayoutBuffer(
|
| - AudioDeviceModule::kFixedBufferSize, kAdmMaxPlayoutBufferSizeMs));
|
| - EXPECT_EQ(0, audio_device_->PlayoutBuffer(&bufferType, &sizeMS));
|
| - EXPECT_EQ(AudioDeviceModule::kFixedBufferSize, bufferType);
|
| - EXPECT_EQ(kAdmMaxPlayoutBufferSizeMs, sizeMS);
|
| - EXPECT_EQ(0, audio_device_->SetPlayoutBuffer(
|
| - AudioDeviceModule::kFixedBufferSize, 100));
|
| - EXPECT_EQ(0, audio_device_->PlayoutBuffer(&bufferType, &sizeMS));
|
| - EXPECT_EQ(AudioDeviceModule::kFixedBufferSize, bufferType);
|
| - EXPECT_EQ(100, sizeMS);
|
| -#endif
|
| -
|
| -#if defined(WEBRTC_WINDOWS_CORE_AUDIO_BUILD)
|
| - // restore default
|
| - EXPECT_EQ(0, audio_device_->SetPlayoutBuffer(
|
| - AudioDeviceModule::kAdaptiveBufferSize, 0));
|
| - EXPECT_EQ(0, audio_device_->PlayoutBuffer(&bufferType, &sizeMS));
|
| -#endif
|
| -}
|
| -
|
| -TEST_F(AudioDeviceAPITest, PlayoutDelay) {
|
| - // NOTE: this API is better tested in a functional test
|
| - uint16_t sizeMS(0);
|
| - CheckInitialPlayoutStates();
|
| - // bulk tests
|
| - EXPECT_EQ(0, audio_device_->PlayoutDelay(&sizeMS));
|
| - EXPECT_EQ(0, audio_device_->PlayoutDelay(&sizeMS));
|
| -}
|
| -
|
| -TEST_F(AudioDeviceAPITest, RecordingDelay) {
|
| - // NOTE: this API is better tested in a functional test
|
| - uint16_t sizeMS(0);
|
| - CheckInitialRecordingStates();
|
| -
|
| - // bulk tests
|
| - EXPECT_EQ(0, audio_device_->RecordingDelay(&sizeMS));
|
| - EXPECT_EQ(0, audio_device_->RecordingDelay(&sizeMS));
|
| -}
|
| -
|
| -TEST_F(AudioDeviceAPITest, CPULoad) {
|
| - // NOTE: this API is better tested in a functional test
|
| - uint16_t load(0);
|
| -
|
| - // bulk tests
|
| -#if defined(WEBRTC_WINDOWS_CORE_AUDIO_BUILD)
|
| - EXPECT_EQ(0, audio_device_->CPULoad(&load));
|
| - EXPECT_EQ(0, load);
|
| -#else
|
| - EXPECT_EQ(-1, audio_device_->CPULoad(&load));
|
| -#endif
|
| -}
|
| -
|
| -// TODO(kjellander): Fix flakiness causing failures on Windows.
|
| -// TODO(phoglund): Fix flakiness causing failures on Linux.
|
| -#if !defined(_WIN32) && !defined(WEBRTC_LINUX)
|
| -TEST_F(AudioDeviceAPITest, StartAndStopRawOutputFileRecording) {
|
| - // NOTE: this API is better tested in a functional test
|
| - CheckInitialPlayoutStates();
|
| -
|
| - // fail tests
|
| - EXPECT_EQ(-1, audio_device_->StartRawOutputFileRecording(NULL));
|
| -
|
| - // bulk tests
|
| - EXPECT_EQ(0, audio_device_->StartRawOutputFileRecording(
|
| - GetFilename("raw_output_not_playing.pcm")));
|
| - EXPECT_EQ(0, audio_device_->StopRawOutputFileRecording());
|
| - EXPECT_EQ(0, audio_device_->SetPlayoutDevice(
|
| - MACRO_DEFAULT_COMMUNICATION_DEVICE));
|
| -
|
| - // TODO(kjellander): Fix so these tests pass on Mac.
|
| -#if !defined(WEBRTC_MAC)
|
| - EXPECT_EQ(0, audio_device_->InitPlayout());
|
| - EXPECT_EQ(0, audio_device_->StartPlayout());
|
| -#endif
|
| -
|
| - EXPECT_EQ(0, audio_device_->StartRawOutputFileRecording(
|
| - GetFilename("raw_output_playing.pcm")));
|
| - SleepMs(100);
|
| - EXPECT_EQ(0, audio_device_->StopRawOutputFileRecording());
|
| - EXPECT_EQ(0, audio_device_->StopPlayout());
|
| - EXPECT_EQ(0, audio_device_->StartRawOutputFileRecording(
|
| - GetFilename("raw_output_not_playing.pcm")));
|
| - EXPECT_EQ(0, audio_device_->StopRawOutputFileRecording());
|
| -
|
| - // results after this test:
|
| - //
|
| - // - size of raw_output_not_playing.pcm shall be 0
|
| - // - size of raw_output_playing.pcm shall be > 0
|
| -}
|
| -
|
| -TEST_F(AudioDeviceAPITest, StartAndStopRawInputFileRecording) {
|
| - // NOTE: this API is better tested in a functional test
|
| - CheckInitialRecordingStates();
|
| - EXPECT_FALSE(audio_device_->Playing());
|
| -
|
| - // fail tests
|
| - EXPECT_EQ(-1, audio_device_->StartRawInputFileRecording(NULL));
|
| -
|
| - // bulk tests
|
| - EXPECT_EQ(0, audio_device_->StartRawInputFileRecording(
|
| - GetFilename("raw_input_not_recording.pcm")));
|
| - EXPECT_EQ(0, audio_device_->StopRawInputFileRecording());
|
| - EXPECT_EQ(0, audio_device_->SetRecordingDevice(MACRO_DEFAULT_DEVICE));
|
| -
|
| - // TODO(kjellander): Fix so these tests pass on Mac.
|
| -#if !defined(WEBRTC_MAC)
|
| - EXPECT_EQ(0, audio_device_->InitRecording());
|
| - EXPECT_EQ(0, audio_device_->StartRecording());
|
| -#endif
|
| - EXPECT_EQ(0, audio_device_->StartRawInputFileRecording(
|
| - GetFilename("raw_input_recording.pcm")));
|
| - SleepMs(100);
|
| - EXPECT_EQ(0, audio_device_->StopRawInputFileRecording());
|
| - EXPECT_EQ(0, audio_device_->StopRecording());
|
| - EXPECT_EQ(0, audio_device_->StartRawInputFileRecording(
|
| - GetFilename("raw_input_not_recording.pcm")));
|
| - EXPECT_EQ(0, audio_device_->StopRawInputFileRecording());
|
| -
|
| - // results after this test:
|
| - //
|
| - // - size of raw_input_not_recording.pcm shall be 0
|
| - // - size of raw_input_not_recording.pcm shall be > 0
|
| -}
|
| -#endif // !WIN32 && !WEBRTC_LINUX
|
| -
|
| -TEST_F(AudioDeviceAPITest, RecordingSampleRate) {
|
| - uint32_t sampleRate(0);
|
| -
|
| - // bulk tests
|
| - EXPECT_EQ(0, audio_device_->RecordingSampleRate(&sampleRate));
|
| -#if defined(_WIN32) && !defined(WEBRTC_WINDOWS_CORE_AUDIO_BUILD)
|
| - EXPECT_EQ(48000, sampleRate);
|
| -#elif defined(ANDROID)
|
| - TEST_LOG("Recording sample rate is %u\n\n", sampleRate);
|
| - EXPECT_TRUE((sampleRate == 44000) || (sampleRate == 16000));
|
| -#elif defined(WEBRTC_IOS)
|
| - TEST_LOG("Recording sample rate is %u\n\n", sampleRate);
|
| - EXPECT_TRUE((sampleRate == 44000) || (sampleRate == 16000) ||
|
| - (sampleRate == 8000));
|
| -#endif
|
| -
|
| - // @TODO(xians) - add tests for all platforms here...
|
| -}
|
| -
|
| -TEST_F(AudioDeviceAPITest, PlayoutSampleRate) {
|
| - uint32_t sampleRate(0);
|
| -
|
| - // bulk tests
|
| - EXPECT_EQ(0, audio_device_->PlayoutSampleRate(&sampleRate));
|
| -#if defined(_WIN32) && !defined(WEBRTC_WINDOWS_CORE_AUDIO_BUILD)
|
| - EXPECT_EQ(48000, sampleRate);
|
| -#elif defined(ANDROID)
|
| - TEST_LOG("Playout sample rate is %u\n\n", sampleRate);
|
| - EXPECT_TRUE((sampleRate == 44000) || (sampleRate == 16000));
|
| -#elif defined(WEBRTC_IOS)
|
| - TEST_LOG("Playout sample rate is %u\n\n", sampleRate);
|
| - EXPECT_TRUE((sampleRate == 44000) || (sampleRate == 16000) ||
|
| - (sampleRate == 8000));
|
| -#endif
|
| -}
|
|
|