Parse next RTCP XR report block after an unsupported block type.

R=stefan@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/2649004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5114 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
asapersson@webrtc.org
2013-11-12 08:08:26 +00:00
parent 3e427263ee
commit 38599510df
3 changed files with 167 additions and 108 deletions

View File

@ -162,6 +162,17 @@ class PacketBuilder {
}
}
void AddXrUnknownBlock() {
Add8(6); // Block type.
Add8(0); // Reserved.
Add16(9); // Length.
Add32(0); // Receiver SSRC.
Add64(0, 0); // Remaining fields (RFC 3611) are set to zero.
Add64(0, 0);
Add64(0, 0);
Add64(0, 0);
}
void AddXrVoipBlock(uint32_t remote_ssrc, uint8_t loss) {
Add8(7); // Block type.
Add8(0); // Reserved.
@ -452,6 +463,27 @@ TEST_F(RtcpReceiverTest, InjectXrPacketWithMultipleReportBlocks) {
EXPECT_TRUE(rtcp_packet_info_.xr_dlrr_item);
}
TEST_F(RtcpReceiverTest, InjectXrPacketWithUnknownReportBlock) {
const uint8_t kLossRate = 123;
const uint32_t kSourceSsrc = 0x123456;
std::set<uint32_t> ssrcs;
ssrcs.insert(kSourceSsrc);
rtcp_receiver_->SetSsrcs(kSourceSsrc, ssrcs);
std::vector<uint32_t> remote_ssrcs;
remote_ssrcs.push_back(kSourceSsrc);
PacketBuilder p;
p.AddXrHeader(0x2345);
p.AddXrVoipBlock(kSourceSsrc, kLossRate);
p.AddXrUnknownBlock();
p.AddXrReceiverReferenceTimeBlock(0x10203, 0x40506);
EXPECT_EQ(0, InjectRtcpPacket(p.packet(), p.length()));
EXPECT_EQ(static_cast<unsigned int>(kRtcpXrReceiverReferenceTime +
kRtcpXrVoipMetric),
rtcp_packet_info_.rtcpPacketTypeFlags);
}
TEST(RtcpUtilityTest, MidNtp) {
const uint32_t kNtpSec = 0x12345678;
const uint32_t kNtpFrac = 0x23456789;