| 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
|
|
|