Chromium Code Reviews| 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..b870a853932308424929fdd942dc58e88a977268 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(quality_counts, quality_counts); |
|
kthelgason
2017/05/09 11:50:15
first param should be `cpu_counts`
åsapersson
2017/05/10 08:24:45
thanks, done.
|
| + 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); |
| - EXPECT_TRUE(statistics_proxy_->GetStats().cpu_limited_resolution); |
| + statistics_proxy_->OnCpuAdaptationChanged(cpu_counts, quality_counts); |
| + EXPECT_FALSE(statistics_proxy_->GetStats().cpu_limited_framerate); |
| + EXPECT_FALSE(statistics_proxy_->GetStats().cpu_limited_resolution); |
| EXPECT_EQ(1, statistics_proxy_->GetStats().number_of_cpu_adapt_changes); |
|
kthelgason
2017/05/09 11:50:15
Why is this 1?
åsapersson
2017/05/10 08:24:45
OnCpuAdaptationChanged is supposed to be called on
|
| - statistics_proxy_->OnCpuRestrictedResolutionChanged(false); |
| + cpu_counts.fps = 3; |
| + cpu_counts.resolution = 0; |
| + statistics_proxy_->OnCpuAdaptationChanged(cpu_counts, quality_counts); |
| + EXPECT_TRUE(statistics_proxy_->GetStats().cpu_limited_framerate); |
| EXPECT_FALSE(statistics_proxy_->GetStats().cpu_limited_resolution); |
| EXPECT_EQ(2, statistics_proxy_->GetStats().number_of_cpu_adapt_changes); |
|
kthelgason
2017/05/09 11:50:15
is this expected behavior? If the number of fps ad
åsapersson
2017/05/10 08:24:45
see comment above
|
| + 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); |
| + 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(1, statistics_proxy_->GetStats().number_of_quality_adapt_changes); |
|
kthelgason
2017/05/09 11:50:15
same here, should this be 1? Nothing has changes A
åsapersson
2017/05/10 08:24:45
see comment above
|
| - statistics_proxy_->OnQualityRestrictedResolutionChanged(2); |
| + quality_counts.fps = 0; |
| + quality_counts.resolution = 2; |
| + statistics_proxy_->OnQualityAdaptationChanged(cpu_counts, quality_counts); |
| + EXPECT_FALSE(statistics_proxy_->GetStats().bw_limited_framerate); |
| EXPECT_TRUE(statistics_proxy_->GetStats().bw_limited_resolution); |
| EXPECT_EQ(2, statistics_proxy_->GetStats().number_of_quality_adapt_changes); |
|
kthelgason
2017/05/09 11:50:15
ditto
åsapersson
2017/05/10 08:24:45
see comment above
|
| - |
| - 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); |
| - EXPECT_FALSE(statistics_proxy_->GetStats().bw_limited_resolution); |
| - EXPECT_EQ(4, 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); |
| } |