| Index: media/audio/win/audio_low_latency_output_win_unittest.cc
|
| ===================================================================
|
| --- media/audio/win/audio_low_latency_output_win_unittest.cc (revision 113173)
|
| +++ media/audio/win/audio_low_latency_output_win_unittest.cc (working copy)
|
| @@ -142,13 +142,13 @@
|
|
|
| // Convenience method which ensures that we are not running on the build
|
| // bots and that at least one valid output device can be found.
|
| -static bool CanRunAudioTests() {
|
| +static bool CanRunAudioTests(AudioManager* audio_man) {
|
| + if (NULL == audio_man)
|
| + return false;
|
| +
|
| scoped_ptr<base::Environment> env(base::Environment::Create());
|
| if (env->HasVar("CHROME_HEADLESS"))
|
| return false;
|
| - AudioManager* audio_man = AudioManager::GetAudioManager();
|
| - if (NULL == audio_man)
|
| - return false;
|
| // TODO(henrika): note that we use Wave today to query the number of
|
| // existing output devices.
|
| return audio_man->HasAudioOutputDevices();
|
| @@ -158,9 +158,9 @@
|
| // also allows the user to modify the default settings.
|
| class AudioOutputStreamWrapper {
|
| public:
|
| - AudioOutputStreamWrapper()
|
| + explicit AudioOutputStreamWrapper(AudioManager* audio_manager)
|
| : com_init_(ScopedCOMInitializer::kMTA),
|
| - audio_man_(AudioManager::GetAudioManager()),
|
| + audio_man_(audio_manager),
|
| format_(AudioParameters::AUDIO_PCM_LOW_LATENCY),
|
| channel_layout_(CHANNEL_LAYOUT_STEREO),
|
| bits_per_sample_(16) {
|
| @@ -208,7 +208,7 @@
|
| }
|
|
|
| ScopedCOMInitializer com_init_;
|
| - AudioManager* audio_man_;
|
| + scoped_refptr<AudioManager> audio_man_;
|
| AudioParameters::Format format_;
|
| ChannelLayout channel_layout_;
|
| int bits_per_sample_;
|
| @@ -217,8 +217,9 @@
|
| };
|
|
|
| // Convenience method which creates a default AudioOutputStream object.
|
| -static AudioOutputStream* CreateDefaultAudioOutputStream() {
|
| - AudioOutputStreamWrapper aosw;
|
| +static AudioOutputStream* CreateDefaultAudioOutputStream(
|
| + AudioManager* audio_manager) {
|
| + AudioOutputStreamWrapper aosw(audio_manager);
|
| AudioOutputStream* aos = aosw.Create();
|
| return aos;
|
| }
|
| @@ -233,7 +234,8 @@
|
| // endpoint device.
|
| // TODO(henrika): modify this test when we support full device enumeration.
|
| TEST(WinAudioOutputTest, WASAPIAudioOutputStreamTestHardwareSampleRate) {
|
| - if (!CanRunAudioTests())
|
| + scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
|
| + if (!CanRunAudioTests(audio_manager.get()))
|
| return;
|
|
|
| ScopedCOMInitializer com_init(ScopedCOMInitializer::kMTA);
|
| @@ -257,26 +259,29 @@
|
|
|
| // Test Create(), Close() calling sequence.
|
| TEST(WinAudioOutputTest, WASAPIAudioOutputStreamTestCreateAndClose) {
|
| - if (!CanRunAudioTests())
|
| + scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
|
| + if (!CanRunAudioTests(audio_manager.get()))
|
| return;
|
| - AudioOutputStream* aos = CreateDefaultAudioOutputStream();
|
| + AudioOutputStream* aos = CreateDefaultAudioOutputStream(audio_manager.get());
|
| aos->Close();
|
| }
|
|
|
| // Test Open(), Close() calling sequence.
|
| TEST(WinAudioOutputTest, WASAPIAudioOutputStreamTestOpenAndClose) {
|
| - if (!CanRunAudioTests())
|
| + scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
|
| + if (!CanRunAudioTests(audio_manager.get()))
|
| return;
|
| - AudioOutputStream* aos = CreateDefaultAudioOutputStream();
|
| + AudioOutputStream* aos = CreateDefaultAudioOutputStream(audio_manager.get());
|
| EXPECT_TRUE(aos->Open());
|
| aos->Close();
|
| }
|
|
|
| // Test Open(), Start(), Close() calling sequence.
|
| TEST(WinAudioOutputTest, WASAPIAudioOutputStreamTestOpenStartAndClose) {
|
| - if (!CanRunAudioTests())
|
| + scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
|
| + if (!CanRunAudioTests(audio_manager.get()))
|
| return;
|
| - AudioOutputStream* aos = CreateDefaultAudioOutputStream();
|
| + AudioOutputStream* aos = CreateDefaultAudioOutputStream(audio_manager.get());
|
| EXPECT_TRUE(aos->Open());
|
| MockAudioSourceCallback source;
|
| EXPECT_CALL(source, OnError(aos, _))
|
| @@ -287,9 +292,10 @@
|
|
|
| // Test Open(), Start(), Stop(), Close() calling sequence.
|
| TEST(WinAudioOutputTest, WASAPIAudioOutputStreamTestOpenStartStopAndClose) {
|
| - if (!CanRunAudioTests())
|
| + scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
|
| + if (!CanRunAudioTests(audio_manager.get()))
|
| return;
|
| - AudioOutputStream* aos = CreateDefaultAudioOutputStream();
|
| + AudioOutputStream* aos = CreateDefaultAudioOutputStream(audio_manager.get());
|
| EXPECT_TRUE(aos->Open());
|
| MockAudioSourceCallback source;
|
| EXPECT_CALL(source, OnError(aos, _))
|
| @@ -301,9 +307,10 @@
|
|
|
| // Test SetVolume(), GetVolume()
|
| TEST(WinAudioOutputTest, WASAPIAudioOutputStreamTestVolume) {
|
| - if (!CanRunAudioTests())
|
| + scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
|
| + if (!CanRunAudioTests(audio_manager.get()))
|
| return;
|
| - AudioOutputStream* aos = CreateDefaultAudioOutputStream();
|
| + AudioOutputStream* aos = CreateDefaultAudioOutputStream(audio_manager.get());
|
|
|
| // Initial volume should be full volume (1.0).
|
| double volume = 0.0;
|
| @@ -337,9 +344,11 @@
|
|
|
| // Test some additional calling sequences.
|
| TEST(WinAudioOutputTest, WASAPIAudioOutputStreamTestMiscCallingSequences) {
|
| - if (!CanRunAudioTests())
|
| + scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
|
| + if (!CanRunAudioTests(audio_manager.get()))
|
| return;
|
| - AudioOutputStream* aos = CreateDefaultAudioOutputStream();
|
| +
|
| + AudioOutputStream* aos = CreateDefaultAudioOutputStream(audio_manager.get());
|
| WASAPIAudioOutputStream* waos = static_cast<WASAPIAudioOutputStream*>(aos);
|
|
|
| // Open(), Open() is a valid calling sequence (second call does nothing).
|
| @@ -365,7 +374,8 @@
|
|
|
| // Use default packet size (10ms) and verify that rendering starts.
|
| TEST(WinAudioOutputTest, WASAPIAudioOutputStreamTestPacketSizeInMilliseconds) {
|
| - if (!CanRunAudioTests())
|
| + scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
|
| + if (!CanRunAudioTests(audio_manager.get()))
|
| return;
|
|
|
| MessageLoopForUI loop;
|
| @@ -375,7 +385,7 @@
|
|
|
| // Create default WASAPI output stream which plays out in stereo using
|
| // the shared mixing rate. The default buffer size is 10ms.
|
| - AudioOutputStreamWrapper aosw;
|
| + AudioOutputStreamWrapper aosw(audio_manager.get());
|
| AudioOutputStream* aos = aosw.Create();
|
| EXPECT_TRUE(aos->Open());
|
|
|
| @@ -406,7 +416,8 @@
|
| // Use a fixed packets size (independent of sample rate) and verify
|
| // that rendering starts.
|
| TEST(WinAudioOutputTest, WASAPIAudioOutputStreamTestPacketSizeInSamples) {
|
| - if (!CanRunAudioTests())
|
| + scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
|
| + if (!CanRunAudioTests(audio_manager.get()))
|
| return;
|
|
|
| MessageLoopForUI loop;
|
| @@ -416,7 +427,7 @@
|
|
|
| // Create default WASAPI output stream which plays out in stereo using
|
| // the shared mixing rate. The buffer size is set to 1024 samples.
|
| - AudioOutputStreamWrapper aosw;
|
| + AudioOutputStreamWrapper aosw(audio_manager.get());
|
| AudioOutputStream* aos = aosw.Create(1024);
|
| EXPECT_TRUE(aos->Open());
|
|
|
| @@ -445,7 +456,8 @@
|
| }
|
|
|
| TEST(WinAudioOutputTest, WASAPIAudioOutputStreamTestMono) {
|
| - if (!CanRunAudioTests())
|
| + scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
|
| + if (!CanRunAudioTests(audio_manager.get()))
|
| return;
|
|
|
| MessageLoopForUI loop;
|
| @@ -455,10 +467,14 @@
|
|
|
| // Create default WASAPI output stream which plays out in *mono* using
|
| // the shared mixing rate. The default buffer size is 10ms.
|
| - AudioOutputStreamWrapper aosw;
|
| + AudioOutputStreamWrapper aosw(audio_manager.get());
|
| AudioOutputStream* aos = aosw.Create(CHANNEL_LAYOUT_MONO);
|
| - EXPECT_TRUE(aos->Open());
|
| -
|
| + bool opened;
|
| + EXPECT_TRUE(opened = aos->Open());
|
| + if (!opened) {
|
| + delete aos;
|
| + return;
|
| + }
|
| // Derive the expected size in bytes of each packet.
|
| uint32 bytes_per_packet = aosw.channels() * aosw.samples_per_packet() *
|
| (aosw.bits_per_sample() / 8);
|
| @@ -490,10 +506,11 @@
|
| // environment variable to a value greater than 0.
|
| // The test files are approximately 20 seconds long.
|
| TEST(WinAudioOutputTest, DISABLED_WASAPIAudioOutputStreamReadFromFile) {
|
| - if (!CanRunAudioTests())
|
| + scoped_refptr<AudioManager> audio_manager(AudioManager::Create());
|
| + if (!CanRunAudioTests(audio_manager.get()))
|
| return;
|
|
|
| - AudioOutputStreamWrapper aosw;
|
| + AudioOutputStreamWrapper aosw(audio_manager.get());
|
| AudioOutputStream* aos = aosw.Create();
|
| EXPECT_TRUE(aos->Open());
|
|
|
|
|