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); |
} |