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

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

Issue 2578993002: Add frame rate throttling to vp8 screenshare_layers. (Closed)
Patch Set: Don't throttle if target framerate is 0 Created 4 years 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 b41621c83f88f1849e14a68efc4661030395001c..cbbf1e33ada2859201a5f9b8e56602f1dc5fc89f 100644
--- a/webrtc/modules/video_coding/codecs/vp8/screenshare_layers_unittest.cc
+++ b/webrtc/modules/video_coding/codecs/vp8/screenshare_layers_unittest.cc
@@ -577,4 +577,46 @@ TEST_F(ScreenshareLayerTest, AllowsUpdateConfigBeforeSetRates) {
EXPECT_FALSE(layers_->UpdateConfiguration(&cfg));
}
+TEST_F(ScreenshareLayerTest, RespectsConfiguredFramerate) {
+ ConfigureBitrates();
+
+ int64_t kTestSpanMs = 2000;
+ int64_t kFrameIntervalsMs = 1000 / kFrameRate;
+
+ uint32_t timestamp = 1234;
+ int num_input_frames = 0;
+ int num_discarded_frames = 0;
+
+ // Send at regular rate - no drops expected.
+ for (int64_t i = 0; i < kTestSpanMs; i += kFrameIntervalsMs) {
+ if (layers_->EncodeFlags(timestamp) == -1) {
+ ++num_discarded_frames;
+ } else {
+ size_t frame_size_bytes = kDefaultTl0BitrateKbps * kFrameIntervalsMs / 8;
+ layers_->FrameEncoded(frame_size_bytes, timestamp, kDefaultQp);
+ }
+ timestamp += kFrameIntervalsMs * 90;
+ clock_.AdvanceTimeMilliseconds(kFrameIntervalsMs);
+ ++num_input_frames;
+ }
+ EXPECT_EQ(0, num_discarded_frames);
+
+ // Send at twice the configured rate - drop every other frame.
+ num_input_frames = 0;
+ num_discarded_frames = 0;
+ for (int64_t i = 0; i < kTestSpanMs; i += kFrameIntervalsMs / 2) {
+ if (layers_->EncodeFlags(timestamp) == -1) {
+ ++num_discarded_frames;
+ } else {
+ size_t frame_size_bytes = kDefaultTl0BitrateKbps * kFrameIntervalsMs / 8;
+ layers_->FrameEncoded(frame_size_bytes, timestamp, kDefaultQp);
+ }
+ timestamp += kFrameIntervalsMs * 90 / 2;
+ clock_.AdvanceTimeMilliseconds(kFrameIntervalsMs / 2);
+ ++num_input_frames;
+ }
+
+ // Allow for some rounding errors in the measurements.
+ EXPECT_NEAR(num_discarded_frames, num_input_frames / 2, 2);
+}
} // namespace webrtc

Powered by Google App Engine
This is Rietveld 408576698