| Index: talk/media/webrtc/webrtcvideoengine2_unittest.cc
|
| diff --git a/talk/media/webrtc/webrtcvideoengine2_unittest.cc b/talk/media/webrtc/webrtcvideoengine2_unittest.cc
|
| index 24e028e33799ee1eeaa73aa7c0ece3298ed8f412..321eac60acef7abdd7c3519fb37c2aa49914cbc9 100644
|
| --- a/talk/media/webrtc/webrtcvideoengine2_unittest.cc
|
| +++ b/talk/media/webrtc/webrtcvideoengine2_unittest.cc
|
| @@ -2584,6 +2584,87 @@ TEST_F(WebRtcVideoChannel2Test, GetStatsTracksAdaptationStats) {
|
| EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], NULL));
|
| }
|
|
|
| +TEST_F(WebRtcVideoChannel2Test, GetStatsTracksAdaptationAndBandwidthStats) {
|
| + AddSendStream(cricket::CreateSimStreamParams("cname", MAKE_VECTOR(kSsrcs3)));
|
| +
|
| + // Capture format VGA.
|
| + cricket::FakeVideoCapturer video_capturer_vga;
|
| + const std::vector<cricket::VideoFormat>* formats =
|
| + video_capturer_vga.GetSupportedFormats();
|
| + cricket::VideoFormat capture_format_vga = (*formats)[1];
|
| + EXPECT_EQ(cricket::CS_RUNNING, video_capturer_vga.Start(capture_format_vga));
|
| + EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], &video_capturer_vga));
|
| + EXPECT_TRUE(video_capturer_vga.CaptureFrame());
|
| +
|
| + cricket::VideoCodec send_codec(100, "VP8", 640, 480, 30, 0);
|
| + cricket::VideoSendParameters parameters;
|
| + parameters.codecs.push_back(send_codec);
|
| + EXPECT_TRUE(channel_->SetSendParameters(parameters));
|
| + EXPECT_TRUE(channel_->SetSend(true));
|
| +
|
| + // Verify that the CpuOveruseObserver is registered and trigger downgrade.
|
| + parameters.options.cpu_overuse_detection = rtc::Optional<bool>(true);
|
| + EXPECT_TRUE(channel_->SetSendParameters(parameters));
|
| +
|
| + // Trigger overuse -> adapt CPU.
|
| + ASSERT_EQ(1u, fake_call_->GetVideoSendStreams().size());
|
| + webrtc::LoadObserver* overuse_callback =
|
| + fake_call_->GetVideoSendStreams().front()->GetConfig().overuse_callback;
|
| + ASSERT_TRUE(overuse_callback != NULL);
|
| + overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kOveruse);
|
| + EXPECT_TRUE(video_capturer_vga.CaptureFrame());
|
| + cricket::VideoMediaInfo info;
|
| + EXPECT_TRUE(channel_->GetStats(&info));
|
| + ASSERT_EQ(1U, info.senders.size());
|
| + EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_CPU,
|
| + info.senders[0].adapt_reason);
|
| +
|
| + // Set bandwidth limitation stats for the stream -> adapt CPU + BW.
|
| + webrtc::VideoSendStream::Stats stats;
|
| + stats.bw_limited_resolution = true;
|
| + fake_call_->GetVideoSendStreams().front()->SetStats(stats);
|
| + info.Clear();
|
| + EXPECT_TRUE(channel_->GetStats(&info));
|
| + ASSERT_EQ(1U, info.senders.size());
|
| + EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_CPU +
|
| + CoordinatedVideoAdapter::ADAPTREASON_BANDWIDTH,
|
| + info.senders[0].adapt_reason);
|
| +
|
| + // Trigger upgrade -> adapt BW.
|
| + overuse_callback->OnLoadUpdate(webrtc::LoadObserver::kUnderuse);
|
| + EXPECT_TRUE(video_capturer_vga.CaptureFrame());
|
| + info.Clear();
|
| + EXPECT_TRUE(channel_->GetStats(&info));
|
| + ASSERT_EQ(1U, info.senders.size());
|
| + EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_BANDWIDTH,
|
| + info.senders[0].adapt_reason);
|
| +
|
| + // Reset bandwidth limitation state -> adapt NONE.
|
| + stats.bw_limited_resolution = false;
|
| + fake_call_->GetVideoSendStreams().front()->SetStats(stats);
|
| + info.Clear();
|
| + EXPECT_TRUE(channel_->GetStats(&info));
|
| + ASSERT_EQ(1U, info.senders.size());
|
| + EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_NONE,
|
| + info.senders[0].adapt_reason);
|
| +
|
| + EXPECT_TRUE(channel_->SetCapturer(kSsrcs3[0], NULL));
|
| +}
|
| +
|
| +TEST_F(WebRtcVideoChannel2Test,
|
| + GetStatsTranslatesBandwidthLimitedResolutionCorrectly) {
|
| + FakeVideoSendStream* stream = AddSendStream();
|
| + webrtc::VideoSendStream::Stats stats;
|
| + stats.bw_limited_resolution = true;
|
| + stream->SetStats(stats);
|
| +
|
| + cricket::VideoMediaInfo info;
|
| + EXPECT_TRUE(channel_->GetStats(&info));
|
| + ASSERT_EQ(1U, info.senders.size());
|
| + EXPECT_EQ(CoordinatedVideoAdapter::ADAPTREASON_BANDWIDTH,
|
| + info.senders[0].adapt_reason);
|
| +}
|
| +
|
| TEST_F(WebRtcVideoChannel2Test,
|
| GetStatsTranslatesSendRtcpPacketTypesCorrectly) {
|
| FakeVideoSendStream* stream = AddSendStream();
|
|
|