Index: webrtc/video/vie_encoder_unittest.cc |
diff --git a/webrtc/video/vie_encoder_unittest.cc b/webrtc/video/vie_encoder_unittest.cc |
index 6cc25cfb80e925946ec1a897f915b6169fecbdf4..1bb904be7cc7f39983cca026707c5bd9c238709c 100644 |
--- a/webrtc/video/vie_encoder_unittest.cc |
+++ b/webrtc/video/vie_encoder_unittest.cc |
@@ -585,12 +585,15 @@ TEST_F(ViEEncoderTest, |
int frame_width = 1280; |
int frame_height = 720; |
+ video_source_.IncomingCapturedFrame( |
+ CreateFrame(1, frame_width, frame_height)); |
+ sink_.WaitForEncodedFrame(1); |
// Trigger CPU overuse. |
vie_encoder_->TriggerCpuOveruse(); |
video_source_.IncomingCapturedFrame( |
- CreateFrame(1, frame_width, frame_height)); |
- sink_.WaitForEncodedFrame(1); |
+ CreateFrame(2, frame_width, frame_height)); |
+ sink_.WaitForEncodedFrame(2); |
EXPECT_LT(video_source_.sink_wants().max_pixel_count.value_or( |
std::numeric_limits<int>::max()), |
frame_width * frame_height); |
@@ -606,8 +609,8 @@ TEST_F(ViEEncoderTest, |
EXPECT_FALSE(new_video_source.sink_wants().max_pixel_count_step_up); |
new_video_source.IncomingCapturedFrame( |
- CreateFrame(2, frame_width, frame_height)); |
- sink_.WaitForEncodedFrame(2); |
+ CreateFrame(3, frame_width, frame_height)); |
+ sink_.WaitForEncodedFrame(3); |
EXPECT_FALSE(new_video_source.sink_wants().max_pixel_count); |
EXPECT_FALSE(new_video_source.sink_wants().max_pixel_count_step_up); |
@@ -874,12 +877,17 @@ TEST_F(ViEEncoderTest, ScalingUpAndDownDoesNothingWithMaintainResolution) { |
EXPECT_FALSE(video_source_.sink_wants().max_pixel_count); |
EXPECT_FALSE(video_source_.sink_wants().max_pixel_count_step_up); |
- // Trigger scale down |
- vie_encoder_->TriggerQualityLow(); |
video_source_.IncomingCapturedFrame( |
CreateFrame(1, frame_width, frame_height)); |
sink_.WaitForEncodedFrame(1); |
+ // Trigger scale down |
+ vie_encoder_->TriggerQualityLow(); |
+ |
+ video_source_.IncomingCapturedFrame( |
+ CreateFrame(2, frame_width, frame_height)); |
+ sink_.WaitForEncodedFrame(2); |
+ |
// Expect a scale down. |
EXPECT_TRUE(video_source_.sink_wants().max_pixel_count); |
EXPECT_LT(*video_source_.sink_wants().max_pixel_count, |
@@ -894,8 +902,8 @@ TEST_F(ViEEncoderTest, ScalingUpAndDownDoesNothingWithMaintainResolution) { |
// Trigger scale down |
vie_encoder_->TriggerQualityLow(); |
new_video_source.IncomingCapturedFrame( |
- CreateFrame(2, frame_width, frame_height)); |
- sink_.WaitForEncodedFrame(2); |
+ CreateFrame(3, frame_width, frame_height)); |
+ sink_.WaitForEncodedFrame(3); |
// Expect no scaling |
EXPECT_FALSE(new_video_source.sink_wants().max_pixel_count); |
@@ -903,8 +911,8 @@ TEST_F(ViEEncoderTest, ScalingUpAndDownDoesNothingWithMaintainResolution) { |
// Trigger scale up |
vie_encoder_->TriggerQualityHigh(); |
new_video_source.IncomingCapturedFrame( |
- CreateFrame(3, frame_width, frame_height)); |
- sink_.WaitForEncodedFrame(3); |
+ CreateFrame(4, frame_width, frame_height)); |
+ sink_.WaitForEncodedFrame(4); |
// Expect nothing to change, still no scaling |
EXPECT_FALSE(new_video_source.sink_wants().max_pixel_count); |
@@ -912,6 +920,26 @@ TEST_F(ViEEncoderTest, ScalingUpAndDownDoesNothingWithMaintainResolution) { |
vie_encoder_->Stop(); |
} |
+TEST_F(ViEEncoderTest, DoesNotScaleBelowSetLimit) { |
+ const int kTargetBitrateBps = 100000; |
+ int frame_width = 1280; |
+ int frame_height = 720; |
+ // from vie_encoder.cc |
+ const int kMinPixelsPerFrame = 120 * 90; |
+ vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0); |
+ |
+ for (size_t i = 1; i <= 10; i++) { |
+ video_source_.IncomingCapturedFrame( |
+ CreateFrame(i, frame_width, frame_height)); |
+ sink_.WaitForEncodedFrame(i); |
+ // Trigger scale down |
+ vie_encoder_->TriggerQualityLow(); |
+ EXPECT_GE(*video_source_.sink_wants().max_pixel_count, kMinPixelsPerFrame); |
+ } |
+ |
+ vie_encoder_->Stop(); |
+} |
+ |
TEST_F(ViEEncoderTest, UMACpuLimitedResolutionInPercent) { |
vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0); |