OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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" |
11 #include "media/audio/audio_util.h" | 11 #include "media/audio/audio_util.h" |
12 #include "testing/gmock/include/gmock/gmock.h" | 12 #include "testing/gmock/include/gmock/gmock.h" |
13 #include "third_party/webrtc/voice_engine/include/voe_audio_processing.h" | 13 #include "third_party/webrtc/voice_engine/include/voe_audio_processing.h" |
14 #include "third_party/webrtc/voice_engine/include/voe_base.h" | 14 #include "third_party/webrtc/voice_engine/include/voe_base.h" |
15 #include "third_party/webrtc/voice_engine/include/voe_external_media.h" | 15 #include "third_party/webrtc/voice_engine/include/voe_external_media.h" |
16 #include "third_party/webrtc/voice_engine/include/voe_file.h" | 16 #include "third_party/webrtc/voice_engine/include/voe_file.h" |
17 #include "third_party/webrtc/voice_engine/include/voe_network.h" | 17 #include "third_party/webrtc/voice_engine/include/voe_network.h" |
18 | 18 |
19 using testing::_; | 19 using testing::_; |
20 using testing::AnyNumber; | 20 using testing::AnyNumber; |
21 using testing::InvokeWithoutArgs; | 21 using testing::InvokeWithoutArgs; |
22 using testing::Return; | 22 using testing::Return; |
23 using testing::StrEq; | 23 using testing::StrEq; |
24 | 24 |
25 namespace { | 25 namespace { |
26 | 26 |
| 27 const int kRenderViewId = -2; |
| 28 |
27 class AudioUtil : public AudioUtilInterface { | 29 class AudioUtil : public AudioUtilInterface { |
28 public: | 30 public: |
29 AudioUtil() {} | 31 AudioUtil() {} |
30 | 32 |
31 virtual int GetAudioHardwareSampleRate() OVERRIDE { | 33 virtual int GetAudioHardwareSampleRate() OVERRIDE { |
32 return media::GetAudioHardwareSampleRate(); | 34 return media::GetAudioHardwareSampleRate(); |
33 } | 35 } |
34 virtual int GetAudioInputHardwareSampleRate( | 36 virtual int GetAudioInputHardwareSampleRate( |
35 const std::string& device_id) OVERRIDE { | 37 const std::string& device_id) OVERRIDE { |
36 return media::GetAudioInputHardwareSampleRate(device_id); | 38 return media::GetAudioInputHardwareSampleRate(device_id); |
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
217 invalid_rates[i])); | 219 invalid_rates[i])); |
218 } | 220 } |
219 } | 221 } |
220 | 222 |
221 // Basic test that instantiates and initializes an instance of | 223 // Basic test that instantiates and initializes an instance of |
222 // WebRtcAudioDeviceImpl. | 224 // WebRtcAudioDeviceImpl. |
223 TEST_F(WebRTCAudioDeviceTest, Construct) { | 225 TEST_F(WebRTCAudioDeviceTest, Construct) { |
224 AudioUtilNoHardware audio_util(48000, 48000, media::CHANNEL_LAYOUT_MONO); | 226 AudioUtilNoHardware audio_util(48000, 48000, media::CHANNEL_LAYOUT_MONO); |
225 SetAudioUtilCallback(&audio_util); | 227 SetAudioUtilCallback(&audio_util); |
226 scoped_refptr<WebRtcAudioDeviceImpl> webrtc_audio_device( | 228 scoped_refptr<WebRtcAudioDeviceImpl> webrtc_audio_device( |
227 new WebRtcAudioDeviceImpl()); | 229 new WebRtcAudioDeviceImpl(kRenderViewId)); |
228 | 230 |
229 webrtc_audio_device->SetSessionId(1); | 231 webrtc_audio_device->SetSessionId(1); |
230 | 232 |
231 WebRTCAutoDelete<webrtc::VoiceEngine> engine(webrtc::VoiceEngine::Create()); | 233 WebRTCAutoDelete<webrtc::VoiceEngine> engine(webrtc::VoiceEngine::Create()); |
232 ASSERT_TRUE(engine.valid()); | 234 ASSERT_TRUE(engine.valid()); |
233 | 235 |
234 ScopedWebRTCPtr<webrtc::VoEBase> base(engine.get()); | 236 ScopedWebRTCPtr<webrtc::VoEBase> base(engine.get()); |
235 int err = base->Init(webrtc_audio_device); | 237 int err = base->Init(webrtc_audio_device); |
236 EXPECT_EQ(0, err); | 238 EXPECT_EQ(0, err); |
237 EXPECT_EQ(0, base->Terminate()); | 239 EXPECT_EQ(0, base->Terminate()); |
(...skipping 20 matching lines...) Expand all Loading... |
258 EXPECT_CALL(media_observer(), | 260 EXPECT_CALL(media_observer(), |
259 OnSetAudioStreamStatus(_, 1, StrEq("created"))).Times(1); | 261 OnSetAudioStreamStatus(_, 1, StrEq("created"))).Times(1); |
260 EXPECT_CALL(media_observer(), | 262 EXPECT_CALL(media_observer(), |
261 OnSetAudioStreamPlaying(_, 1, true)).Times(1); | 263 OnSetAudioStreamPlaying(_, 1, true)).Times(1); |
262 EXPECT_CALL(media_observer(), | 264 EXPECT_CALL(media_observer(), |
263 OnSetAudioStreamStatus(_, 1, StrEq("closed"))).Times(1); | 265 OnSetAudioStreamStatus(_, 1, StrEq("closed"))).Times(1); |
264 EXPECT_CALL(media_observer(), | 266 EXPECT_CALL(media_observer(), |
265 OnDeleteAudioStream(_, 1)).Times(AnyNumber()); | 267 OnDeleteAudioStream(_, 1)).Times(AnyNumber()); |
266 | 268 |
267 scoped_refptr<WebRtcAudioDeviceImpl> webrtc_audio_device( | 269 scoped_refptr<WebRtcAudioDeviceImpl> webrtc_audio_device( |
268 new WebRtcAudioDeviceImpl()); | 270 new WebRtcAudioDeviceImpl(kRenderViewId)); |
269 webrtc_audio_device->SetSessionId(1); | 271 webrtc_audio_device->SetSessionId(1); |
270 WebRTCAutoDelete<webrtc::VoiceEngine> engine(webrtc::VoiceEngine::Create()); | 272 WebRTCAutoDelete<webrtc::VoiceEngine> engine(webrtc::VoiceEngine::Create()); |
271 ASSERT_TRUE(engine.valid()); | 273 ASSERT_TRUE(engine.valid()); |
272 | 274 |
273 ScopedWebRTCPtr<webrtc::VoEBase> base(engine.get()); | 275 ScopedWebRTCPtr<webrtc::VoEBase> base(engine.get()); |
274 ASSERT_TRUE(base.valid()); | 276 ASSERT_TRUE(base.valid()); |
275 int err = base->Init(webrtc_audio_device); | 277 int err = base->Init(webrtc_audio_device); |
276 ASSERT_EQ(0, err); | 278 ASSERT_EQ(0, err); |
277 | 279 |
278 int ch = base->CreateChannel(); | 280 int ch = base->CreateChannel(); |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
326 SetAudioUtilCallback(&audio_util); | 328 SetAudioUtilCallback(&audio_util); |
327 | 329 |
328 if (!HardwareSampleRatesAreValid()) | 330 if (!HardwareSampleRatesAreValid()) |
329 return; | 331 return; |
330 | 332 |
331 // TODO(tommi): extend MediaObserver and MockMediaObserver with support | 333 // TODO(tommi): extend MediaObserver and MockMediaObserver with support |
332 // for new interfaces, like OnSetAudioStreamRecording(). When done, add | 334 // for new interfaces, like OnSetAudioStreamRecording(). When done, add |
333 // EXPECT_CALL() macros here. | 335 // EXPECT_CALL() macros here. |
334 | 336 |
335 scoped_refptr<WebRtcAudioDeviceImpl> webrtc_audio_device( | 337 scoped_refptr<WebRtcAudioDeviceImpl> webrtc_audio_device( |
336 new WebRtcAudioDeviceImpl()); | 338 new WebRtcAudioDeviceImpl(kRenderViewId)); |
337 webrtc_audio_device->SetSessionId(1); | 339 webrtc_audio_device->SetSessionId(1); |
338 WebRTCAutoDelete<webrtc::VoiceEngine> engine(webrtc::VoiceEngine::Create()); | 340 WebRTCAutoDelete<webrtc::VoiceEngine> engine(webrtc::VoiceEngine::Create()); |
339 ASSERT_TRUE(engine.valid()); | 341 ASSERT_TRUE(engine.valid()); |
340 | 342 |
341 ScopedWebRTCPtr<webrtc::VoEBase> base(engine.get()); | 343 ScopedWebRTCPtr<webrtc::VoEBase> base(engine.get()); |
342 ASSERT_TRUE(base.valid()); | 344 ASSERT_TRUE(base.valid()); |
343 int err = base->Init(webrtc_audio_device); | 345 int err = base->Init(webrtc_audio_device); |
344 ASSERT_EQ(0, err); | 346 ASSERT_EQ(0, err); |
345 | 347 |
346 int ch = base->CreateChannel(); | 348 int ch = base->CreateChannel(); |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
402 EXPECT_CALL(media_observer(), | 404 EXPECT_CALL(media_observer(), |
403 OnSetAudioStreamStatus(_, 1, StrEq("created"))).Times(1); | 405 OnSetAudioStreamStatus(_, 1, StrEq("created"))).Times(1); |
404 EXPECT_CALL(media_observer(), | 406 EXPECT_CALL(media_observer(), |
405 OnSetAudioStreamPlaying(_, 1, true)).Times(1); | 407 OnSetAudioStreamPlaying(_, 1, true)).Times(1); |
406 EXPECT_CALL(media_observer(), | 408 EXPECT_CALL(media_observer(), |
407 OnSetAudioStreamStatus(_, 1, StrEq("closed"))).Times(1); | 409 OnSetAudioStreamStatus(_, 1, StrEq("closed"))).Times(1); |
408 EXPECT_CALL(media_observer(), | 410 EXPECT_CALL(media_observer(), |
409 OnDeleteAudioStream(_, 1)).Times(AnyNumber()); | 411 OnDeleteAudioStream(_, 1)).Times(AnyNumber()); |
410 | 412 |
411 scoped_refptr<WebRtcAudioDeviceImpl> webrtc_audio_device( | 413 scoped_refptr<WebRtcAudioDeviceImpl> webrtc_audio_device( |
412 new WebRtcAudioDeviceImpl()); | 414 new WebRtcAudioDeviceImpl(kRenderViewId)); |
413 webrtc_audio_device->SetSessionId(1); | 415 webrtc_audio_device->SetSessionId(1); |
414 | 416 |
415 WebRTCAutoDelete<webrtc::VoiceEngine> engine(webrtc::VoiceEngine::Create()); | 417 WebRTCAutoDelete<webrtc::VoiceEngine> engine(webrtc::VoiceEngine::Create()); |
416 ASSERT_TRUE(engine.valid()); | 418 ASSERT_TRUE(engine.valid()); |
417 | 419 |
418 ScopedWebRTCPtr<webrtc::VoEBase> base(engine.get()); | 420 ScopedWebRTCPtr<webrtc::VoEBase> base(engine.get()); |
419 ASSERT_TRUE(base.valid()); | 421 ASSERT_TRUE(base.valid()); |
420 int err = base->Init(webrtc_audio_device); | 422 int err = base->Init(webrtc_audio_device); |
421 ASSERT_EQ(0, err); | 423 ASSERT_EQ(0, err); |
422 | 424 |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
470 EXPECT_CALL(media_observer(), | 472 EXPECT_CALL(media_observer(), |
471 OnSetAudioStreamStatus(_, 1, StrEq("created"))); | 473 OnSetAudioStreamStatus(_, 1, StrEq("created"))); |
472 EXPECT_CALL(media_observer(), | 474 EXPECT_CALL(media_observer(), |
473 OnSetAudioStreamPlaying(_, 1, true)); | 475 OnSetAudioStreamPlaying(_, 1, true)); |
474 EXPECT_CALL(media_observer(), | 476 EXPECT_CALL(media_observer(), |
475 OnSetAudioStreamStatus(_, 1, StrEq("closed"))); | 477 OnSetAudioStreamStatus(_, 1, StrEq("closed"))); |
476 EXPECT_CALL(media_observer(), | 478 EXPECT_CALL(media_observer(), |
477 OnDeleteAudioStream(_, 1)).Times(AnyNumber()); | 479 OnDeleteAudioStream(_, 1)).Times(AnyNumber()); |
478 | 480 |
479 scoped_refptr<WebRtcAudioDeviceImpl> webrtc_audio_device( | 481 scoped_refptr<WebRtcAudioDeviceImpl> webrtc_audio_device( |
480 new WebRtcAudioDeviceImpl()); | 482 new WebRtcAudioDeviceImpl(kRenderViewId)); |
481 webrtc_audio_device->SetSessionId(1); | 483 webrtc_audio_device->SetSessionId(1); |
482 WebRTCAutoDelete<webrtc::VoiceEngine> engine(webrtc::VoiceEngine::Create()); | 484 WebRTCAutoDelete<webrtc::VoiceEngine> engine(webrtc::VoiceEngine::Create()); |
483 ASSERT_TRUE(engine.valid()); | 485 ASSERT_TRUE(engine.valid()); |
484 | 486 |
485 ScopedWebRTCPtr<webrtc::VoEBase> base(engine.get()); | 487 ScopedWebRTCPtr<webrtc::VoEBase> base(engine.get()); |
486 ASSERT_TRUE(base.valid()); | 488 ASSERT_TRUE(base.valid()); |
487 int err = base->Init(webrtc_audio_device); | 489 int err = base->Init(webrtc_audio_device); |
488 ASSERT_EQ(0, err); | 490 ASSERT_EQ(0, err); |
489 | 491 |
490 ScopedWebRTCPtr<webrtc::VoEAudioProcessing> audio_processing(engine.get()); | 492 ScopedWebRTCPtr<webrtc::VoEAudioProcessing> audio_processing(engine.get()); |
(...skipping 20 matching lines...) Expand all Loading... |
511 MessageLoop::QuitClosure(), | 513 MessageLoop::QuitClosure(), |
512 base::TimeDelta::FromSeconds(2)); | 514 base::TimeDelta::FromSeconds(2)); |
513 message_loop_.Run(); | 515 message_loop_.Run(); |
514 | 516 |
515 EXPECT_EQ(0, base->StopSend(ch)); | 517 EXPECT_EQ(0, base->StopSend(ch)); |
516 EXPECT_EQ(0, base->StopPlayout(ch)); | 518 EXPECT_EQ(0, base->StopPlayout(ch)); |
517 | 519 |
518 EXPECT_EQ(0, base->DeleteChannel(ch)); | 520 EXPECT_EQ(0, base->DeleteChannel(ch)); |
519 EXPECT_EQ(0, base->Terminate()); | 521 EXPECT_EQ(0, base->Terminate()); |
520 } | 522 } |
OLD | NEW |