Chromium Code Reviews| 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 |