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

Unified Diff: webrtc/video/send_statistics_proxy_unittest.cc

Issue 2871623002: Update video adaptation stats to support degradations in both resolution and framerate. (Closed)
Patch Set: address comments Created 3 years, 7 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/video/send_statistics_proxy.cc ('k') | webrtc/video/vie_encoder.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/video/send_statistics_proxy_unittest.cc
diff --git a/webrtc/video/send_statistics_proxy_unittest.cc b/webrtc/video/send_statistics_proxy_unittest.cc
index edb756433bff5d00e166a863e6bbb8fd51cac683..4f09e48bd4408ab67134bbd9eb3a79e3c637cf45 100644
--- a/webrtc/video/send_statistics_proxy_unittest.cc
+++ b/webrtc/video/send_statistics_proxy_unittest.cc
@@ -367,61 +367,99 @@ TEST_F(SendStatisticsProxyTest, OnSendEncodedImageWithoutQpQpSumWontExist) {
EXPECT_EQ(rtc::Optional<uint64_t>(), statistics_proxy_->GetStats().qp_sum);
}
-TEST_F(SendStatisticsProxyTest, SetCpuScalingUpdatesStats) {
+TEST_F(SendStatisticsProxyTest, GetCpuAdaptationStats) {
+ ViEEncoder::AdaptCounts cpu_counts;
+ ViEEncoder::AdaptCounts quality_counts;
+ EXPECT_FALSE(statistics_proxy_->GetStats().cpu_limited_framerate);
EXPECT_FALSE(statistics_proxy_->GetStats().cpu_limited_resolution);
- statistics_proxy_->SetCpuScalingStats(-1);
+ cpu_counts.fps = 1;
+ cpu_counts.resolution = 0;
+ statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts);
+ EXPECT_TRUE(statistics_proxy_->GetStats().cpu_limited_framerate);
EXPECT_FALSE(statistics_proxy_->GetStats().cpu_limited_resolution);
- statistics_proxy_->SetCpuScalingStats(0);
- EXPECT_FALSE(statistics_proxy_->GetStats().cpu_limited_resolution);
- statistics_proxy_->SetCpuScalingStats(1);
+ cpu_counts.fps = 0;
+ cpu_counts.resolution = 1;
+ statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts);
+ EXPECT_FALSE(statistics_proxy_->GetStats().cpu_limited_framerate);
EXPECT_TRUE(statistics_proxy_->GetStats().cpu_limited_resolution);
+ cpu_counts.fps = 1;
+ cpu_counts.resolution = -1;
+ statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts);
+ EXPECT_TRUE(statistics_proxy_->GetStats().cpu_limited_framerate);
+ EXPECT_FALSE(statistics_proxy_->GetStats().cpu_limited_resolution);
+ cpu_counts.fps = -1;
+ cpu_counts.resolution = -1;
+ statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts);
+ EXPECT_FALSE(statistics_proxy_->GetStats().cpu_limited_framerate);
+ EXPECT_FALSE(statistics_proxy_->GetStats().cpu_limited_resolution);
}
-TEST_F(SendStatisticsProxyTest, SetQualityScalingUpdatesStats) {
- EXPECT_FALSE(statistics_proxy_->GetStats().bw_limited_resolution);
- statistics_proxy_->SetQualityScalingStats(-1);
+TEST_F(SendStatisticsProxyTest, GetQualityAdaptationStats) {
+ ViEEncoder::AdaptCounts cpu_counts;
+ ViEEncoder::AdaptCounts quality_counts;
+ EXPECT_FALSE(statistics_proxy_->GetStats().bw_limited_framerate);
EXPECT_FALSE(statistics_proxy_->GetStats().bw_limited_resolution);
- statistics_proxy_->SetQualityScalingStats(0);
+ quality_counts.fps = 1;
+ quality_counts.resolution = 0;
+ statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts);
+ EXPECT_TRUE(statistics_proxy_->GetStats().bw_limited_framerate);
EXPECT_FALSE(statistics_proxy_->GetStats().bw_limited_resolution);
- statistics_proxy_->SetQualityScalingStats(1);
+ quality_counts.fps = 0;
+ quality_counts.resolution = 1;
+ statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts);
+ EXPECT_FALSE(statistics_proxy_->GetStats().bw_limited_framerate);
EXPECT_TRUE(statistics_proxy_->GetStats().bw_limited_resolution);
+ quality_counts.fps = 1;
+ quality_counts.resolution = -1;
+ statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts);
+ EXPECT_TRUE(statistics_proxy_->GetStats().bw_limited_framerate);
+ EXPECT_FALSE(statistics_proxy_->GetStats().bw_limited_resolution);
+ quality_counts.fps = -1;
+ quality_counts.resolution = -1;
+ statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts);
+ EXPECT_FALSE(statistics_proxy_->GetStats().bw_limited_framerate);
+ EXPECT_FALSE(statistics_proxy_->GetStats().bw_limited_resolution);
}
-TEST_F(SendStatisticsProxyTest, GetStatsReportsCpuResolutionChanges) {
- EXPECT_FALSE(statistics_proxy_->GetStats().cpu_limited_resolution);
+TEST_F(SendStatisticsProxyTest, GetStatsReportsCpuAdaptChanges) {
+ ViEEncoder::AdaptCounts cpu_counts;
+ ViEEncoder::AdaptCounts quality_counts;
EXPECT_EQ(0, statistics_proxy_->GetStats().number_of_cpu_adapt_changes);
- statistics_proxy_->OnCpuRestrictedResolutionChanged(true);
+ cpu_counts.resolution = 1;
+ statistics_proxy_->OnCpuAdaptationChanged(cpu_counts, quality_counts);
+ EXPECT_FALSE(statistics_proxy_->GetStats().cpu_limited_framerate);
EXPECT_TRUE(statistics_proxy_->GetStats().cpu_limited_resolution);
EXPECT_EQ(1, statistics_proxy_->GetStats().number_of_cpu_adapt_changes);
- statistics_proxy_->OnCpuRestrictedResolutionChanged(false);
- EXPECT_FALSE(statistics_proxy_->GetStats().cpu_limited_resolution);
+ cpu_counts.resolution = 2;
+ statistics_proxy_->OnCpuAdaptationChanged(cpu_counts, quality_counts);
+ EXPECT_FALSE(statistics_proxy_->GetStats().cpu_limited_framerate);
+ EXPECT_TRUE(statistics_proxy_->GetStats().cpu_limited_resolution);
EXPECT_EQ(2, statistics_proxy_->GetStats().number_of_cpu_adapt_changes);
+ EXPECT_EQ(0, statistics_proxy_->GetStats().number_of_quality_adapt_changes);
}
-TEST_F(SendStatisticsProxyTest, GetStatsReportsQualityResolutionChanges) {
- EXPECT_FALSE(statistics_proxy_->GetStats().bw_limited_resolution);
+TEST_F(SendStatisticsProxyTest, GetStatsReportsQualityAdaptChanges) {
+ ViEEncoder::AdaptCounts cpu_counts;
+ ViEEncoder::AdaptCounts quality_counts;
EXPECT_EQ(0, statistics_proxy_->GetStats().number_of_quality_adapt_changes);
- statistics_proxy_->OnQualityRestrictedResolutionChanged(1);
- EXPECT_TRUE(statistics_proxy_->GetStats().bw_limited_resolution);
+ quality_counts.fps = 1;
+ statistics_proxy_->OnQualityAdaptationChanged(cpu_counts, quality_counts);
+ EXPECT_TRUE(statistics_proxy_->GetStats().bw_limited_framerate);
+ EXPECT_FALSE(statistics_proxy_->GetStats().bw_limited_resolution);
EXPECT_EQ(1, statistics_proxy_->GetStats().number_of_quality_adapt_changes);
- statistics_proxy_->OnQualityRestrictedResolutionChanged(2);
- EXPECT_TRUE(statistics_proxy_->GetStats().bw_limited_resolution);
- EXPECT_EQ(2, statistics_proxy_->GetStats().number_of_quality_adapt_changes);
-
- statistics_proxy_->OnQualityRestrictedResolutionChanged(1);
- EXPECT_TRUE(statistics_proxy_->GetStats().bw_limited_resolution);
- EXPECT_EQ(3, statistics_proxy_->GetStats().number_of_quality_adapt_changes);
-
- statistics_proxy_->OnQualityRestrictedResolutionChanged(0);
+ quality_counts.fps = 0;
+ statistics_proxy_->OnQualityAdaptationChanged(cpu_counts, quality_counts);
+ EXPECT_FALSE(statistics_proxy_->GetStats().bw_limited_framerate);
EXPECT_FALSE(statistics_proxy_->GetStats().bw_limited_resolution);
- EXPECT_EQ(4, statistics_proxy_->GetStats().number_of_quality_adapt_changes);
+ EXPECT_EQ(2, statistics_proxy_->GetStats().number_of_quality_adapt_changes);
+ EXPECT_EQ(0, statistics_proxy_->GetStats().number_of_cpu_adapt_changes);
}
-TEST_F(SendStatisticsProxyTest, AdaptChangesNotReported_ScalingNotEnabled) {
+TEST_F(SendStatisticsProxyTest, AdaptChangesNotReported_AdaptationNotEnabled) {
// First RTP packet sent.
UpdateDataCounters(kFirstSsrc);
// Min runtime has passed.
@@ -435,9 +473,10 @@ TEST_F(SendStatisticsProxyTest, AdaptChangesNotReported_ScalingNotEnabled) {
TEST_F(SendStatisticsProxyTest, AdaptChangesNotReported_MinRuntimeNotPassed) {
// First RTP packet sent.
UpdateDataCounters(kFirstSsrc);
- // Enable scaling.
- statistics_proxy_->SetQualityScalingStats(0);
- statistics_proxy_->SetCpuScalingStats(0);
+ // Enable adaptation.
+ ViEEncoder::AdaptCounts cpu_counts;
+ ViEEncoder::AdaptCounts quality_counts;
+ statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts);
// Min runtime has not passed.
fake_clock_.AdvanceTimeMilliseconds(metrics::kMinRunTimeInSeconds * 1000 - 1);
statistics_proxy_.reset();
@@ -446,26 +485,18 @@ TEST_F(SendStatisticsProxyTest, AdaptChangesNotReported_MinRuntimeNotPassed) {
metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality"));
}
-TEST_F(SendStatisticsProxyTest, ZeroCpuAdaptChangesReported) {
+TEST_F(SendStatisticsProxyTest, ZeroAdaptChangesReported) {
// First RTP packet sent.
UpdateDataCounters(kFirstSsrc);
- // Enable scaling.
- statistics_proxy_->SetCpuScalingStats(0);
+ // Enable adaptation.
+ ViEEncoder::AdaptCounts cpu_counts;
+ ViEEncoder::AdaptCounts quality_counts;
+ statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts);
// Min runtime has passed.
fake_clock_.AdvanceTimeMilliseconds(metrics::kMinRunTimeInSeconds * 1000);
statistics_proxy_.reset();
EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu"));
EXPECT_EQ(1, metrics::NumEvents("WebRTC.Video.AdaptChangesPerMinute.Cpu", 0));
-}
-
-TEST_F(SendStatisticsProxyTest, ZeroQualityAdaptChangesReported) {
- // First RTP packet sent.
- UpdateDataCounters(kFirstSsrc);
- // Enable scaling.
- statistics_proxy_->SetQualityScalingStats(0);
- // Min runtime has passed.
- fake_clock_.AdvanceTimeMilliseconds(metrics::kMinRunTimeInSeconds * 1000);
- statistics_proxy_.reset();
EXPECT_EQ(1,
metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Quality"));
EXPECT_EQ(
@@ -475,10 +506,12 @@ TEST_F(SendStatisticsProxyTest, ZeroQualityAdaptChangesReported) {
TEST_F(SendStatisticsProxyTest, CpuAdaptChangesReported) {
// First RTP packet sent.
UpdateDataCounters(kFirstSsrc);
- // Enable scaling.
+ // Enable adaptation.
+ ViEEncoder::AdaptCounts cpu_counts;
+ ViEEncoder::AdaptCounts quality_counts;
+ statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts);
// Adapt changes: 1, elapsed time: 10 sec => 6 per minute.
- statistics_proxy_->SetCpuScalingStats(0);
- statistics_proxy_->OnCpuRestrictedResolutionChanged(true);
+ statistics_proxy_->OnCpuAdaptationChanged(cpu_counts, quality_counts);
fake_clock_.AdvanceTimeMilliseconds(10000);
statistics_proxy_.reset();
EXPECT_EQ(1, metrics::NumSamples("WebRTC.Video.AdaptChangesPerMinute.Cpu"));
@@ -489,34 +522,42 @@ TEST_F(SendStatisticsProxyTest, AdaptChangesStatsExcludesDisabledTime) {
// First RTP packet sent.
UpdateDataCounters(kFirstSsrc);
- // Disable scaling.
- statistics_proxy_->SetQualityScalingStats(-1);
+ // Disable quality adaptation.
+ ViEEncoder::AdaptCounts cpu_counts;
+ ViEEncoder::AdaptCounts quality_counts;
+ quality_counts.fps = -1;
+ quality_counts.resolution = -1;
+ statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts);
fake_clock_.AdvanceTimeMilliseconds(10000);
- // Enable scaling.
+ // Enable quality adaptation.
// Adapt changes: 2, elapsed time: 20 sec.
- statistics_proxy_->SetQualityScalingStats(0);
+ quality_counts.fps = 0;
+ statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts);
fake_clock_.AdvanceTimeMilliseconds(5000);
- statistics_proxy_->SetQualityScalingStats(1);
+ statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts);
fake_clock_.AdvanceTimeMilliseconds(9000);
- statistics_proxy_->OnQualityRestrictedResolutionChanged(1);
+ statistics_proxy_->OnQualityAdaptationChanged(cpu_counts, quality_counts);
fake_clock_.AdvanceTimeMilliseconds(6000);
- statistics_proxy_->OnQualityRestrictedResolutionChanged(2);
+ statistics_proxy_->OnQualityAdaptationChanged(cpu_counts, quality_counts);
- // Disable scaling.
- statistics_proxy_->SetQualityScalingStats(-1);
+ // Disable quality adaptation.
+ quality_counts.fps = -1;
+ statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts);
fake_clock_.AdvanceTimeMilliseconds(30000);
- // Enable scaling.
+ // Enable quality adaptation.
// Adapt changes: 1, elapsed time: 10 sec.
- statistics_proxy_->SetQualityScalingStats(0);
- statistics_proxy_->OnQualityRestrictedResolutionChanged(1);
+ quality_counts.resolution = 0;
+ statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts);
+ statistics_proxy_->OnQualityAdaptationChanged(cpu_counts, quality_counts);
fake_clock_.AdvanceTimeMilliseconds(10000);
- // Disable scaling.
- statistics_proxy_->SetQualityScalingStats(-1);
+ // Disable quality adaptation.
+ quality_counts.resolution = -1;
+ statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts);
fake_clock_.AdvanceTimeMilliseconds(5000);
- statistics_proxy_->SetQualityScalingStats(-1);
+ statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts);
fake_clock_.AdvanceTimeMilliseconds(20000);
// Adapt changes: 3, elapsed time: 30 sec => 6 per minute.
@@ -549,12 +590,14 @@ TEST_F(SendStatisticsProxyTest, QualityAdaptChangesStatsExcludesSuspendedTime) {
// First RTP packet sent.
UpdateDataCounters(kFirstSsrc);
- // Enable scaling.
+ // Enable adaptation.
+ ViEEncoder::AdaptCounts cpu_counts;
+ ViEEncoder::AdaptCounts quality_counts;
// Adapt changes: 2, elapsed time: 20 sec.
- statistics_proxy_->SetQualityScalingStats(0);
+ statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts);
fake_clock_.AdvanceTimeMilliseconds(20000);
- statistics_proxy_->OnQualityRestrictedResolutionChanged(1);
- statistics_proxy_->OnQualityRestrictedResolutionChanged(2);
+ statistics_proxy_->OnQualityAdaptationChanged(cpu_counts, quality_counts);
+ statistics_proxy_->OnQualityAdaptationChanged(cpu_counts, quality_counts);
// Suspend and resume video.
statistics_proxy_->OnSuspendChange(true);
@@ -562,7 +605,7 @@ TEST_F(SendStatisticsProxyTest, QualityAdaptChangesStatsExcludesSuspendedTime) {
statistics_proxy_->OnSuspendChange(false);
// Adapt changes: 1, elapsed time: 10 sec.
- statistics_proxy_->OnQualityRestrictedResolutionChanged(3);
+ statistics_proxy_->OnQualityAdaptationChanged(cpu_counts, quality_counts);
fake_clock_.AdvanceTimeMilliseconds(10000);
// Adapt changes: 3, elapsed time: 30 sec => 6 per minute.
@@ -581,18 +624,22 @@ TEST_F(SendStatisticsProxyTest, CpuAdaptChangesStatsExcludesSuspendedTime) {
statistics_proxy_->OnSuspendChange(false);
fake_clock_.AdvanceTimeMilliseconds(30000);
- // Enable scaling.
+ // Enable adaptation.
+ ViEEncoder::AdaptCounts cpu_counts;
+ ViEEncoder::AdaptCounts quality_counts;
// Adapt changes: 1, elapsed time: 20 sec.
- statistics_proxy_->SetCpuScalingStats(0);
+ statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts);
fake_clock_.AdvanceTimeMilliseconds(10000);
- statistics_proxy_->OnCpuRestrictedResolutionChanged(true);
+ statistics_proxy_->OnCpuAdaptationChanged(cpu_counts, quality_counts);
// Video not suspended, stats time already started.
statistics_proxy_->OnSuspendChange(false);
fake_clock_.AdvanceTimeMilliseconds(10000);
- // Disable scaling.
- statistics_proxy_->SetCpuScalingStats(-1);
+ // Disable adaptation.
+ cpu_counts.fps = -1;
+ cpu_counts.resolution = -1;
+ statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts);
fake_clock_.AdvanceTimeMilliseconds(30000);
// Suspend and resume video, stats time not started when scaling not enabled.
@@ -601,11 +648,13 @@ TEST_F(SendStatisticsProxyTest, CpuAdaptChangesStatsExcludesSuspendedTime) {
statistics_proxy_->OnSuspendChange(false);
fake_clock_.AdvanceTimeMilliseconds(30000);
- // Enable scaling.
+ // Enable adaptation.
// Adapt changes: 1, elapsed time: 10 sec.
- statistics_proxy_->SetCpuScalingStats(0);
+ cpu_counts.fps = 0;
+ cpu_counts.resolution = 0;
+ statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts);
fake_clock_.AdvanceTimeMilliseconds(10000);
- statistics_proxy_->OnCpuRestrictedResolutionChanged(true);
+ statistics_proxy_->OnCpuAdaptationChanged(cpu_counts, quality_counts);
// Adapt changes: 2, elapsed time: 30 sec => 4 per minute.
statistics_proxy_.reset();
@@ -620,15 +669,17 @@ TEST_F(SendStatisticsProxyTest, AdaptChangesStatsNotStartedIfVideoSuspended) {
// Video suspended.
statistics_proxy_->OnSuspendChange(true);
- // Enable scaling, stats time not started when suspended.
- statistics_proxy_->SetCpuScalingStats(0);
+ // Enable adaptation, stats time not started when suspended.
+ ViEEncoder::AdaptCounts cpu_counts;
+ ViEEncoder::AdaptCounts quality_counts;
+ statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts);
fake_clock_.AdvanceTimeMilliseconds(10000);
// Resume video, stats time started.
// Adapt changes: 1, elapsed time: 10 sec.
statistics_proxy_->OnSuspendChange(false);
fake_clock_.AdvanceTimeMilliseconds(10000);
- statistics_proxy_->OnCpuRestrictedResolutionChanged(true);
+ statistics_proxy_->OnCpuAdaptationChanged(cpu_counts, quality_counts);
// Adapt changes: 1, elapsed time: 10 sec => 6 per minute.
statistics_proxy_.reset();
@@ -637,15 +688,17 @@ TEST_F(SendStatisticsProxyTest, AdaptChangesStatsNotStartedIfVideoSuspended) {
}
TEST_F(SendStatisticsProxyTest, AdaptChangesStatsRestartsOnFirstSentPacket) {
- // Send first packet, scaling enabled.
+ // Send first packet, adaptation enabled.
// Elapsed time before first packet is sent should be excluded.
- statistics_proxy_->SetQualityScalingStats(0);
+ ViEEncoder::AdaptCounts cpu_counts;
+ ViEEncoder::AdaptCounts quality_counts;
+ statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts);
fake_clock_.AdvanceTimeMilliseconds(10000);
UpdateDataCounters(kFirstSsrc);
// Adapt changes: 1, elapsed time: 10 sec.
fake_clock_.AdvanceTimeMilliseconds(10000);
- statistics_proxy_->OnQualityRestrictedResolutionChanged(1);
+ statistics_proxy_->OnQualityAdaptationChanged(cpu_counts, quality_counts);
UpdateDataCounters(kFirstSsrc);
// Adapt changes: 1, elapsed time: 10 sec => 6 per minute.
@@ -657,24 +710,29 @@ TEST_F(SendStatisticsProxyTest, AdaptChangesStatsRestartsOnFirstSentPacket) {
}
TEST_F(SendStatisticsProxyTest, AdaptChangesStatsStartedAfterFirstSentPacket) {
- // Enable and disable scaling.
- statistics_proxy_->SetCpuScalingStats(0);
+ // Enable and disable adaptation.
+ ViEEncoder::AdaptCounts cpu_counts;
+ ViEEncoder::AdaptCounts quality_counts;
+ statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts);
fake_clock_.AdvanceTimeMilliseconds(60000);
- statistics_proxy_->SetCpuScalingStats(-1);
+ cpu_counts.fps = -1;
+ cpu_counts.resolution = -1;
+ statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts);
// Send first packet, scaling disabled.
// Elapsed time before first packet is sent should be excluded.
UpdateDataCounters(kFirstSsrc);
fake_clock_.AdvanceTimeMilliseconds(60000);
- // Enable scaling.
- statistics_proxy_->SetCpuScalingStats(0);
+ // Enable adaptation.
+ cpu_counts.resolution = 0;
+ statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts);
fake_clock_.AdvanceTimeMilliseconds(10000);
UpdateDataCounters(kFirstSsrc);
// Adapt changes: 1, elapsed time: 20 sec.
fake_clock_.AdvanceTimeMilliseconds(10000);
- statistics_proxy_->OnCpuRestrictedResolutionChanged(true);
+ statistics_proxy_->OnCpuAdaptationChanged(cpu_counts, quality_counts);
// Adapt changes: 1, elapsed time: 20 sec => 3 per minute.
statistics_proxy_.reset();
@@ -683,14 +741,18 @@ TEST_F(SendStatisticsProxyTest, AdaptChangesStatsStartedAfterFirstSentPacket) {
}
TEST_F(SendStatisticsProxyTest, AdaptChangesReportedAfterContentSwitch) {
- // First RTP packet sent, scaling enabled.
+ // First RTP packet sent, cpu adaptation enabled.
UpdateDataCounters(kFirstSsrc);
- statistics_proxy_->SetCpuScalingStats(0);
+ ViEEncoder::AdaptCounts cpu_counts;
+ ViEEncoder::AdaptCounts quality_counts;
+ quality_counts.fps = -1;
+ quality_counts.resolution = -1;
+ statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts);
// Adapt changes: 2, elapsed time: 15 sec => 8 per minute.
- statistics_proxy_->OnCpuRestrictedResolutionChanged(true);
+ statistics_proxy_->OnCpuAdaptationChanged(cpu_counts, quality_counts);
fake_clock_.AdvanceTimeMilliseconds(6000);
- statistics_proxy_->OnCpuRestrictedResolutionChanged(true);
+ statistics_proxy_->OnCpuAdaptationChanged(cpu_counts, quality_counts);
fake_clock_.AdvanceTimeMilliseconds(9000);
// Switch content type, real-time stats should be updated.
@@ -704,13 +766,13 @@ TEST_F(SendStatisticsProxyTest, AdaptChangesReportedAfterContentSwitch) {
// First RTP packet sent, scaling enabled.
UpdateDataCounters(kFirstSsrc);
- statistics_proxy_->SetCpuScalingStats(0);
+ statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts);
// Adapt changes: 4, elapsed time: 120 sec => 2 per minute.
- statistics_proxy_->OnCpuRestrictedResolutionChanged(true);
- statistics_proxy_->OnCpuRestrictedResolutionChanged(true);
- statistics_proxy_->OnCpuRestrictedResolutionChanged(true);
- statistics_proxy_->OnCpuRestrictedResolutionChanged(true);
+ statistics_proxy_->OnCpuAdaptationChanged(cpu_counts, quality_counts);
+ statistics_proxy_->OnCpuAdaptationChanged(cpu_counts, quality_counts);
+ statistics_proxy_->OnCpuAdaptationChanged(cpu_counts, quality_counts);
+ statistics_proxy_->OnCpuAdaptationChanged(cpu_counts, quality_counts);
fake_clock_.AdvanceTimeMilliseconds(120000);
statistics_proxy_.reset();
@@ -842,8 +904,10 @@ TEST_F(SendStatisticsProxyTest, SentFpsHistogramExcludesSuspendedTime) {
}
TEST_F(SendStatisticsProxyTest, CpuLimitedHistogramNotUpdatedWhenDisabled) {
- const int kNumDownscales = -1;
- statistics_proxy_->SetQualityScalingStats(kNumDownscales);
+ ViEEncoder::AdaptCounts cpu_counts;
+ ViEEncoder::AdaptCounts quality_counts;
+ cpu_counts.resolution = -1;
+ statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts);
for (int i = 0; i < SendStatisticsProxy::kMinRequiredMetricsSamples; ++i)
statistics_proxy_->OnIncomingFrame(kWidth, kHeight);
@@ -854,13 +918,16 @@ TEST_F(SendStatisticsProxyTest, CpuLimitedHistogramNotUpdatedWhenDisabled) {
}
TEST_F(SendStatisticsProxyTest, CpuLimitedHistogramUpdated) {
- const int kNumDownscales = 0;
- statistics_proxy_->SetCpuScalingStats(kNumDownscales);
+ ViEEncoder::AdaptCounts cpu_counts;
+ ViEEncoder::AdaptCounts quality_counts;
+ cpu_counts.resolution = 0;
+ statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts);
for (int i = 0; i < SendStatisticsProxy::kMinRequiredMetricsSamples; ++i)
statistics_proxy_->OnIncomingFrame(kWidth, kHeight);
- statistics_proxy_->OnCpuRestrictedResolutionChanged(true);
+ cpu_counts.resolution = 1;
+ statistics_proxy_->OnCpuAdaptationChanged(cpu_counts, quality_counts);
for (int i = 0; i < SendStatisticsProxy::kMinRequiredMetricsSamples; ++i)
statistics_proxy_->OnIncomingFrame(kWidth, kHeight);
@@ -1149,9 +1216,11 @@ TEST_F(SendStatisticsProxyTest,
TEST_F(SendStatisticsProxyTest,
QualityLimitedHistogramsNotUpdatedWhenDisabled) {
- const int kNumDownscales = -1;
+ ViEEncoder::AdaptCounts cpu_counts;
+ ViEEncoder::AdaptCounts quality_counts;
+ quality_counts.resolution = -1;
+ statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts);
EncodedImage encoded_image;
- statistics_proxy_->SetQualityScalingStats(kNumDownscales);
for (int i = 0; i < SendStatisticsProxy::kMinRequiredMetricsSamples; ++i)
statistics_proxy_->OnSendEncodedImage(encoded_image, &kDefaultCodecInfo);
@@ -1165,9 +1234,11 @@ TEST_F(SendStatisticsProxyTest,
TEST_F(SendStatisticsProxyTest,
QualityLimitedHistogramsUpdatedWhenEnabled_NoResolutionDownscale) {
- const int kNumDownscales = 0;
+ ViEEncoder::AdaptCounts cpu_counts;
+ ViEEncoder::AdaptCounts quality_counts;
+ quality_counts.resolution = 0;
+ statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts);
EncodedImage encoded_image;
- statistics_proxy_->SetQualityScalingStats(kNumDownscales);
for (int i = 0; i < SendStatisticsProxy::kMinRequiredMetricsSamples; ++i)
statistics_proxy_->OnSendEncodedImage(encoded_image, &kDefaultCodecInfo);
@@ -1185,8 +1256,11 @@ TEST_F(SendStatisticsProxyTest,
TEST_F(SendStatisticsProxyTest,
QualityLimitedHistogramsUpdatedWhenEnabled_TwoResolutionDownscales) {
const int kDownscales = 2;
+ ViEEncoder::AdaptCounts cpu_counts;
+ ViEEncoder::AdaptCounts quality_counts;
+ quality_counts.resolution = kDownscales;
+ statistics_proxy_->SetAdaptationStats(cpu_counts, quality_counts);
EncodedImage encoded_image;
- statistics_proxy_->OnQualityRestrictedResolutionChanged(kDownscales);
for (int i = 0; i < SendStatisticsProxy::kMinRequiredMetricsSamples; ++i)
statistics_proxy_->OnSendEncodedImage(encoded_image, &kDefaultCodecInfo);
// Histograms are updated when the statistics_proxy_ is deleted.
@@ -1221,7 +1295,10 @@ TEST_F(SendStatisticsProxyTest, GetStatsReportsBandwidthLimitedResolution) {
EXPECT_FALSE(statistics_proxy_->GetStats().bw_limited_resolution);
// Resolution scaled due to quality.
- statistics_proxy_->OnQualityRestrictedResolutionChanged(1);
+ ViEEncoder::AdaptCounts cpu_counts;
+ ViEEncoder::AdaptCounts quality_counts;
+ quality_counts.resolution = 1;
+ statistics_proxy_->OnQualityAdaptationChanged(cpu_counts, quality_counts);
statistics_proxy_->OnSendEncodedImage(encoded_image, nullptr);
EXPECT_TRUE(statistics_proxy_->GetStats().bw_limited_resolution);
}
« no previous file with comments | « webrtc/video/send_statistics_proxy.cc ('k') | webrtc/video/vie_encoder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698