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

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: that's all folks! (incl rebase), or is it? 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
« no previous file with comments | « talk/media/webrtc/webrtcvoiceengine.cc ('k') | webrtc/audio/BUILD.gn » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 295 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 stats.echo_return_loss = 890; 306 stats.echo_return_loss = 890;
307 stats.echo_return_loss_enhancement = 1234; 307 stats.echo_return_loss_enhancement = 1234;
308 stats.typing_noise_detected = true; 308 stats.typing_noise_detected = true;
309 return stats; 309 return stats;
310 } 310 }
311 void SetAudioSendStreamStats() { 311 void SetAudioSendStreamStats() {
312 for (auto* s : call_.GetAudioSendStreams()) { 312 for (auto* s : call_.GetAudioSendStreams()) {
313 s->SetStats(GetAudioSendStreamStats()); 313 s->SetStats(GetAudioSendStreamStats());
314 } 314 }
315 } 315 }
316 void VerifyVoiceSenderInfo(const cricket::VoiceSenderInfo& info) { 316 void VerifyVoiceSenderInfo(const cricket::VoiceSenderInfo& info,
317 bool is_sending) {
317 const auto stats = GetAudioSendStreamStats(); 318 const auto stats = GetAudioSendStreamStats();
318 EXPECT_EQ(info.ssrc(), stats.local_ssrc); 319 EXPECT_EQ(info.ssrc(), stats.local_ssrc);
319 EXPECT_EQ(info.bytes_sent, stats.bytes_sent); 320 EXPECT_EQ(info.bytes_sent, stats.bytes_sent);
320 EXPECT_EQ(info.packets_sent, stats.packets_sent); 321 EXPECT_EQ(info.packets_sent, stats.packets_sent);
321 EXPECT_EQ(info.packets_lost, stats.packets_lost); 322 EXPECT_EQ(info.packets_lost, stats.packets_lost);
322 EXPECT_EQ(info.fraction_lost, stats.fraction_lost); 323 EXPECT_EQ(info.fraction_lost, stats.fraction_lost);
323 EXPECT_EQ(info.codec_name, stats.codec_name); 324 EXPECT_EQ(info.codec_name, stats.codec_name);
324 EXPECT_EQ(info.ext_seqnum, stats.ext_seqnum); 325 EXPECT_EQ(info.ext_seqnum, stats.ext_seqnum);
325 EXPECT_EQ(info.jitter_ms, stats.jitter_ms); 326 EXPECT_EQ(info.jitter_ms, stats.jitter_ms);
326 EXPECT_EQ(info.rtt_ms, stats.rtt_ms); 327 EXPECT_EQ(info.rtt_ms, stats.rtt_ms);
327 EXPECT_EQ(info.audio_level, stats.audio_level); 328 EXPECT_EQ(info.audio_level, stats.audio_level);
328 EXPECT_EQ(info.aec_quality_min, stats.aec_quality_min); 329 EXPECT_EQ(info.aec_quality_min, stats.aec_quality_min);
329 EXPECT_EQ(info.echo_delay_median_ms, stats.echo_delay_median_ms); 330 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); 331 EXPECT_EQ(info.echo_delay_std_ms, stats.echo_delay_std_ms);
331 EXPECT_EQ(info.echo_return_loss, stats.echo_return_loss); 332 EXPECT_EQ(info.echo_return_loss, stats.echo_return_loss);
332 EXPECT_EQ(info.echo_return_loss_enhancement, 333 EXPECT_EQ(info.echo_return_loss_enhancement,
333 stats.echo_return_loss_enhancement); 334 stats.echo_return_loss_enhancement);
334 // TODO(solenberg): Move typing noise detection into AudioSendStream. 335 EXPECT_EQ(info.typing_noise_detected,
335 // EXPECT_EQ(info.typing_noise_detected, stats.typing_noise_detected); 336 stats.typing_noise_detected && is_sending);
336 } 337 }
337 338
338 webrtc::AudioReceiveStream::Stats GetAudioReceiveStreamStats() const { 339 webrtc::AudioReceiveStream::Stats GetAudioReceiveStreamStats() const {
339 webrtc::AudioReceiveStream::Stats stats; 340 webrtc::AudioReceiveStream::Stats stats;
340 stats.remote_ssrc = 123; 341 stats.remote_ssrc = 123;
341 stats.bytes_rcvd = 456; 342 stats.bytes_rcvd = 456;
342 stats.packets_rcvd = 768; 343 stats.packets_rcvd = 768;
343 stats.packets_lost = 101; 344 stats.packets_lost = 101;
344 stats.fraction_lost = 23.45f; 345 stats.fraction_lost = 23.45f;
345 stats.codec_name = "codec_name_recv"; 346 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_)); 2083 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_));
2083 2084
2084 // Check stats for the added streams. 2085 // Check stats for the added streams.
2085 { 2086 {
2086 cricket::VoiceMediaInfo info; 2087 cricket::VoiceMediaInfo info;
2087 EXPECT_EQ(true, channel_->GetStats(&info)); 2088 EXPECT_EQ(true, channel_->GetStats(&info));
2088 2089
2089 // We have added 4 send streams. We should see empty stats for all. 2090 // 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()); 2091 EXPECT_EQ(static_cast<size_t>(ARRAY_SIZE(kSsrcs4)), info.senders.size());
2091 for (const auto& sender : info.senders) { 2092 for (const auto& sender : info.senders) {
2092 VerifyVoiceSenderInfo(sender); 2093 VerifyVoiceSenderInfo(sender, false);
2093 } 2094 }
2094 2095
2095 // We have added one receive stream. We should see empty stats. 2096 // We have added one receive stream. We should see empty stats.
2096 EXPECT_EQ(info.receivers.size(), 1u); 2097 EXPECT_EQ(info.receivers.size(), 1u);
2097 EXPECT_EQ(info.receivers[0].ssrc(), 0); 2098 EXPECT_EQ(info.receivers[0].ssrc(), 0);
2098 } 2099 }
2099 2100
2100 // Remove the kSsrc2 stream. No receiver stats. 2101 // Remove the kSsrc2 stream. No receiver stats.
2101 { 2102 {
2102 cricket::VoiceMediaInfo info; 2103 cricket::VoiceMediaInfo info;
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after
2352 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_)); 2353 EXPECT_TRUE(channel_->SetSendParameters(send_parameters_));
2353 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); 2354 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_));
2354 2355
2355 // Check stats for the added streams. 2356 // Check stats for the added streams.
2356 { 2357 {
2357 cricket::VoiceMediaInfo info; 2358 cricket::VoiceMediaInfo info;
2358 EXPECT_EQ(true, channel_->GetStats(&info)); 2359 EXPECT_EQ(true, channel_->GetStats(&info));
2359 2360
2360 // We have added one send stream. We should see the stats we've set. 2361 // We have added one send stream. We should see the stats we've set.
2361 EXPECT_EQ(1u, info.senders.size()); 2362 EXPECT_EQ(1u, info.senders.size());
2362 VerifyVoiceSenderInfo(info.senders[0]); 2363 VerifyVoiceSenderInfo(info.senders[0], false);
2363 // We have added one receive stream. We should see empty stats. 2364 // We have added one receive stream. We should see empty stats.
2364 EXPECT_EQ(info.receivers.size(), 1u); 2365 EXPECT_EQ(info.receivers.size(), 1u);
2365 EXPECT_EQ(info.receivers[0].ssrc(), 0); 2366 EXPECT_EQ(info.receivers[0].ssrc(), 0);
2366 } 2367 }
2367 2368
2369 // Start sending - this affects some reported stats.
2370 {
2371 cricket::VoiceMediaInfo info;
2372 EXPECT_TRUE(channel_->SetSend(cricket::SEND_MICROPHONE));
2373 EXPECT_EQ(true, channel_->GetStats(&info));
2374 VerifyVoiceSenderInfo(info.senders[0], true);
2375 }
2376
2368 // Remove the kSsrc2 stream. No receiver stats. 2377 // Remove the kSsrc2 stream. No receiver stats.
2369 { 2378 {
2370 cricket::VoiceMediaInfo info; 2379 cricket::VoiceMediaInfo info;
2371 EXPECT_TRUE(channel_->RemoveRecvStream(kSsrc2)); 2380 EXPECT_TRUE(channel_->RemoveRecvStream(kSsrc2));
2372 EXPECT_EQ(true, channel_->GetStats(&info)); 2381 EXPECT_EQ(true, channel_->GetStats(&info));
2373 EXPECT_EQ(1u, info.senders.size()); 2382 EXPECT_EQ(1u, info.senders.size());
2374 EXPECT_EQ(0u, info.receivers.size()); 2383 EXPECT_EQ(0u, info.receivers.size());
2375 } 2384 }
2376 2385
2377 // Deliver a new packet - a default receive stream should be created and we 2386 // Deliver a new packet - a default receive stream should be created and we
(...skipping 928 matching lines...) Expand 10 before | Expand all | Expand 10 after
3306 cricket::WebRtcVoiceEngine engine; 3315 cricket::WebRtcVoiceEngine engine;
3307 EXPECT_TRUE(engine.Init(rtc::Thread::Current())); 3316 EXPECT_TRUE(engine.Init(rtc::Thread::Current()));
3308 rtc::scoped_ptr<webrtc::Call> call( 3317 rtc::scoped_ptr<webrtc::Call> call(
3309 webrtc::Call::Create(webrtc::Call::Config())); 3318 webrtc::Call::Create(webrtc::Call::Config()));
3310 cricket::WebRtcVoiceMediaChannel channel(&engine, cricket::AudioOptions(), 3319 cricket::WebRtcVoiceMediaChannel channel(&engine, cricket::AudioOptions(),
3311 call.get()); 3320 call.get());
3312 cricket::AudioRecvParameters parameters; 3321 cricket::AudioRecvParameters parameters;
3313 parameters.codecs = engine.codecs(); 3322 parameters.codecs = engine.codecs();
3314 EXPECT_TRUE(channel.SetRecvParameters(parameters)); 3323 EXPECT_TRUE(channel.SetRecvParameters(parameters));
3315 } 3324 }
OLDNEW
« no previous file with comments | « talk/media/webrtc/webrtcvoiceengine.cc ('k') | webrtc/audio/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698