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

Unified Diff: webrtc/modules/video_coding/codecs/vp8/screenshare_layers_unittest.cc

Issue 1869003002: Make sure temporal layered screenshare frames are sent in at least 2s. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Typo Created 4 years, 8 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
Index: webrtc/modules/video_coding/codecs/vp8/screenshare_layers_unittest.cc
diff --git a/webrtc/modules/video_coding/codecs/vp8/screenshare_layers_unittest.cc b/webrtc/modules/video_coding/codecs/vp8/screenshare_layers_unittest.cc
index 7be4eb1bb228928609d0a9a41aec5754ba0e71b2..4a6f6c6d79017c7edfd62aadc10ef5075c70642e 100644
--- a/webrtc/modules/video_coding/codecs/vp8/screenshare_layers_unittest.cc
+++ b/webrtc/modules/video_coding/codecs/vp8/screenshare_layers_unittest.cc
@@ -359,8 +359,7 @@ TEST_F(ScreenshareLayerTest, TooHighBitrate) {
}
}
- EXPECT_EQ(5, tl0_frames);
- EXPECT_EQ(45, tl1_frames);
+ EXPECT_EQ(50, tl0_frames + tl1_frames);
EXPECT_EQ(50, dropped_frames);
}
@@ -441,6 +440,32 @@ TEST_F(ScreenshareLayerTest, EncoderDrop) {
layers_->FrameEncoded(frame_size_, timestamp, kDefaultQp);
}
+TEST_F(ScreenshareLayerTest, RespectsMaxIntervalBetweenFrames) {
+ const int kLowBitrateKbps = 50;
+ const int kLargeFrameSizeBytes = 100000;
+ const uint32_t kStartTimestamp = 1234;
+
+ vpx_codec_enc_cfg_t cfg;
+ layers_->ConfigureBitrates(kLowBitrateKbps, kLowBitrateKbps, 5, &cfg);
+
+ EXPECT_EQ(ScreenshareLayers::kTl0Flags,
+ layers_->EncodeFlags(kStartTimestamp));
+ layers_->FrameEncoded(kLargeFrameSizeBytes, kStartTimestamp, kDefaultQp);
+
+ const uint32_t kTwoSecondsLater =
+ kStartTimestamp + (ScreenshareLayers::kMaxFrameIntervalMs * 90);
+
+ // Sanity check, repayment time should exceed kMaxFrameIntervalMs.
+ ASSERT_GT(kStartTimestamp + 90 * (kLargeFrameSizeBytes * 8) / kLowBitrateKbps,
+ kStartTimestamp + (ScreenshareLayers::kMaxFrameIntervalMs * 90));
+
+ EXPECT_EQ(-1, layers_->EncodeFlags(kTwoSecondsLater));
+ // More than two seconds has passed since last frame, one should be emitted
+ // even if bitrate target is then exceeded.
+ EXPECT_EQ(ScreenshareLayers::kTl0Flags,
+ layers_->EncodeFlags(kTwoSecondsLater + 90));
+}
+
TEST_F(ScreenshareLayerTest, UpdatesHistograms) {
ConfigureBitrates();
vpx_codec_enc_cfg_t cfg;

Powered by Google App Engine
This is Rietveld 408576698