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

Unified Diff: webrtc/video/vie_encoder_unittest.cc

Issue 2775173004: Add number of quality adapt changes to VideoSendStream stats. (Closed)
Patch Set: rebase Created 3 years, 9 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_unittest.cc ('k') | webrtc/video_send_stream.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/video/vie_encoder_unittest.cc
diff --git a/webrtc/video/vie_encoder_unittest.cc b/webrtc/video/vie_encoder_unittest.cc
index 8c57d885be3193234935d85707a2813c4ddd8e7b..a5bc91474d4934b58f5111fa28ff515a2b710ec7 100644
--- a/webrtc/video/vie_encoder_unittest.cc
+++ b/webrtc/video/vie_encoder_unittest.cc
@@ -131,14 +131,14 @@ class VideoStreamFactory
class AdaptingFrameForwarder : public test::FrameForwarder {
public:
AdaptingFrameForwarder() : adaptation_enabled_(false) {}
- virtual ~AdaptingFrameForwarder() {}
+ ~AdaptingFrameForwarder() override {}
void set_adaptation_enabled(bool enabled) {
rtc::CritScope cs(&crit_);
adaptation_enabled_ = enabled;
}
- bool adaption_enabled() {
+ bool adaption_enabled() const {
rtc::CritScope cs(&crit_);
return adaptation_enabled_;
}
@@ -290,7 +290,7 @@ class ViEEncoderTest : public ::testing::Test {
: FakeEncoder(Clock::GetRealTimeClock()),
continue_encode_event_(false, false) {}
- VideoCodec codec_config() {
+ VideoCodec codec_config() const {
rtc::CritScope lock(&crit_sect_);
return config_;
}
@@ -431,12 +431,12 @@ class ViEEncoderTest : public ::testing::Test {
expect_frames_ = false;
}
- int number_of_reconfigurations() {
+ int number_of_reconfigurations() const {
rtc::CritScope lock(&crit_);
return number_of_reconfigurations_;
}
- int last_min_transmit_bitrate() {
+ int last_min_transmit_bitrate() const {
rtc::CritScope lock(&crit_);
return min_transmit_bitrate_bps_;
}
@@ -874,14 +874,47 @@ TEST_F(ViEEncoderTest, SinkWantsStoredByDegradationPreference) {
vie_encoder_->Stop();
}
-TEST_F(ViEEncoderTest, StatsTracksAdaptationStats) {
+TEST_F(ViEEncoderTest, StatsTracksQualityAdaptationStats) {
vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
- int frame_width = 1280;
- int frame_height = 720;
+ const int kWidth = 1280;
+ const int kHeight = 720;
- video_source_.IncomingCapturedFrame(
- CreateFrame(1, frame_width, frame_height));
+ video_source_.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
+ sink_.WaitForEncodedFrame(1);
+ VideoSendStream::Stats stats = stats_proxy_->GetStats();
+ EXPECT_FALSE(stats.bw_limited_resolution);
+ EXPECT_EQ(0, stats.number_of_quality_adapt_changes);
+
+ // Trigger adapt down.
+ vie_encoder_->TriggerQualityLow();
+ video_source_.IncomingCapturedFrame(CreateFrame(2, kWidth, kHeight));
+ sink_.WaitForEncodedFrame(2);
+
+ stats = stats_proxy_->GetStats();
+ EXPECT_TRUE(stats.bw_limited_resolution);
+ EXPECT_EQ(1, stats.number_of_quality_adapt_changes);
+
+ // Trigger adapt up.
+ vie_encoder_->TriggerQualityHigh();
+ video_source_.IncomingCapturedFrame(CreateFrame(3, kWidth, kHeight));
+ sink_.WaitForEncodedFrame(3);
+
+ stats = stats_proxy_->GetStats();
+ EXPECT_FALSE(stats.bw_limited_resolution);
+ EXPECT_EQ(2, stats.number_of_quality_adapt_changes);
+ EXPECT_EQ(0, stats.number_of_cpu_adapt_changes);
+
+ vie_encoder_->Stop();
+}
+
+TEST_F(ViEEncoderTest, StatsTracksCpuAdaptationStats) {
+ vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
+
+ const int kWidth = 1280;
+ const int kHeight = 720;
+
+ video_source_.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
sink_.WaitForEncodedFrame(1);
VideoSendStream::Stats stats = stats_proxy_->GetStats();
EXPECT_FALSE(stats.cpu_limited_resolution);
@@ -889,8 +922,7 @@ TEST_F(ViEEncoderTest, StatsTracksAdaptationStats) {
// Trigger CPU overuse.
vie_encoder_->TriggerCpuOveruse();
- video_source_.IncomingCapturedFrame(
- CreateFrame(2, frame_width, frame_height));
+ video_source_.IncomingCapturedFrame(CreateFrame(2, kWidth, kHeight));
sink_.WaitForEncodedFrame(2);
stats = stats_proxy_->GetStats();
@@ -899,13 +931,13 @@ TEST_F(ViEEncoderTest, StatsTracksAdaptationStats) {
// Trigger CPU normal use.
vie_encoder_->TriggerCpuNormalUsage();
- video_source_.IncomingCapturedFrame(
- CreateFrame(3, frame_width, frame_height));
+ video_source_.IncomingCapturedFrame(CreateFrame(3, kWidth, kHeight));
sink_.WaitForEncodedFrame(3);
stats = stats_proxy_->GetStats();
EXPECT_FALSE(stats.cpu_limited_resolution);
EXPECT_EQ(2, stats.number_of_cpu_adapt_changes);
+ EXPECT_EQ(0, stats.number_of_quality_adapt_changes);
vie_encoder_->Stop();
}
@@ -913,20 +945,17 @@ TEST_F(ViEEncoderTest, StatsTracksAdaptationStats) {
TEST_F(ViEEncoderTest, SwitchingSourceKeepsCpuAdaptation) {
vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
- int frame_width = 1280;
- int frame_height = 720;
- video_source_.IncomingCapturedFrame(
- CreateFrame(1, frame_width, frame_height));
+ const int kWidth = 1280;
+ const int kHeight = 720;
+ video_source_.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
sink_.WaitForEncodedFrame(1);
-
VideoSendStream::Stats stats = stats_proxy_->GetStats();
EXPECT_FALSE(stats.cpu_limited_resolution);
EXPECT_EQ(0, stats.number_of_cpu_adapt_changes);
+ // Trigger CPU overuse.
vie_encoder_->TriggerCpuOveruse();
-
- video_source_.IncomingCapturedFrame(
- CreateFrame(2, frame_width, frame_height));
+ video_source_.IncomingCapturedFrame(CreateFrame(2, kWidth, kHeight));
sink_.WaitForEncodedFrame(2);
stats = stats_proxy_->GetStats();
EXPECT_TRUE(stats.cpu_limited_resolution);
@@ -938,8 +967,7 @@ TEST_F(ViEEncoderTest, SwitchingSourceKeepsCpuAdaptation) {
&new_video_source,
VideoSendStream::DegradationPreference::kMaintainFramerate);
- new_video_source.IncomingCapturedFrame(
- CreateFrame(3, frame_width, frame_height));
+ new_video_source.IncomingCapturedFrame(CreateFrame(3, kWidth, kHeight));
sink_.WaitForEncodedFrame(3);
stats = stats_proxy_->GetStats();
EXPECT_TRUE(stats.cpu_limited_resolution);
@@ -950,8 +978,7 @@ TEST_F(ViEEncoderTest, SwitchingSourceKeepsCpuAdaptation) {
&new_video_source,
VideoSendStream::DegradationPreference::kDegradationDisabled);
- new_video_source.IncomingCapturedFrame(
- CreateFrame(4, frame_width, frame_height));
+ new_video_source.IncomingCapturedFrame(CreateFrame(4, kWidth, kHeight));
sink_.WaitForEncodedFrame(4);
stats = stats_proxy_->GetStats();
EXPECT_FALSE(stats.cpu_limited_resolution);
@@ -962,17 +989,15 @@ TEST_F(ViEEncoderTest, SwitchingSourceKeepsCpuAdaptation) {
&new_video_source,
VideoSendStream::DegradationPreference::kMaintainFramerate);
- new_video_source.IncomingCapturedFrame(
- CreateFrame(5, frame_width, frame_height));
+ new_video_source.IncomingCapturedFrame(CreateFrame(5, kWidth, kHeight));
sink_.WaitForEncodedFrame(5);
stats = stats_proxy_->GetStats();
EXPECT_TRUE(stats.cpu_limited_resolution);
EXPECT_EQ(1, stats.number_of_cpu_adapt_changes);
+ // Trigger CPU normal use.
vie_encoder_->TriggerCpuNormalUsage();
-
- new_video_source.IncomingCapturedFrame(
- CreateFrame(6, frame_width, frame_height));
+ new_video_source.IncomingCapturedFrame(CreateFrame(6, kWidth, kHeight));
sink_.WaitForEncodedFrame(6);
stats = stats_proxy_->GetStats();
EXPECT_FALSE(stats.cpu_limited_resolution);
@@ -984,60 +1009,59 @@ TEST_F(ViEEncoderTest, SwitchingSourceKeepsCpuAdaptation) {
TEST_F(ViEEncoderTest, SwitchingSourceKeepsQualityAdaptation) {
vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
- int frame_width = 1280;
- int frame_height = 720;
- video_source_.IncomingCapturedFrame(
- CreateFrame(1, frame_width, frame_height));
+ const int kWidth = 1280;
+ const int kHeight = 720;
+ video_source_.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
sink_.WaitForEncodedFrame(1);
-
VideoSendStream::Stats stats = stats_proxy_->GetStats();
EXPECT_FALSE(stats.cpu_limited_resolution);
EXPECT_FALSE(stats.bw_limited_resolution);
- EXPECT_EQ(0, stats.number_of_cpu_adapt_changes);
+ EXPECT_EQ(0, stats.number_of_quality_adapt_changes);
// Set new source with adaptation still enabled.
test::FrameForwarder new_video_source;
vie_encoder_->SetSource(&new_video_source,
VideoSendStream::DegradationPreference::kBalanced);
- new_video_source.IncomingCapturedFrame(
- CreateFrame(2, frame_width, frame_height));
+ new_video_source.IncomingCapturedFrame(CreateFrame(2, kWidth, kHeight));
sink_.WaitForEncodedFrame(2);
stats = stats_proxy_->GetStats();
EXPECT_FALSE(stats.cpu_limited_resolution);
EXPECT_FALSE(stats.bw_limited_resolution);
- EXPECT_EQ(0, stats.number_of_cpu_adapt_changes);
+ EXPECT_EQ(0, stats.number_of_quality_adapt_changes);
+ // Trigger adapt down.
vie_encoder_->TriggerQualityLow();
-
- new_video_source.IncomingCapturedFrame(
- CreateFrame(3, frame_width, frame_height));
+ new_video_source.IncomingCapturedFrame(CreateFrame(3, kWidth, kHeight));
sink_.WaitForEncodedFrame(3);
stats = stats_proxy_->GetStats();
EXPECT_FALSE(stats.cpu_limited_resolution);
EXPECT_TRUE(stats.bw_limited_resolution);
+ EXPECT_EQ(1, stats.number_of_quality_adapt_changes);
+ // Set new source with adaptation still enabled.
vie_encoder_->SetSource(&new_video_source,
VideoSendStream::DegradationPreference::kBalanced);
- new_video_source.IncomingCapturedFrame(
- CreateFrame(4, frame_width, frame_height));
+ new_video_source.IncomingCapturedFrame(CreateFrame(4, kWidth, kHeight));
sink_.WaitForEncodedFrame(4);
stats = stats_proxy_->GetStats();
EXPECT_FALSE(stats.cpu_limited_resolution);
EXPECT_TRUE(stats.bw_limited_resolution);
+ EXPECT_EQ(1, stats.number_of_quality_adapt_changes);
// Set adaptation disabled.
vie_encoder_->SetSource(
&new_video_source,
VideoSendStream::DegradationPreference::kMaintainResolution);
- new_video_source.IncomingCapturedFrame(
- CreateFrame(5, frame_width, frame_height));
+ new_video_source.IncomingCapturedFrame(CreateFrame(5, kWidth, kHeight));
sink_.WaitForEncodedFrame(5);
stats = stats_proxy_->GetStats();
EXPECT_FALSE(stats.cpu_limited_resolution);
EXPECT_FALSE(stats.bw_limited_resolution);
+ EXPECT_EQ(1, stats.number_of_quality_adapt_changes);
+ EXPECT_EQ(0, stats.number_of_cpu_adapt_changes);
vie_encoder_->Stop();
}
@@ -1088,12 +1112,11 @@ TEST_F(ViEEncoderTest, QualityAdaptationStatsAreResetWhenScalerIsDisabled) {
TEST_F(ViEEncoderTest, StatsTracksAdaptationStatsWhenSwitchingSource) {
vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
- int frame_width = 1280;
- int frame_height = 720;
+ int kWidth = 1280;
+ int kHeight = 720;
int sequence = 1;
- video_source_.IncomingCapturedFrame(
- CreateFrame(sequence, frame_width, frame_height));
+ video_source_.IncomingCapturedFrame(CreateFrame(sequence, kWidth, kHeight));
sink_.WaitForEncodedFrame(sequence++);
VideoSendStream::Stats stats = stats_proxy_->GetStats();
@@ -1102,8 +1125,7 @@ TEST_F(ViEEncoderTest, StatsTracksAdaptationStatsWhenSwitchingSource) {
// Trigger CPU overuse again, should now adapt down.
vie_encoder_->TriggerCpuOveruse();
- video_source_.IncomingCapturedFrame(
- CreateFrame(sequence, frame_width, frame_height));
+ video_source_.IncomingCapturedFrame(CreateFrame(sequence, kWidth, kHeight));
sink_.WaitForEncodedFrame(sequence++);
stats = stats_proxy_->GetStats();
@@ -1117,7 +1139,7 @@ TEST_F(ViEEncoderTest, StatsTracksAdaptationStatsWhenSwitchingSource) {
VideoSendStream::DegradationPreference::kMaintainFramerate);
new_video_source.IncomingCapturedFrame(
- CreateFrame(sequence, frame_width, frame_height));
+ CreateFrame(sequence, kWidth, kHeight));
sink_.WaitForEncodedFrame(sequence++);
stats = stats_proxy_->GetStats();
EXPECT_TRUE(stats.cpu_limited_resolution);
@@ -1128,7 +1150,7 @@ TEST_F(ViEEncoderTest, StatsTracksAdaptationStatsWhenSwitchingSource) {
&new_video_source,
VideoSendStream::DegradationPreference::kMaintainResolution);
new_video_source.IncomingCapturedFrame(
- CreateFrame(sequence, frame_width, frame_height));
+ CreateFrame(sequence, kWidth, kHeight));
sink_.WaitForEncodedFrame(sequence++);
stats = stats_proxy_->GetStats();
// Not adapted at first.
@@ -1144,7 +1166,7 @@ TEST_F(ViEEncoderTest, StatsTracksAdaptationStatsWhenSwitchingSource) {
stats_proxy_->ResetMockStats();
new_video_source.IncomingCapturedFrame(
- CreateFrame(sequence, frame_width, frame_height));
+ CreateFrame(sequence, kWidth, kHeight));
sink_.WaitForEncodedFrame(sequence++);
// Framerate now adapted.
@@ -1157,7 +1179,7 @@ TEST_F(ViEEncoderTest, StatsTracksAdaptationStatsWhenSwitchingSource) {
&new_video_source,
VideoSendStream::DegradationPreference::kDegradationDisabled);
new_video_source.IncomingCapturedFrame(
- CreateFrame(sequence, frame_width, frame_height));
+ CreateFrame(sequence, kWidth, kHeight));
sink_.WaitForEncodedFrame(sequence++);
stats = stats_proxy_->GetStats();
@@ -1177,8 +1199,7 @@ TEST_F(ViEEncoderTest, StatsTracksAdaptationStatsWhenSwitchingSource) {
vie_encoder_->SetSource(
&video_source_,
VideoSendStream::DegradationPreference::kMaintainFramerate);
- video_source_.IncomingCapturedFrame(
- CreateFrame(sequence, frame_width, frame_height));
+ video_source_.IncomingCapturedFrame(CreateFrame(sequence, kWidth, kHeight));
sink_.WaitForEncodedFrame(sequence++);
stats = stats_proxy_->GetStats();
EXPECT_TRUE(stats.cpu_limited_resolution);
@@ -1186,8 +1207,7 @@ TEST_F(ViEEncoderTest, StatsTracksAdaptationStatsWhenSwitchingSource) {
// Trigger CPU normal usage.
vie_encoder_->TriggerCpuNormalUsage();
- video_source_.IncomingCapturedFrame(
- CreateFrame(sequence, frame_width, frame_height));
+ video_source_.IncomingCapturedFrame(CreateFrame(sequence, kWidth, kHeight));
sink_.WaitForEncodedFrame(sequence++);
stats = stats_proxy_->GetStats();
EXPECT_FALSE(stats.cpu_limited_resolution);
@@ -1198,7 +1218,7 @@ TEST_F(ViEEncoderTest, StatsTracksAdaptationStatsWhenSwitchingSource) {
&new_video_source,
VideoSendStream::DegradationPreference::kMaintainResolution);
new_video_source.IncomingCapturedFrame(
- CreateFrame(sequence, frame_width, frame_height));
+ CreateFrame(sequence, kWidth, kHeight));
sink_.WaitForEncodedFrame(sequence++);
stats = stats_proxy_->GetStats();
// Disabled, since we previously switched the source too disabled.
@@ -1208,7 +1228,7 @@ TEST_F(ViEEncoderTest, StatsTracksAdaptationStatsWhenSwitchingSource) {
// Trigger CPU normal usage.
vie_encoder_->TriggerCpuNormalUsage();
new_video_source.IncomingCapturedFrame(
- CreateFrame(sequence, frame_width, frame_height));
+ CreateFrame(sequence, kWidth, kHeight));
sink_.WaitForEncodedFrame(sequence++);
stats = stats_proxy_->GetStats();
EXPECT_FALSE(stats.cpu_limited_resolution);
@@ -1220,7 +1240,9 @@ TEST_F(ViEEncoderTest, StatsTracksAdaptationStatsWhenSwitchingSource) {
TEST_F(ViEEncoderTest, StatsTracksPreferredBitrate) {
vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
- video_source_.IncomingCapturedFrame(CreateFrame(1, 1280, 720));
+ const int kWidth = 1280;
+ const int kHeight = 720;
+ video_source_.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
sink_.WaitForEncodedFrame(1);
VideoSendStream::Stats stats = stats_proxy_->GetStats();
@@ -1231,30 +1253,27 @@ TEST_F(ViEEncoderTest, StatsTracksPreferredBitrate) {
}
TEST_F(ViEEncoderTest, ScalingUpAndDownDoesNothingWithMaintainResolution) {
- int frame_width = 1280;
- int frame_height = 720;
+ const int kWidth = 1280;
+ const int kHeight = 720;
vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
- // Expect no scaling to begin with
+ // Expect no scaling to begin with.
EXPECT_FALSE(video_source_.sink_wants().target_pixel_count);
EXPECT_EQ(std::numeric_limits<int>::max(),
video_source_.sink_wants().max_pixel_count);
- video_source_.IncomingCapturedFrame(
- CreateFrame(1, frame_width, frame_height));
+ video_source_.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
sink_.WaitForEncodedFrame(1);
- // Trigger scale down
+ // Trigger scale down.
vie_encoder_->TriggerQualityLow();
- video_source_.IncomingCapturedFrame(
- CreateFrame(2, frame_width, frame_height));
+ video_source_.IncomingCapturedFrame(CreateFrame(2, kWidth, kHeight));
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,
- frame_width * frame_height);
+ EXPECT_LT(video_source_.sink_wants().max_pixel_count, kWidth * kHeight);
// Set adaptation disabled.
test::FrameForwarder new_video_source;
@@ -1262,20 +1281,18 @@ TEST_F(ViEEncoderTest, ScalingUpAndDownDoesNothingWithMaintainResolution) {
&new_video_source,
VideoSendStream::DegradationPreference::kMaintainResolution);
- // Trigger scale down
+ // Trigger scale down.
vie_encoder_->TriggerQualityLow();
- new_video_source.IncomingCapturedFrame(
- CreateFrame(3, frame_width, frame_height));
+ new_video_source.IncomingCapturedFrame(CreateFrame(3, kWidth, kHeight));
sink_.WaitForEncodedFrame(3);
- // Expect no scaling
+ // Expect no scaling.
EXPECT_EQ(std::numeric_limits<int>::max(),
new_video_source.sink_wants().max_pixel_count);
- // Trigger scale up
+ // Trigger scale up.
vie_encoder_->TriggerQualityHigh();
- new_video_source.IncomingCapturedFrame(
- CreateFrame(4, frame_width, frame_height));
+ new_video_source.IncomingCapturedFrame(CreateFrame(4, kWidth, kHeight));
sink_.WaitForEncodedFrame(4);
// Expect nothing to change, still no scaling
@@ -1294,7 +1311,7 @@ TEST_F(ViEEncoderTest, DoesNotScaleBelowSetLimit) {
video_source_.IncomingCapturedFrame(
CreateFrame(i, frame_width, frame_height));
sink_.WaitForEncodedFrame(i);
- // Trigger scale down
+ // Trigger scale down.
vie_encoder_->TriggerQualityLow();
EXPECT_GE(video_source_.sink_wants().max_pixel_count, kMinPixelsPerFrame);
}
@@ -1305,20 +1322,18 @@ TEST_F(ViEEncoderTest, DoesNotScaleBelowSetLimit) {
TEST_F(ViEEncoderTest, UMACpuLimitedResolutionInPercent) {
vie_encoder_->OnBitrateUpdated(kTargetBitrateBps, 0, 0);
- int frame_width = 640;
- int frame_height = 360;
+ const int kWidth = 640;
+ const int kHeight = 360;
for (int i = 1; i <= SendStatisticsProxy::kMinRequiredMetricsSamples; ++i) {
- video_source_.IncomingCapturedFrame(
- CreateFrame(i, frame_width, frame_height));
+ video_source_.IncomingCapturedFrame(CreateFrame(i, kWidth, kHeight));
sink_.WaitForEncodedFrame(i);
}
vie_encoder_->TriggerCpuOveruse();
for (int i = 1; i <= SendStatisticsProxy::kMinRequiredMetricsSamples; ++i) {
- video_source_.IncomingCapturedFrame(
- CreateFrame(SendStatisticsProxy::kMinRequiredMetricsSamples + i,
- frame_width, frame_height));
+ video_source_.IncomingCapturedFrame(CreateFrame(
+ SendStatisticsProxy::kMinRequiredMetricsSamples + i, kWidth, kHeight));
sink_.WaitForEncodedFrame(SendStatisticsProxy::kMinRequiredMetricsSamples +
i);
}
@@ -1378,12 +1393,12 @@ TEST_F(ViEEncoderTest, CallsBitrateObserver) {
}
TEST_F(ViEEncoderTest, DropsFramesAndScalesWhenBitrateIsTooLow) {
- vie_encoder_->OnBitrateUpdated(kLowTargetBitrateBps, 0, 0);
- int frame_width = 640;
- int frame_height = 360;
+ const int kTooLowBitrateForFrameSizeBps = 10000;
+ vie_encoder_->OnBitrateUpdated(kTooLowBitrateForFrameSizeBps, 0, 0);
+ const int kWidth = 640;
+ const int kHeight = 360;
- video_source_.IncomingCapturedFrame(
- CreateFrame(1, frame_width, frame_height));
+ video_source_.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
// Expect to drop this frame, the wait should time out.
sink_.ExpectDroppedFrame();
@@ -1393,9 +1408,9 @@ TEST_F(ViEEncoderTest, DropsFramesAndScalesWhenBitrateIsTooLow) {
int last_pixel_count = video_source_.sink_wants().max_pixel_count;
- // Next frame is scaled
+ // Next frame is scaled.
video_source_.IncomingCapturedFrame(
- CreateFrame(2, frame_width * 3 / 4, frame_height * 3 / 4));
+ CreateFrame(2, kWidth * 3 / 4, kHeight * 3 / 4));
// Expect to drop this frame, the wait should time out.
sink_.ExpectDroppedFrame();
@@ -1405,33 +1420,31 @@ TEST_F(ViEEncoderTest, DropsFramesAndScalesWhenBitrateIsTooLow) {
vie_encoder_->Stop();
}
-TEST_F(ViEEncoderTest, NrOfDroppedFramesLimited) {
- // 1kbps. This can never be achieved.
- vie_encoder_->OnBitrateUpdated(1000, 0, 0);
- int frame_width = 640;
- int frame_height = 360;
+TEST_F(ViEEncoderTest, NrOfDroppedFramesLimitedWhenBitrateIsTooLow) {
+ const int kTooLowBitrateForFrameSizeBps = 10000;
+ vie_encoder_->OnBitrateUpdated(kTooLowBitrateForFrameSizeBps, 0, 0);
+ const int kWidth = 640;
+ const int kHeight = 360;
// We expect the n initial frames to get dropped.
int i;
for (i = 1; i <= kMaxInitialFramedrop; ++i) {
- video_source_.IncomingCapturedFrame(
- CreateFrame(i, frame_width, frame_height));
+ video_source_.IncomingCapturedFrame(CreateFrame(i, kWidth, kHeight));
sink_.ExpectDroppedFrame();
}
// The n+1th frame should not be dropped, even though it's size is too large.
- video_source_.IncomingCapturedFrame(
- CreateFrame(i, frame_width, frame_height));
+ video_source_.IncomingCapturedFrame(CreateFrame(i, kWidth, kHeight));
sink_.WaitForEncodedFrame(i);
// Expect the sink_wants to specify a scaled frame.
- EXPECT_LT(video_source_.sink_wants().max_pixel_count, 1000 * 1000);
+ EXPECT_LT(video_source_.sink_wants().max_pixel_count, kWidth * kHeight);
vie_encoder_->Stop();
}
TEST_F(ViEEncoderTest, InitialFrameDropOffWithMaintainResolutionPreference) {
- int frame_width = 640;
- int frame_height = 360;
+ const int kWidth = 640;
+ const int kHeight = 360;
vie_encoder_->OnBitrateUpdated(kLowTargetBitrateBps, 0, 0);
// Set degradation preference.
@@ -1439,8 +1452,7 @@ TEST_F(ViEEncoderTest, InitialFrameDropOffWithMaintainResolutionPreference) {
&video_source_,
VideoSendStream::DegradationPreference::kMaintainResolution);
- video_source_.IncomingCapturedFrame(
- CreateFrame(1, frame_width, frame_height));
+ video_source_.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
// Frame should not be dropped, even if it's too large.
sink_.WaitForEncodedFrame(1);
@@ -1448,16 +1460,15 @@ TEST_F(ViEEncoderTest, InitialFrameDropOffWithMaintainResolutionPreference) {
}
TEST_F(ViEEncoderTest, InitialFrameDropOffWhenEncoderDisabledScaling) {
- int frame_width = 640;
- int frame_height = 360;
+ const int kWidth = 640;
+ const int kHeight = 360;
fake_encoder_.SetQualityScaling(false);
vie_encoder_->OnBitrateUpdated(kLowTargetBitrateBps, 0, 0);
// Force quality scaler reconfiguration by resetting the source.
vie_encoder_->SetSource(&video_source_,
VideoSendStream::DegradationPreference::kBalanced);
- video_source_.IncomingCapturedFrame(
- CreateFrame(1, frame_width, frame_height));
+ video_source_.IncomingCapturedFrame(CreateFrame(1, kWidth, kHeight));
// Frame should not be dropped, even if it's too large.
sink_.WaitForEncodedFrame(1);
@@ -1485,7 +1496,7 @@ TEST_F(ViEEncoderTest, AdaptsResolutionOnOveruse) {
CreateFrame(2, kFrameWidth, kFrameHeight));
sink_.WaitForEncodedFrame((kFrameWidth * 3) / 4, (kFrameHeight * 3) / 4);
- // Trigger CPU normal use, return to original resolution;
+ // Trigger CPU normal use, return to original resolution.
vie_encoder_->TriggerCpuNormalUsage();
video_source_.IncomingCapturedFrame(
CreateFrame(3, kFrameWidth, kFrameHeight));
« no previous file with comments | « webrtc/video/send_statistics_proxy_unittest.cc ('k') | webrtc/video_send_stream.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698