1b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/* 2b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 3b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * 4b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Use of this source code is governed by a BSD-style license 5b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * that can be found in the LICENSE file in the root of the source 6b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * tree. An additional intellectual property rights grant can be found 7b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * in the file PATENTS. All contributing project authors may 8b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * be found in the AUTHORS file in the root of the source tree. 9b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */ 10b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 11b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#ifndef WEBRTC_AUDIO_DEVICE_FUNC_TEST_MANAGER_H 12b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define WEBRTC_AUDIO_DEVICE_FUNC_TEST_MANAGER_H 13b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 14bc669ace8f09d73e95f923253ecdadd366f9b7f1pbos@webrtc.org#include "webrtc/modules/audio_device/audio_device_utility.h" 15b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 16083049f2945b2924203b25c8428300d40d994f35henrike@webrtc.org#include <list> 17b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#include <string> 18b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 19bc669ace8f09d73e95f923253ecdadd366f9b7f1pbos@webrtc.org#include "webrtc/common_audio/resampler/include/resampler.h" 20bc669ace8f09d73e95f923253ecdadd366f9b7f1pbos@webrtc.org#include "webrtc/modules/audio_device/include/audio_device.h" 21bc669ace8f09d73e95f923253ecdadd366f9b7f1pbos@webrtc.org#include "webrtc/modules/audio_device/test/audio_device_test_defines.h" 22bc669ace8f09d73e95f923253ecdadd366f9b7f1pbos@webrtc.org#include "webrtc/system_wrappers/interface/file_wrapper.h" 23bc669ace8f09d73e95f923253ecdadd366f9b7f1pbos@webrtc.org#include "webrtc/typedefs.h" 24b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 25b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#if defined(WEBRTC_IOS) || defined(ANDROID) 26b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define USE_SLEEP_AS_PAUSE 27b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#else 28b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org//#define USE_SLEEP_AS_PAUSE 29b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#endif 30b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 31b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Sets the default pause time if using sleep as pause 32b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define DEFAULT_PAUSE_TIME 5000 33b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 34b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#if defined(USE_SLEEP_AS_PAUSE) 35b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define PAUSE(a) SleepMs(a); 36b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#else 37b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define PAUSE(a) AudioDeviceUtility::WaitForKey(); 38b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#endif 39b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 40b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define ADM_AUDIO_LAYER AudioDeviceModule::kPlatformDefaultAudio 41b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org//#define ADM_AUDIO_LAYER AudioDeviceModule::kLinuxPulseAudio 42b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 43b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgenum TestType 44b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{ 45b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org TTInvalid = -1, 46b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org TTAll = 0, 47b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org TTAudioLayerSelection = 1, 48b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org TTDeviceEnumeration = 2, 49b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org TTDeviceSelection = 3, 50b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org TTAudioTransport = 4, 51b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org TTSpeakerVolume = 5, 52b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org TTMicrophoneVolume = 6, 53b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org TTSpeakerMute = 7, 54b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org TTMicrophoneMute = 8, 55b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org TTMicrophoneBoost = 9, 56b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org TTMicrophoneAGC = 10, 57b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org TTLoopback = 11, 58b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org TTDeviceRemoval = 13, 59b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org TTMobileAPI = 14, 60b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org TTTest = 66, 61b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}; 62b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 63083049f2945b2924203b25c8428300d40d994f35henrike@webrtc.orgstruct AudioPacket 64083049f2945b2924203b25c8428300d40d994f35henrike@webrtc.org{ 65083049f2945b2924203b25c8428300d40d994f35henrike@webrtc.org uint8_t dataBuffer[4 * 960]; 66083049f2945b2924203b25c8428300d40d994f35henrike@webrtc.org uint16_t nSamples; 67083049f2945b2924203b25c8428300d40d994f35henrike@webrtc.org uint16_t nBytesPerSample; 68083049f2945b2924203b25c8428300d40d994f35henrike@webrtc.org uint8_t nChannels; 69083049f2945b2924203b25c8428300d40d994f35henrike@webrtc.org uint32_t samplesPerSec; 70083049f2945b2924203b25c8428300d40d994f35henrike@webrtc.org}; 71083049f2945b2924203b25c8428300d40d994f35henrike@webrtc.org 72b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgclass ProcessThread; 73b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 74b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgnamespace webrtc 75b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{ 76b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 77b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgclass AudioDeviceModule; 78b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgclass AudioEventObserver; 79b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgclass AudioTransport; 80b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 81b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ---------------------------------------------------------------------------- 82b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// AudioEventObserver 83b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ---------------------------------------------------------------------------- 84b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 85b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgclass AudioEventObserver: public AudioDeviceObserver 86b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{ 87b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgpublic: 88b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org virtual void OnErrorIsReported(const ErrorCode error); 89b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org virtual void OnWarningIsReported(const WarningCode warning); 90b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org AudioEventObserver(AudioDeviceModule* audioDevice); 91b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org ~AudioEventObserver(); 92b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgpublic: 93b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org ErrorCode _error; 94b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org WarningCode _warning; 95b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}; 96b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 97b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ---------------------------------------------------------------------------- 98b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// AudioTransport 99b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ---------------------------------------------------------------------------- 100b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 101b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgclass AudioTransportImpl: public AudioTransport 102b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{ 103b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgpublic: 10464a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org virtual int32_t 105b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org RecordedDataIsAvailable(const void* audioSamples, 10664a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org const uint32_t nSamples, 10764a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org const uint8_t nBytesPerSample, 10864a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org const uint8_t nChannels, 10964a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org const uint32_t samplesPerSec, 11064a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org const uint32_t totalDelayMS, 11164a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org const int32_t clockDrift, 11264a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org const uint32_t currentMicLevel, 11328832e1965ca0c22ca6a26bbd3387db4db640bedniklas.enbom@webrtc.org const bool keyPressed, 11464a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org uint32_t& newMicLevel); 11564a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org 11664a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org virtual int32_t NeedMorePlayData(const uint32_t nSamples, 11764a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org const uint8_t nBytesPerSample, 11864a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org const uint8_t nChannels, 11964a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org const uint32_t samplesPerSec, 12064a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org void* audioSamples, 12122f69bd27abc89979460df6d01de8685cb058aabwu@webrtc.org uint32_t& nSamplesOut, 12281f8df9af96c6b4bf43234f2a0162146a5da6112wu@webrtc.org int64_t* elapsed_time_ms, 12322f69bd27abc89979460df6d01de8685cb058aabwu@webrtc.org int64_t* ntp_time_ms); 124b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 1250e6fa8c05cde2587e30dcf5e405132193d60dd42xians@webrtc.org virtual int OnDataAvailable(const int voe_channels[], 12644f1239d9595c91f69f656e5beb1382463c4da8fxians@webrtc.org int number_of_voe_channels, 12744f1239d9595c91f69f656e5beb1382463c4da8fxians@webrtc.org const int16_t* audio_data, 12844f1239d9595c91f69f656e5beb1382463c4da8fxians@webrtc.org int sample_rate, 12944f1239d9595c91f69f656e5beb1382463c4da8fxians@webrtc.org int number_of_channels, 13044f1239d9595c91f69f656e5beb1382463c4da8fxians@webrtc.org int number_of_frames, 13144f1239d9595c91f69f656e5beb1382463c4da8fxians@webrtc.org int audio_delay_milliseconds, 13244f1239d9595c91f69f656e5beb1382463c4da8fxians@webrtc.org int current_volume, 13344f1239d9595c91f69f656e5beb1382463c4da8fxians@webrtc.org bool key_pressed, 13444f1239d9595c91f69f656e5beb1382463c4da8fxians@webrtc.org bool need_audio_processing); 13544f1239d9595c91f69f656e5beb1382463c4da8fxians@webrtc.org 13691d88e1320d33fdc3648041bd941509e722f3ac4xians@webrtc.org virtual void PushCaptureData(int voe_channel, const void* audio_data, 13791d88e1320d33fdc3648041bd941509e722f3ac4xians@webrtc.org int bits_per_sample, int sample_rate, 13891d88e1320d33fdc3648041bd941509e722f3ac4xians@webrtc.org int number_of_channels, 13991d88e1320d33fdc3648041bd941509e722f3ac4xians@webrtc.org int number_of_frames); 14091d88e1320d33fdc3648041bd941509e722f3ac4xians@webrtc.org 14191d88e1320d33fdc3648041bd941509e722f3ac4xians@webrtc.org virtual void PullRenderData(int bits_per_sample, int sample_rate, 14291d88e1320d33fdc3648041bd941509e722f3ac4xians@webrtc.org int number_of_channels, int number_of_frames, 14322f69bd27abc89979460df6d01de8685cb058aabwu@webrtc.org void* audio_data, 14481f8df9af96c6b4bf43234f2a0162146a5da6112wu@webrtc.org int64_t* elapsed_time_ms, 14522f69bd27abc89979460df6d01de8685cb058aabwu@webrtc.org int64_t* ntp_time_ms); 14687c8b86c9f8a9929a2a564b2833244c6290e4701xians@webrtc.org 147b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org AudioTransportImpl(AudioDeviceModule* audioDevice); 148b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org ~AudioTransportImpl(); 149b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 150b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgpublic: 15164a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t SetFilePlayout(bool enable, const char* fileName = NULL); 152b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org void SetFullDuplex(bool enable); 153b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org void SetSpeakerVolume(bool enable) 154b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org { 155b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org _speakerVolume = enable; 156b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org } 157b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org ; 158b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org void SetSpeakerMute(bool enable) 159b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org { 160b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org _speakerMute = enable; 161b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org } 162b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org ; 163b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org void SetMicrophoneMute(bool enable) 164b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org { 165b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org _microphoneMute = enable; 166b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org } 167b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org ; 168b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org void SetMicrophoneVolume(bool enable) 169b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org { 170b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org _microphoneVolume = enable; 171b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org } 172b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org ; 173b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org void SetMicrophoneBoost(bool enable) 174b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org { 175b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org _microphoneBoost = enable; 176b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org } 177b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org ; 178b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org void SetLoopbackMeasurements(bool enable) 179b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org { 180b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org _loopBackMeasurements = enable; 181b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org } 182b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org ; 183b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org void SetMicrophoneAGC(bool enable) 184b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org { 185b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org _microphoneAGC = enable; 186b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org } 187b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org ; 188b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 189b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgprivate: 190083049f2945b2924203b25c8428300d40d994f35henrike@webrtc.org typedef std::list<AudioPacket*> AudioPacketList; 191b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org AudioDeviceModule* _audioDevice; 192b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 193b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org bool _playFromFile; 194b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org bool _fullDuplex; 195b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org bool _speakerVolume; 196b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org bool _speakerMute; 197b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org bool _microphoneVolume; 198b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org bool _microphoneMute; 199b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org bool _microphoneBoost; 200b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org bool _microphoneAGC; 201b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org bool _loopBackMeasurements; 202b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 203b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org FileWrapper& _playFile; 204b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 20564a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org uint32_t _recCount; 20664a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org uint32_t _playCount; 207083049f2945b2924203b25c8428300d40d994f35henrike@webrtc.org AudioPacketList _audioList; 208b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 209b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org Resampler _resampler; 210b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}; 211b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 212b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ---------------------------------------------------------------------------- 213b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// FuncTestManager 214b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ---------------------------------------------------------------------------- 215b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 216b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgclass FuncTestManager 217b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{ 218b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgpublic: 219b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org FuncTestManager(); 220b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org ~FuncTestManager(); 22164a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t Init(); 22264a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t Close(); 22364a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t DoTest(const TestType testType); 224b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgprivate: 22564a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t TestAudioLayerSelection(); 22664a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t TestDeviceEnumeration(); 22764a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t TestDeviceSelection(); 22864a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t TestAudioTransport(); 22964a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t TestSpeakerVolume(); 23064a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t TestMicrophoneVolume(); 23164a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t TestSpeakerMute(); 23264a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t TestMicrophoneMute(); 23364a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t TestMicrophoneBoost(); 23464a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t TestLoopback(); 23564a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t TestDeviceRemoval(); 23664a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t TestExtra(); 23764a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t TestMicrophoneAGC(); 23864a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t SelectPlayoutDevice(); 23964a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t SelectRecordingDevice(); 24064a144ff1bf67bc85942721aab04c98757b83e3bpbos@webrtc.org int32_t TestAdvancedMBAPI(); 241b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgprivate: 242b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org // Paths to where the resource files to be used for this test are located. 243b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org std::string _playoutFile48; 244b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org std::string _playoutFile44; 245b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org std::string _playoutFile16; 246b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org std::string _playoutFile8; 247b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 248b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org ProcessThread* _processThread; 249b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org AudioDeviceModule* _audioDevice; 250b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org AudioEventObserver* _audioEventObserver; 251b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org AudioTransportImpl* _audioTransport; 252b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}; 253b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 2543b89e10f31160da35b408fd00cb8f89d2b08862dpbos@webrtc.org} // namespace webrtc 255b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 256b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#endif // #ifndef WEBRTC_AUDIO_DEVICE_FUNC_TEST_MANAGER_H 257