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

Side by Side Diff: talk/media/webrtc/webrtcvoiceengine_unittest.cc

Issue 1403363003: Move VoiceEngineObserver into AudioSendStream so that we detect typing noises and return properly i… (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: missing file Created 5 years, 1 month 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
OLDNEW
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 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 unsigned int filter_; 86 unsigned int filter_;
87 }; 87 };
88 } // namespace 88 } // namespace
89 89
90 class WebRtcVoiceEngineTestFake : public testing::Test { 90 class WebRtcVoiceEngineTestFake : public testing::Test {
91 public: 91 public:
92 WebRtcVoiceEngineTestFake() 92 WebRtcVoiceEngineTestFake()
93 : call_(webrtc::Call::Config()), 93 : call_(webrtc::Call::Config()),
94 voe_(kAudioCodecs, ARRAY_SIZE(kAudioCodecs)), 94 voe_(kAudioCodecs, ARRAY_SIZE(kAudioCodecs)),
95 trace_wrapper_(new FakeVoETraceWrapper()), 95 trace_wrapper_(new FakeVoETraceWrapper()),
96 engine_(new FakeVoEWrapper(&voe_), trace_wrapper_), 96 engine_(new FakeVoEWrapper(&voe_),
97 trace_wrapper_,
98 new cricket::FakeAudioState()),
97 channel_(nullptr) { 99 channel_(nullptr) {
98 send_parameters_.codecs.push_back(kPcmuCodec); 100 send_parameters_.codecs.push_back(kPcmuCodec);
99 recv_parameters_.codecs.push_back(kPcmuCodec); 101 recv_parameters_.codecs.push_back(kPcmuCodec);
100 options_adjust_agc_.adjust_agc_delta.Set(-10); 102 options_adjust_agc_.adjust_agc_delta.Set(-10);
101 } 103 }
102 bool SetupEngine() { 104 bool SetupEngine() {
103 if (!engine_.Init(rtc::Thread::Current())) { 105 if (!engine_.Init(rtc::Thread::Current())) {
104 return false; 106 return false;
105 } 107 }
106 channel_ = engine_.CreateChannel(&call_, cricket::AudioOptions()); 108 channel_ = engine_.CreateChannel(&call_, cricket::AudioOptions());
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 stats.echo_return_loss = 890; 308 stats.echo_return_loss = 890;
307 stats.echo_return_loss_enhancement = 1234; 309 stats.echo_return_loss_enhancement = 1234;
308 stats.typing_noise_detected = true; 310 stats.typing_noise_detected = true;
309 return stats; 311 return stats;
310 } 312 }
311 void SetAudioSendStreamStats() { 313 void SetAudioSendStreamStats() {
312 for (auto* s : call_.GetAudioSendStreams()) { 314 for (auto* s : call_.GetAudioSendStreams()) {
313 s->SetStats(GetAudioSendStreamStats()); 315 s->SetStats(GetAudioSendStreamStats());
314 } 316 }
315 } 317 }
316 void VerifyVoiceSenderInfo(const cricket::VoiceSenderInfo& info) { 318 void VerifyVoiceSenderInfo(const cricket::VoiceSenderInfo& info,
319 bool is_sending) {
317 const auto stats = GetAudioSendStreamStats(); 320 const auto stats = GetAudioSendStreamStats();
318 EXPECT_EQ(info.ssrc(), stats.local_ssrc); 321 EXPECT_EQ(info.ssrc(), stats.local_ssrc);
319 EXPECT_EQ(info.bytes_sent, stats.bytes_sent); 322 EXPECT_EQ(info.bytes_sent, stats.bytes_sent);
320 EXPECT_EQ(info.packets_sent, stats.packets_sent); 323 EXPECT_EQ(info.packets_sent, stats.packets_sent);
321 EXPECT_EQ(info.packets_lost, stats.packets_lost); 324 EXPECT_EQ(info.packets_lost, stats.packets_lost);
322 EXPECT_EQ(info.fraction_lost, stats.fraction_lost); 325 EXPECT_EQ(info.fraction_lost, stats.fraction_lost);
323 EXPECT_EQ(info.codec_name, stats.codec_name); 326 EXPECT_EQ(info.codec_name, stats.codec_name);
324 EXPECT_EQ(info.ext_seqnum, stats.ext_seqnum); 327 EXPECT_EQ(info.ext_seqnum, stats.ext_seqnum);
325 EXPECT_EQ(info.jitter_ms, stats.jitter_ms); 328 EXPECT_EQ(info.jitter_ms, stats.jitter_ms);
326 EXPECT_EQ(info.rtt_ms, stats.rtt_ms); 329 EXPECT_EQ(info.rtt_ms, stats.rtt_ms);
327 EXPECT_EQ(info.audio_level, stats.audio_level); 330 EXPECT_EQ(info.audio_level, stats.audio_level);
328 EXPECT_EQ(info.aec_quality_min, stats.aec_quality_min); 331 EXPECT_EQ(info.aec_quality_min, stats.aec_quality_min);
329 EXPECT_EQ(info.echo_delay_median_ms, stats.echo_delay_median_ms); 332 EXPECT_EQ(info.echo_delay_median_ms, stats.echo_delay_median_ms);
330 EXPECT_EQ(info.echo_delay_std_ms, stats.echo_delay_std_ms); 333 EXPECT_EQ(info.echo_delay_std_ms, stats.echo_delay_std_ms);
331 EXPECT_EQ(info.echo_return_loss, stats.echo_return_loss); 334 EXPECT_EQ(info.echo_return_loss, stats.echo_return_loss);
332 EXPECT_EQ(info.echo_return_loss_enhancement, 335 EXPECT_EQ(info.echo_return_loss_enhancement,
333 stats.echo_return_loss_enhancement); 336 stats.echo_return_loss_enhancement);
334 // TODO(solenberg): Move typing noise detection into AudioSendStream. 337 EXPECT_EQ(info.typing_noise_detected,
335 // EXPECT_EQ(info.typing_noise_detected, stats.typing_noise_detected); 338 stats.typing_noise_detected && is_sending);
336 } 339 }
337 340
338 webrtc::AudioReceiveStream::Stats GetAudioReceiveStreamStats() const { 341 webrtc::AudioReceiveStream::Stats GetAudioReceiveStreamStats() const {
339 webrtc::AudioReceiveStream::Stats stats; 342 webrtc::AudioReceiveStream::Stats stats;
340 stats.remote_ssrc = 123; 343 stats.remote_ssrc = 123;
341 stats.bytes_rcvd = 456; 344 stats.bytes_rcvd = 456;
342 stats.packets_rcvd = 768; 345 stats.packets_rcvd = 768;
343 stats.packets_lost = 101; 346 stats.packets_lost = 101;
344 stats.fraction_lost = 23.45f; 347 stats.fraction_lost = 23.45f;
345 stats.codec_name = "codec_name_recv"; 348 stats.codec_name = "codec_name_recv";
(...skipping 1736 matching lines...) Expand 10 before | Expand all | Expand 10 after
2082 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); 2085 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_));
2083 2086
2084 // Check stats for the added streams. 2087 // Check stats for the added streams.
2085 { 2088 {
2086 cricket::VoiceMediaInfo info; 2089 cricket::VoiceMediaInfo info;
2087 EXPECT_EQ(true, channel_->GetStats(&info)); 2090 EXPECT_EQ(true, channel_->GetStats(&info));
2088 2091
2089 // We have added 4 send streams. We should see empty stats for all. 2092 // We have added 4 send streams. We should see empty stats for all.
2090 EXPECT_EQ(static_cast<size_t>(ARRAY_SIZE(kSsrcs4)), info.senders.size()); 2093 EXPECT_EQ(static_cast<size_t>(ARRAY_SIZE(kSsrcs4)), info.senders.size());
2091 for (const auto& sender : info.senders) { 2094 for (const auto& sender : info.senders) {
2092 VerifyVoiceSenderInfo(sender); 2095 VerifyVoiceSenderInfo(sender, false);
2093 } 2096 }
2094 2097
2095 // We have added one receive stream. We should see empty stats. 2098 // We have added one receive stream. We should see empty stats.
2096 EXPECT_EQ(info.receivers.size(), 1u); 2099 EXPECT_EQ(info.receivers.size(), 1u);
2097 EXPECT_EQ(info.receivers[0].ssrc(), 0); 2100 EXPECT_EQ(info.receivers[0].ssrc(), 0);
2098 } 2101 }
2099 2102
2100 // Remove the kSsrc2 stream. No receiver stats. 2103 // Remove the kSsrc2 stream. No receiver stats.
2101 { 2104 {
2102 cricket::VoiceMediaInfo info; 2105 cricket::VoiceMediaInfo info;
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after
2352 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); 2355 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
2353 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); 2356 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_));
2354 2357
2355 // Check stats for the added streams. 2358 // Check stats for the added streams.
2356 { 2359 {
2357 cricket::VoiceMediaInfo info; 2360 cricket::VoiceMediaInfo info;
2358 EXPECT_EQ(true, channel_->GetStats(&info)); 2361 EXPECT_EQ(true, channel_->GetStats(&info));
2359 2362
2360 // We have added one send stream. We should see the stats we've set. 2363 // We have added one send stream. We should see the stats we've set.
2361 EXPECT_EQ(1u, info.senders.size()); 2364 EXPECT_EQ(1u, info.senders.size());
2362 VerifyVoiceSenderInfo(info.senders[0]); 2365 VerifyVoiceSenderInfo(info.senders[0], false);
2363 // We have added one receive stream. We should see empty stats. 2366 // We have added one receive stream. We should see empty stats.
2364 EXPECT_EQ(info.receivers.size(), 1u); 2367 EXPECT_EQ(info.receivers.size(), 1u);
2365 EXPECT_EQ(info.receivers[0].ssrc(), 0); 2368 EXPECT_EQ(info.receivers[0].ssrc(), 0);
2366 } 2369 }
2367 2370
2371 // Start sending - this affects some reported stats.
2372 {
2373 cricket::VoiceMediaInfo info;
2374 EXPECT_TRUE(channel_->SetSend(cricket::SEND_MICROPHONE));
2375 EXPECT_EQ(true, channel_->GetStats(&info));
2376 VerifyVoiceSenderInfo(info.senders[0], true);
2377 }
2378
2368 // Remove the kSsrc2 stream. No receiver stats. 2379 // Remove the kSsrc2 stream. No receiver stats.
2369 { 2380 {
2370 cricket::VoiceMediaInfo info; 2381 cricket::VoiceMediaInfo info;
2371 EXPECT_TRUE(channel_->RemoveRecvStream(kSsrc2)); 2382 EXPECT_TRUE(channel_->RemoveRecvStream(kSsrc2));
2372 EXPECT_EQ(true, channel_->GetStats(&info)); 2383 EXPECT_EQ(true, channel_->GetStats(&info));
2373 EXPECT_EQ(1u, info.senders.size()); 2384 EXPECT_EQ(1u, info.senders.size());
2374 EXPECT_EQ(0u, info.receivers.size()); 2385 EXPECT_EQ(0u, info.receivers.size());
2375 } 2386 }
2376 2387
2377 // Deliver a new packet - a default receive stream should be created and we 2388 // Deliver a new packet - a default receive stream should be created and we
(...skipping 926 matching lines...) Expand 10 before | Expand all | Expand 10 after
3304 cricket::WebRtcVoiceEngine engine; 3315 cricket::WebRtcVoiceEngine engine;
3305 EXPECT_TRUE(engine.Init(rtc::Thread::Current())); 3316 EXPECT_TRUE(engine.Init(rtc::Thread::Current()));
3306 rtc::scoped_ptr<webrtc::Call> call( 3317 rtc::scoped_ptr<webrtc::Call> call(
3307 webrtc::Call::Create(webrtc::Call::Config())); 3318 webrtc::Call::Create(webrtc::Call::Config()));
3308 cricket::WebRtcVoiceMediaChannel channel(&engine, cricket::AudioOptions(), 3319 cricket::WebRtcVoiceMediaChannel channel(&engine, cricket::AudioOptions(),
3309 call.get()); 3320 call.get());
3310 cricket::AudioRecvParameters parameters; 3321 cricket::AudioRecvParameters parameters;
3311 parameters.codecs = engine.codecs(); 3322 parameters.codecs = engine.codecs();
3312 EXPECT_TRUE(channel.SetRecvParameters(parameters)); 3323 EXPECT_TRUE(channel.SetRecvParameters(parameters));
3313 } 3324 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698