| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <windows.h> | 5 #include <windows.h> |
| 6 | 6 |
| 7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
| 8 #include "base/base_paths.h" | 8 #include "base/base_paths.h" |
| 9 #include "base/file_util.h" | 9 #include "base/file_util.h" |
| 10 #include "media/audio/audio_output.h" | 10 #include "media/audio/audio_output.h" |
| (...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 186 EXPECT_TRUE(oas->Open(256)); | 186 EXPECT_TRUE(oas->Open(256)); |
| 187 TestSourceBasic source; | 187 TestSourceBasic source; |
| 188 oas->Start(&source); | 188 oas->Start(&source); |
| 189 EXPECT_GT(source.callback_count(), 0); | 189 EXPECT_GT(source.callback_count(), 0); |
| 190 oas->Stop(); | 190 oas->Stop(); |
| 191 oas->Close(); | 191 oas->Close(); |
| 192 EXPECT_EQ(0, source.had_error()); | 192 EXPECT_EQ(0, source.had_error()); |
| 193 EXPECT_EQ(1, source.was_closed()); | 193 EXPECT_EQ(1, source.was_closed()); |
| 194 } | 194 } |
| 195 | 195 |
| 196 // Validate that the SineWaveAudioSource writes the expected values for | |
| 197 // the FORMAT_16BIT_MONO. The values are carefully selected so rounding issues | |
| 198 // do not affect the result. We also test that AudioManager::GetLastMockBuffer | |
| 199 // works. | |
| 200 // TODO(hclam): move this test to SimpleSourcesTest once mock audio stream is | |
| 201 // implemented on other platform. | |
| 202 TEST(WinAudioTest, SineWaveAudio16MonoTest) { | |
| 203 const size_t samples = 1024; | |
| 204 const size_t bytes_per_sample = 2; | |
| 205 const int freq = 200; | |
| 206 | |
| 207 SineWaveAudioSource source(SineWaveAudioSource::FORMAT_16BIT_LINEAR_PCM, 1, | |
| 208 freq, AudioManager::kTelephoneSampleRate); | |
| 209 | |
| 210 AudioManager* audio_man = AudioManager::GetAudioManager(); | |
| 211 ASSERT_TRUE(NULL != audio_man); | |
| 212 AudioOutputStream* oas = | |
| 213 audio_man->MakeAudioStream(AudioManager::AUDIO_MOCK, 1, | |
| 214 AudioManager::kTelephoneSampleRate, | |
| 215 bytes_per_sample * 2); | |
| 216 ASSERT_TRUE(NULL != oas); | |
| 217 EXPECT_TRUE(oas->Open(samples * bytes_per_sample)); | |
| 218 | |
| 219 oas->Start(&source); | |
| 220 oas->Stop(); | |
| 221 oas->Close(); | |
| 222 | |
| 223 const int16* last_buffer = | |
| 224 reinterpret_cast<const int16*>(audio_man->GetLastMockBuffer()); | |
| 225 ASSERT_TRUE(NULL != last_buffer); | |
| 226 | |
| 227 size_t half_period = AudioManager::kTelephoneSampleRate / (freq * 2); | |
| 228 | |
| 229 // Spot test positive incursion of sine wave. | |
| 230 EXPECT_EQ(0, last_buffer[0]); | |
| 231 EXPECT_EQ(5126, last_buffer[1]); | |
| 232 EXPECT_TRUE(last_buffer[1] < last_buffer[2]); | |
| 233 EXPECT_TRUE(last_buffer[2] < last_buffer[3]); | |
| 234 // Spot test negative incursion of sine wave. | |
| 235 EXPECT_EQ(0, last_buffer[half_period]); | |
| 236 EXPECT_EQ(-5126, last_buffer[half_period + 1]); | |
| 237 EXPECT_TRUE(last_buffer[half_period + 1] > last_buffer[half_period + 2]); | |
| 238 EXPECT_TRUE(last_buffer[half_period + 2] > last_buffer[half_period + 3]); | |
| 239 } | |
| 240 | |
| 241 // =========================================================================== | 196 // =========================================================================== |
| 242 // Validation of AudioManager::AUDIO_PCM_LINEAR | 197 // Validation of AudioManager::AUDIO_PCM_LINEAR |
| 243 // | 198 // |
| 244 // The tests tend to fail in the build bots when somebody connects to them via | 199 // The tests tend to fail in the build bots when somebody connects to them via |
| 245 // via remote-desktop because it installs an audio device that fails to open | 200 // via remote-desktop because it installs an audio device that fails to open |
| 246 // at some point, possibly when the connection goes idle. So that is why we | 201 // at some point, possibly when the connection goes idle. So that is why we |
| 247 // skipped them in headless mode. | 202 // skipped them in headless mode. |
| 248 | 203 |
| 249 // Test that can it be created and closed. | 204 // Test that can it be created and closed. |
| 250 TEST(WinAudioTest, PCMWaveStreamGetAndClose) { | 205 TEST(WinAudioTest, PCMWaveStreamGetAndClose) { |
| (...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 508 ::Sleep(500); | 463 ::Sleep(500); |
| 509 | 464 |
| 510 // Start again and play for 1.5 seconds. | 465 // Start again and play for 1.5 seconds. |
| 511 oas->Start(&source); | 466 oas->Start(&source); |
| 512 ::Sleep(1500); | 467 ::Sleep(1500); |
| 513 oas->Stop(); | 468 oas->Stop(); |
| 514 | 469 |
| 515 oas->Close(); | 470 oas->Close(); |
| 516 } | 471 } |
| 517 | 472 |
| OLD | NEW |