Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7)

Side by Side Diff: content/renderer/media/webrtc_audio_device_unittest.cc

Issue 8818012: Remove the AudioManager singleton. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Set svn eol properties for a couple of files Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "base/environment.h" 5 #include "base/environment.h"
6 #include "base/test/test_timeouts.h" 6 #include "base/test/test_timeouts.h"
7 #include "content/renderer/media/audio_hardware.h" 7 #include "content/renderer/media/audio_hardware.h"
8 #include "content/renderer/media/webrtc_audio_device_impl.h" 8 #include "content/renderer/media/webrtc_audio_device_impl.h"
9 #include "content/test/webrtc_audio_device_test.h" 9 #include "content/test/webrtc_audio_device_test.h"
10 #include "media/audio/audio_manager.h" 10 #include "media/audio/audio_manager.h"
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 webrtc::ProcessingTypes type_; 150 webrtc::ProcessingTypes type_;
151 int packet_size_; 151 int packet_size_;
152 int sample_rate_; 152 int sample_rate_;
153 int channels_; 153 int channels_;
154 mutable base::Lock lock_; 154 mutable base::Lock lock_;
155 DISALLOW_COPY_AND_ASSIGN(WebRTCMediaProcessImpl); 155 DISALLOW_COPY_AND_ASSIGN(WebRTCMediaProcessImpl);
156 }; 156 };
157 157
158 } // end namespace 158 } // end namespace
159 159
160 // Utility class to delete the AudioManager.
161 // TODO(tommi): Remove when we've fixed issue 105249.
162 class AutoAudioManagerCleanup {
163 public:
164 AutoAudioManagerCleanup() {
165 // Log an error if a previous test didn't clean up the AudioManager.
166 if (DeleteAndResurrect()) {
167 LOG(ERROR)
168 << "AudioManager singleton was not cleaned up by some previous test!";
169 }
170 }
171 ~AutoAudioManagerCleanup() {
172 DeleteAndResurrect();
173 }
174
175 private:
176 // Returns true iff the AudioManager existed and was deleted.
177 bool DeleteAndResurrect() {
178 if (AudioManager::SingletonExists()) {
179 AudioManager::Destroy(NULL);
180 AudioManager::Resurrect();
181 return true;
182 }
183 return false;
184 }
185
186 DISALLOW_COPY_AND_ASSIGN(AutoAudioManagerCleanup);
187 };
188
189 // Basic test that instantiates and initializes an instance of 160 // Basic test that instantiates and initializes an instance of
190 // WebRtcAudioDeviceImpl. 161 // WebRtcAudioDeviceImpl.
191 TEST_F(WebRTCAudioDeviceTest, Construct) { 162 TEST_F(WebRTCAudioDeviceTest, Construct) {
192 AutoAudioManagerCleanup audio_manager_cleanup;
193 AudioUtilNoHardware audio_util(48000.0, 48000.0); 163 AudioUtilNoHardware audio_util(48000.0, 48000.0);
194 SetAudioUtilCallback(&audio_util); 164 SetAudioUtilCallback(&audio_util);
195 scoped_refptr<WebRtcAudioDeviceImpl> audio_device( 165 scoped_refptr<WebRtcAudioDeviceImpl> audio_device(
196 new WebRtcAudioDeviceImpl()); 166 new WebRtcAudioDeviceImpl());
197 audio_device->SetSessionId(1); 167 audio_device->SetSessionId(1);
198 168
199 WebRTCAutoDelete<webrtc::VoiceEngine> engine(webrtc::VoiceEngine::Create()); 169 WebRTCAutoDelete<webrtc::VoiceEngine> engine(webrtc::VoiceEngine::Create());
200 ASSERT_TRUE(engine.valid()); 170 ASSERT_TRUE(engine.valid());
201 171
202 ScopedWebRTCPtr<webrtc::VoEBase> base(engine.get()); 172 ScopedWebRTCPtr<webrtc::VoEBase> base(engine.get());
203 int err = base->Init(audio_device); 173 int err = base->Init(audio_device);
204 EXPECT_EQ(0, err); 174 EXPECT_EQ(0, err);
205 EXPECT_EQ(0, base->Terminate()); 175 EXPECT_EQ(0, base->Terminate());
206 } 176 }
207 177
208 // Verify that a call to webrtc::VoEBase::StartPlayout() starts audio output 178 // Verify that a call to webrtc::VoEBase::StartPlayout() starts audio output
209 // with the correct set of parameters. A WebRtcAudioDeviceImpl instance will 179 // with the correct set of parameters. A WebRtcAudioDeviceImpl instance will
210 // be utilized to implement the actual audio path. The test registers a 180 // be utilized to implement the actual audio path. The test registers a
211 // webrtc::VoEExternalMedia implementation to hijack the output audio and 181 // webrtc::VoEExternalMedia implementation to hijack the output audio and
212 // verify that streaming starts correctly. 182 // verify that streaming starts correctly.
213 // Disabled when running headless since the bots don't have the required config. 183 // Disabled when running headless since the bots don't have the required config.
214 TEST_F(WebRTCAudioDeviceTest, StartPlayout) { 184 TEST_F(WebRTCAudioDeviceTest, StartPlayout) {
215 AutoAudioManagerCleanup audio_manager_cleanup;
216
217 if (IsRunningHeadless()) 185 if (IsRunningHeadless())
218 return; 186 return;
219 187
220 AudioUtil audio_util; 188 AudioUtil audio_util;
221 SetAudioUtilCallback(&audio_util); 189 SetAudioUtilCallback(&audio_util);
222 190
223 if (!HardwareSampleRatesAreValid()) 191 if (!HardwareSampleRatesAreValid())
224 return; 192 return;
225 193
226 EXPECT_CALL(media_observer(), 194 EXPECT_CALL(media_observer(),
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 // Verify that a call to webrtc::VoEBase::StartRecording() starts audio input 247 // Verify that a call to webrtc::VoEBase::StartRecording() starts audio input
280 // with the correct set of parameters. A WebRtcAudioDeviceImpl instance will 248 // with the correct set of parameters. A WebRtcAudioDeviceImpl instance will
281 // be utilized to implement the actual audio path. The test registers a 249 // be utilized to implement the actual audio path. The test registers a
282 // webrtc::VoEExternalMedia implementation to hijack the input audio and 250 // webrtc::VoEExternalMedia implementation to hijack the input audio and
283 // verify that streaming starts correctly. An external transport implementation 251 // verify that streaming starts correctly. An external transport implementation
284 // is also required to ensure that "sending" can start without actually trying 252 // is also required to ensure that "sending" can start without actually trying
285 // to send encoded packets to the network. Our main interest here is to ensure 253 // to send encoded packets to the network. Our main interest here is to ensure
286 // that the audio capturing starts as it should. 254 // that the audio capturing starts as it should.
287 // Disabled when running headless since the bots don't have the required config. 255 // Disabled when running headless since the bots don't have the required config.
288 TEST_F(WebRTCAudioDeviceTest, StartRecording) { 256 TEST_F(WebRTCAudioDeviceTest, StartRecording) {
289 AutoAudioManagerCleanup audio_manager_cleanup;
290
291 if (IsRunningHeadless()) 257 if (IsRunningHeadless())
292 return; 258 return;
293 259
294 AudioUtil audio_util; 260 AudioUtil audio_util;
295 SetAudioUtilCallback(&audio_util); 261 SetAudioUtilCallback(&audio_util);
296 262
297 if (!HardwareSampleRatesAreValid()) 263 if (!HardwareSampleRatesAreValid())
298 return; 264 return;
299 265
300 // TODO(tommi): extend MediaObserver and MockMediaObserver with support 266 // TODO(tommi): extend MediaObserver and MockMediaObserver with support
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
348 ch, webrtc::kRecordingPerChannel)); 314 ch, webrtc::kRecordingPerChannel));
349 EXPECT_EQ(0, base->StopSend(ch)); 315 EXPECT_EQ(0, base->StopSend(ch));
350 316
351 EXPECT_EQ(0, base->DeleteChannel(ch)); 317 EXPECT_EQ(0, base->DeleteChannel(ch));
352 EXPECT_EQ(0, base->Terminate()); 318 EXPECT_EQ(0, base->Terminate());
353 } 319 }
354 320
355 // Uses WebRtcAudioDeviceImpl to play a local wave file. 321 // Uses WebRtcAudioDeviceImpl to play a local wave file.
356 // Disabled when running headless since the bots don't have the required config. 322 // Disabled when running headless since the bots don't have the required config.
357 TEST_F(WebRTCAudioDeviceTest, PlayLocalFile) { 323 TEST_F(WebRTCAudioDeviceTest, PlayLocalFile) {
358 AutoAudioManagerCleanup audio_manager_cleanup;
359
360 if (IsRunningHeadless()) 324 if (IsRunningHeadless())
361 return; 325 return;
362 326
363 std::string file_path( 327 std::string file_path(
364 GetTestDataPath(FILE_PATH_LITERAL("speechmusic_mono_16kHz.pcm"))); 328 GetTestDataPath(FILE_PATH_LITERAL("speechmusic_mono_16kHz.pcm")));
365 329
366 AudioUtil audio_util; 330 AudioUtil audio_util;
367 SetAudioUtilCallback(&audio_util); 331 SetAudioUtilCallback(&audio_util);
368 332
369 if (!HardwareSampleRatesAreValid()) 333 if (!HardwareSampleRatesAreValid())
(...skipping 26 matching lines...) Expand all
396 360
397 ScopedWebRTCPtr<webrtc::VoEFile> file(engine.get()); 361 ScopedWebRTCPtr<webrtc::VoEFile> file(engine.get());
398 int duration = 0; 362 int duration = 0;
399 EXPECT_EQ(0, file->GetFileDuration(file_path.c_str(), duration, 363 EXPECT_EQ(0, file->GetFileDuration(file_path.c_str(), duration,
400 webrtc::kFileFormatPcm16kHzFile)); 364 webrtc::kFileFormatPcm16kHzFile));
401 EXPECT_NE(0, duration); 365 EXPECT_NE(0, duration);
402 366
403 EXPECT_EQ(0, file->StartPlayingFileLocally(ch, file_path.c_str(), false, 367 EXPECT_EQ(0, file->StartPlayingFileLocally(ch, file_path.c_str(), false,
404 webrtc::kFileFormatPcm16kHzFile)); 368 webrtc::kFileFormatPcm16kHzFile));
405 369
370 // Play 2 seconds worth of audio and then quit.
406 message_loop_.PostDelayedTask(FROM_HERE, 371 message_loop_.PostDelayedTask(FROM_HERE,
407 MessageLoop::QuitClosure(), 372 MessageLoop::QuitClosure(),
408 TestTimeouts::action_timeout_ms()); 373 2000);
409 message_loop_.Run(); 374 message_loop_.Run();
410 375
376
377 EXPECT_EQ(0, base->StopSend(ch));
378 EXPECT_EQ(0, base->StopPlayout(ch));
379 EXPECT_EQ(0, base->DeleteChannel(ch));
411 EXPECT_EQ(0, base->Terminate()); 380 EXPECT_EQ(0, base->Terminate());
412 } 381 }
413 382
414 // Uses WebRtcAudioDeviceImpl to play out recorded audio in loopback. 383 // Uses WebRtcAudioDeviceImpl to play out recorded audio in loopback.
415 // An external transport implementation is utilized to feed back RTP packets 384 // An external transport implementation is utilized to feed back RTP packets
416 // which are recorded, encoded, packetized into RTP packets and finally 385 // which are recorded, encoded, packetized into RTP packets and finally
417 // "transmitted". The RTP packets are then fed back into the VoiceEngine 386 // "transmitted". The RTP packets are then fed back into the VoiceEngine
418 // where they are decoded and played out on the default audio output device. 387 // where they are decoded and played out on the default audio output device.
419 // Disabled when running headless since the bots don't have the required config. 388 // Disabled when running headless since the bots don't have the required config.
420 // TODO(henrika): improve quality by using a wideband codec, enabling noise- 389 // TODO(henrika): improve quality by using a wideband codec, enabling noise-
421 // suppressions and perhaps also the digital AGC. 390 // suppressions and perhaps also the digital AGC.
422 TEST_F(WebRTCAudioDeviceTest, FullDuplexAudio) { 391 TEST_F(WebRTCAudioDeviceTest, FullDuplexAudio) {
423 AutoAudioManagerCleanup audio_manager_cleanup;
424
425 if (IsRunningHeadless()) 392 if (IsRunningHeadless())
426 return; 393 return;
427 394
428 AudioUtil audio_util; 395 AudioUtil audio_util;
429 SetAudioUtilCallback(&audio_util); 396 SetAudioUtilCallback(&audio_util);
430 397
431 if (!HardwareSampleRatesAreValid()) 398 if (!HardwareSampleRatesAreValid())
432 return; 399 return;
433 400
434 EXPECT_CALL(media_observer(), 401 EXPECT_CALL(media_observer(),
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
466 MessageLoop::QuitClosure(), 433 MessageLoop::QuitClosure(),
467 TestTimeouts::action_timeout_ms()); 434 TestTimeouts::action_timeout_ms());
468 message_loop_.Run(); 435 message_loop_.Run();
469 436
470 EXPECT_EQ(0, base->StopSend(ch)); 437 EXPECT_EQ(0, base->StopSend(ch));
471 EXPECT_EQ(0, base->StopPlayout(ch)); 438 EXPECT_EQ(0, base->StopPlayout(ch));
472 439
473 EXPECT_EQ(0, base->DeleteChannel(ch)); 440 EXPECT_EQ(0, base->DeleteChannel(ch));
474 EXPECT_EQ(0, base->Terminate()); 441 EXPECT_EQ(0, base->Terminate());
475 } 442 }
OLDNEW
« no previous file with comments | « content/browser/speech/speech_recognizer_unittest.cc ('k') | content/test/webrtc_audio_device_test.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698