Index: webrtc/modules/video_coding/utility/quality_scaler_unittest.cc |
diff --git a/webrtc/modules/video_coding/utility/quality_scaler_unittest.cc b/webrtc/modules/video_coding/utility/quality_scaler_unittest.cc |
index 32d0aa9aea85f3a1cea0f30d3f1b8db079fb01d4..93b5fcd43137b678df0c2f723e4753b0681bab15 100644 |
--- a/webrtc/modules/video_coding/utility/quality_scaler_unittest.cc |
+++ b/webrtc/modules/video_coding/utility/quality_scaler_unittest.cc |
@@ -131,9 +131,11 @@ TEST_F(QualityScalerTest, DownscalesAboveHighQp) { |
TEST_F(QualityScalerTest, DownscalesAfterTwoThirdsFramedrop) { |
DO_SYNC(q_, { |
- qs_->ReportDroppedFrame(); |
- qs_->ReportDroppedFrame(); |
- qs_->ReportQP(kHighQp); |
+ for (int i = 0; i < kFramerate * 5; ++i) { |
+ qs_->ReportDroppedFrame(); |
+ qs_->ReportDroppedFrame(); |
+ qs_->ReportQP(kHighQp); |
+ } |
}); |
EXPECT_TRUE(observer_->event.Wait(kDefaultTimeoutMs)); |
EXPECT_EQ(1, observer_->adapt_down_events_); |
@@ -149,8 +151,10 @@ TEST_F(QualityScalerTest, DoesNotDownscaleOnNormalQp) { |
TEST_F(QualityScalerTest, DoesNotDownscaleAfterHalfFramedrop) { |
DO_SYNC(q_, { |
- qs_->ReportDroppedFrame(); |
- qs_->ReportQP(kHighQp); |
+ for (int i = 0; i < kFramerate * 5; ++i) { |
+ qs_->ReportDroppedFrame(); |
+ qs_->ReportQP(kHighQp); |
+ } |
}); |
EXPECT_FALSE(observer_->event.Wait(kDefaultTimeoutMs)); |
EXPECT_EQ(0, observer_->adapt_down_events_); |
@@ -174,5 +178,25 @@ TEST_F(QualityScalerTest, ScalesDownAndBackUp) { |
EXPECT_EQ(1, observer_->adapt_down_events_); |
EXPECT_EQ(1, observer_->adapt_up_events_); |
} |
+ |
+TEST_F(QualityScalerTest, DoesNotScaleUntilEnoughFramesObserved) { |
+ DO_SYNC(q_, { |
+ // Send 30 frames. This should not be enough to make a decision. |
+ for (int i = 0; i < kFramerate; ++i) { |
+ qs_->ReportQP(kLowQp); |
+ } |
+ }); |
+ EXPECT_FALSE(observer_->event.Wait(kDefaultTimeoutMs)); |
+ DO_SYNC(q_, { |
+ // Send 30 more. This should result in an adapt request as |
+ // enough frames have now been observed. |
+ for (int i = 0; i < kFramerate; ++i) { |
+ qs_->ReportQP(kLowQp); |
+ } |
+ }); |
+ EXPECT_TRUE(observer_->event.Wait(kDefaultTimeoutMs)); |
+ EXPECT_EQ(0, observer_->adapt_down_events_); |
+ EXPECT_EQ(1, observer_->adapt_up_events_); |
+} |
} // namespace webrtc |
#undef DO_SYNC |