Chromium Code Reviews| 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), |
|
danilchap
2016/12/01 11:52:05
may be use size_t instead of int for kNumSpatialLa
sprang_webrtc
2016/12/01 12:31:01
Done.
|
| + 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 |