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

Unified Diff: webrtc/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc

Issue 2549233005: Reject XR TargetBitrate items with unsupported layer indices (Closed)
Patch Set: 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/rtp_rtcp/source/rtcp_receiver_unittest.cc
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc b/webrtc/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc
index 16300895027e22e86792834df7816876d8737bd0..9470c4280c067806701d1808b4f77ec48926f646 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc
@@ -1297,4 +1297,37 @@ TEST_F(RtcpReceiverTest, ReceivesTargetBitrate) {
InjectRtcpPacket(xr);
}
+TEST_F(RtcpReceiverTest, HandlesIncorrectTargetBitrate) {
+ BitrateAllocation expected_allocation;
+ expected_allocation.SetBitrate(0, 0, 10000);
+
+ rtcp::TargetBitrate bitrate;
+ bitrate.AddTargetBitrate(0, 0, expected_allocation.GetBitrate(0, 0) / 1000);
+ bitrate.AddTargetBitrate(0, kMaxTemporalStreams - 1, 20000);
danilchap 2016/12/06 13:12:56 rtcp::TargetBitrate has different limits for tempo
sprang_webrtc 2016/12/06 13:22:41 You're right. Done.
+ bitrate.AddTargetBitrate(kMaxSpatialLayers - 1, 0, 40000);
+
+ rtcp::ExtendedReports xr;
+ xr.SetTargetBitrate(bitrate);
+
+ // Build the actual RTCP bytestream, so that we can set illegal layer ids.
+ rtc::Buffer buffer = xr.Build();
+ const size_t kHeaderLength = 12; // RTCP + XR + TargetBitrate.
+ const size_t kBirateItemSize = 4;
+ EXPECT_EQ(kHeaderLength + (3 * kBirateItemSize), buffer.size());
+
+ EXPECT_EQ(0U, buffer[kHeaderLength + (kBirateItemSize * 0)]);
+
+ EXPECT_EQ(kMaxTemporalStreams - 1,
+ buffer[kHeaderLength + (kBirateItemSize * 1)]);
+ buffer[kHeaderLength + (kBirateItemSize * 1)] = kMaxTemporalStreams;
+
+ EXPECT_EQ((kMaxSpatialLayers - 1) << 4,
+ buffer[kHeaderLength + (kBirateItemSize * 2)]);
+ buffer[kHeaderLength + (kBirateItemSize * 2)] = kMaxSpatialLayers << 4;
+
+ EXPECT_CALL(bitrate_allocation_observer_,
+ OnBitrateAllocationUpdated(expected_allocation));
+ InjectRtcpPacket(buffer);
+}
+
} // namespace webrtc

Powered by Google App Engine
This is Rietveld 408576698