OLD | NEW |
1 /* | 1 /* |
2 * libjingle | 2 * libjingle |
3 * Copyright 2008 Google Inc. | 3 * Copyright 2008 Google Inc. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions are met: | 6 * modification, are permitted provided that the following conditions are met: |
7 * | 7 * |
8 * 1. Redistributions of source code must retain the above copyright notice, | 8 * 1. Redistributions of source code must retain the above copyright notice, |
9 * this list of conditions and the following disclaimer. | 9 * this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright notice, | 10 * 2. Redistributions in binary form must reproduce the above copyright notice, |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
82 filter_ = filter; | 82 filter_ = filter; |
83 return 0; | 83 return 0; |
84 } | 84 } |
85 int SetTraceFile(const char* fileNameUTF8) override { return 0; } | 85 int SetTraceFile(const char* fileNameUTF8) override { return 0; } |
86 int SetTraceCallback(webrtc::TraceCallback* callback) override { return 0; } | 86 int SetTraceCallback(webrtc::TraceCallback* callback) override { return 0; } |
87 unsigned int filter_; | 87 unsigned int filter_; |
88 }; | 88 }; |
89 | 89 |
90 class WebRtcVoiceEngineTestFake : public testing::Test { | 90 class WebRtcVoiceEngineTestFake : public testing::Test { |
91 public: | 91 public: |
92 class ChannelErrorListener : public sigslot::has_slots<> { | |
93 public: | |
94 explicit ChannelErrorListener(cricket::VoiceMediaChannel* channel) | |
95 : ssrc_(0), error_(cricket::VoiceMediaChannel::ERROR_NONE) { | |
96 RTC_DCHECK(channel != NULL); | |
97 channel->SignalMediaError.connect( | |
98 this, &ChannelErrorListener::OnVoiceChannelError); | |
99 } | |
100 void OnVoiceChannelError(uint32 ssrc, | |
101 cricket::VoiceMediaChannel::Error error) { | |
102 ssrc_ = ssrc; | |
103 error_ = error; | |
104 } | |
105 void Reset() { | |
106 ssrc_ = 0; | |
107 error_ = cricket::VoiceMediaChannel::ERROR_NONE; | |
108 } | |
109 uint32 ssrc() const { | |
110 return ssrc_; | |
111 } | |
112 cricket::VoiceMediaChannel::Error error() const { | |
113 return error_; | |
114 } | |
115 | |
116 private: | |
117 uint32 ssrc_; | |
118 cricket::VoiceMediaChannel::Error error_; | |
119 }; | |
120 | |
121 WebRtcVoiceEngineTestFake() | 92 WebRtcVoiceEngineTestFake() |
122 : call_(webrtc::Call::Config()), | 93 : call_(webrtc::Call::Config()), |
123 voe_(kAudioCodecs, ARRAY_SIZE(kAudioCodecs)), | 94 voe_(kAudioCodecs, ARRAY_SIZE(kAudioCodecs)), |
124 trace_wrapper_(new FakeVoETraceWrapper()), | 95 trace_wrapper_(new FakeVoETraceWrapper()), |
125 engine_(new FakeVoEWrapper(&voe_), trace_wrapper_), | 96 engine_(new FakeVoEWrapper(&voe_), trace_wrapper_), |
126 channel_(nullptr) { | 97 channel_(nullptr) { |
127 send_parameters_.codecs.push_back(kPcmuCodec); | 98 send_parameters_.codecs.push_back(kPcmuCodec); |
128 recv_parameters_.codecs.push_back(kPcmuCodec); | 99 recv_parameters_.codecs.push_back(kPcmuCodec); |
129 options_conference_.conference_mode.Set(true); | 100 options_conference_.conference_mode.Set(true); |
130 options_adjust_agc_.adjust_agc_delta.Set(-10); | 101 options_adjust_agc_.adjust_agc_delta.Set(-10); |
(...skipping 2405 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2536 // Test the InsertDtmf on specified send stream as caller. | 2507 // Test the InsertDtmf on specified send stream as caller. |
2537 TEST_F(WebRtcVoiceEngineTestFake, InsertDtmfOnSendStreamAsCaller) { | 2508 TEST_F(WebRtcVoiceEngineTestFake, InsertDtmfOnSendStreamAsCaller) { |
2538 TestInsertDtmf(kSsrc1, true); | 2509 TestInsertDtmf(kSsrc1, true); |
2539 } | 2510 } |
2540 | 2511 |
2541 // Test the InsertDtmf on specified send stream as callee. | 2512 // Test the InsertDtmf on specified send stream as callee. |
2542 TEST_F(WebRtcVoiceEngineTestFake, InsertDtmfOnSendStreamAsCallee) { | 2513 TEST_F(WebRtcVoiceEngineTestFake, InsertDtmfOnSendStreamAsCallee) { |
2543 TestInsertDtmf(kSsrc1, false); | 2514 TestInsertDtmf(kSsrc1, false); |
2544 } | 2515 } |
2545 | 2516 |
2546 TEST_F(WebRtcVoiceEngineTestFake, MediaEngineCallbackOnError) { | |
2547 rtc::scoped_ptr<ChannelErrorListener> listener; | |
2548 cricket::WebRtcVoiceMediaChannel* media_channel; | |
2549 unsigned int ssrc = 0; | |
2550 | |
2551 EXPECT_TRUE(SetupEngine()); | |
2552 send_parameters_.options = options_conference_; | |
2553 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | |
2554 EXPECT_TRUE(channel_->SetSend(cricket::SEND_MICROPHONE)); | |
2555 | |
2556 media_channel = static_cast<cricket::WebRtcVoiceMediaChannel*>(channel_); | |
2557 listener.reset(new ChannelErrorListener(channel_)); | |
2558 | |
2559 // Test on WebRtc VoE channel. | |
2560 voe_.TriggerCallbackOnError(media_channel->voe_channel(), | |
2561 VE_SATURATION_WARNING); | |
2562 EXPECT_EQ(cricket::VoiceMediaChannel::ERROR_REC_DEVICE_SATURATION, | |
2563 listener->error()); | |
2564 EXPECT_NE(-1, voe_.GetLocalSSRC(voe_.GetLastChannel(), ssrc)); | |
2565 EXPECT_EQ(ssrc, listener->ssrc()); | |
2566 | |
2567 listener->Reset(); | |
2568 voe_.TriggerCallbackOnError(-1, VE_TYPING_NOISE_WARNING); | |
2569 EXPECT_EQ(cricket::VoiceMediaChannel::ERROR_REC_TYPING_NOISE_DETECTED, | |
2570 listener->error()); | |
2571 EXPECT_EQ(0U, listener->ssrc()); | |
2572 | |
2573 // Add another stream and test on that. | |
2574 ++ssrc; | |
2575 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy( | |
2576 ssrc))); | |
2577 listener->Reset(); | |
2578 voe_.TriggerCallbackOnError(voe_.GetLastChannel(), | |
2579 VE_SATURATION_WARNING); | |
2580 EXPECT_EQ(cricket::VoiceMediaChannel::ERROR_REC_DEVICE_SATURATION, | |
2581 listener->error()); | |
2582 EXPECT_EQ(ssrc, listener->ssrc()); | |
2583 | |
2584 // Testing a non-existing channel. | |
2585 listener->Reset(); | |
2586 voe_.TriggerCallbackOnError(voe_.GetLastChannel() + 2, | |
2587 VE_SATURATION_WARNING); | |
2588 EXPECT_EQ(0, listener->error()); | |
2589 } | |
2590 | |
2591 TEST_F(WebRtcVoiceEngineTestFake, TestSetPlayoutError) { | 2517 TEST_F(WebRtcVoiceEngineTestFake, TestSetPlayoutError) { |
2592 EXPECT_TRUE(SetupEngine()); | 2518 EXPECT_TRUE(SetupEngine()); |
2593 send_parameters_.options = options_conference_; | 2519 send_parameters_.options = options_conference_; |
2594 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); | 2520 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); |
2595 EXPECT_TRUE(channel_->SetSend(cricket::SEND_MICROPHONE)); | 2521 EXPECT_TRUE(channel_->SetSend(cricket::SEND_MICROPHONE)); |
2596 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(2))); | 2522 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(2))); |
2597 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(3))); | 2523 EXPECT_TRUE(channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(3))); |
2598 EXPECT_TRUE(channel_->SetPlayout(true)); | 2524 EXPECT_TRUE(channel_->SetPlayout(true)); |
2599 voe_.set_playout_fail_channel(voe_.GetLastChannel() - 1); | 2525 voe_.set_playout_fail_channel(voe_.GetLastChannel() - 1); |
2600 EXPECT_TRUE(channel_->SetPlayout(false)); | 2526 EXPECT_TRUE(channel_->SetPlayout(false)); |
(...skipping 772 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3373 cricket::WebRtcVoiceEngine engine; | 3299 cricket::WebRtcVoiceEngine engine; |
3374 EXPECT_TRUE(engine.Init(rtc::Thread::Current())); | 3300 EXPECT_TRUE(engine.Init(rtc::Thread::Current())); |
3375 rtc::scoped_ptr<webrtc::Call> call( | 3301 rtc::scoped_ptr<webrtc::Call> call( |
3376 webrtc::Call::Create(webrtc::Call::Config())); | 3302 webrtc::Call::Create(webrtc::Call::Config())); |
3377 cricket::WebRtcVoiceMediaChannel channel(&engine, cricket::AudioOptions(), | 3303 cricket::WebRtcVoiceMediaChannel channel(&engine, cricket::AudioOptions(), |
3378 call.get()); | 3304 call.get()); |
3379 cricket::AudioRecvParameters parameters; | 3305 cricket::AudioRecvParameters parameters; |
3380 parameters.codecs = engine.codecs(); | 3306 parameters.codecs = engine.codecs(); |
3381 EXPECT_TRUE(channel.SetRecvParameters(parameters)); | 3307 EXPECT_TRUE(channel.SetRecvParameters(parameters)); |
3382 } | 3308 } |
OLD | NEW |