Index: webrtc/modules/rtp_rtcp/source/rtcp_sender_unittest.cc |
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_sender_unittest.cc b/webrtc/modules/rtp_rtcp/source/rtcp_sender_unittest.cc |
index a09d67ad480772a858628f022578dee83f35f5dd..c0d6391b1cf8c935786b7ed39010664a5dae5b9f 100644 |
--- a/webrtc/modules/rtp_rtcp/source/rtcp_sender_unittest.cc |
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_sender_unittest.cc |
@@ -821,4 +821,40 @@ TEST_F(RtcpSenderTest, ByeMustBeLast) { |
EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpBye)); |
} |
+TEST_F(RtcpSenderTest, SendXrWithTargetBitrate) { |
+ rtcp_sender_->SetRTCPStatus(RtcpMode::kCompound); |
+ const int kNumSpatialLayers = 2; |
+ const int kNumTemporalLayers = 2; |
+ BitrateAllocation allocation; |
+ for (int sl = 0; sl < kNumSpatialLayers; ++sl) { |
+ uint32_t start_bitrate_bps = (sl + 1) * 100000; |
+ for (int tl = 0; tl < kNumTemporalLayers; ++tl) |
+ allocation.SetBitrate(sl, tl, start_bitrate_bps + (tl * 20000)); |
+ } |
+ rtcp_sender_->SetVideoBitrateAllocation(allocation); |
+ |
+ EXPECT_EQ(0, rtcp_sender_->SendRTCP(feedback_state(), kRtcpReport)); |
+ EXPECT_EQ(1, parser()->xr()->num_packets()); |
+ EXPECT_EQ(kSenderSsrc, parser()->xr()->sender_ssrc()); |
+ const rtc::Optional<rtcp::TargetBitrate>& target_bitrate = |
+ parser()->xr()->target_bitrate(); |
+ ASSERT_TRUE(target_bitrate); |
+ const std::vector<rtcp::TargetBitrate::BitrateItem>& bitrates = |
+ target_bitrate->GetTargetBitrates(); |
+ EXPECT_EQ(static_cast<size_t>(kNumSpatialLayers * kNumTemporalLayers), |
+ bitrates.size()); |
+ |
+ for (int sl = 0; sl < kNumSpatialLayers; ++sl) { |
+ uint32_t start_bitrate_bps = (sl + 1) * 100000; |
+ for (int tl = 0; tl < kNumTemporalLayers; ++tl) { |
+ int index = (sl * kNumSpatialLayers) + tl; |
+ const rtcp::TargetBitrate::BitrateItem& item = bitrates[index]; |
+ EXPECT_EQ(sl, item.spatial_layer); |
+ EXPECT_EQ(tl, item.temporal_layer); |
+ EXPECT_EQ(start_bitrate_bps + (tl * 20000), |
+ item.target_bitrate_kbps * 1000); |
+ } |
+ } |
+} |
+ |
} // namespace webrtc |