| Index: webrtc/modules/rtp_rtcp/source/rtp_utility_unittest.cc
|
| diff --git a/webrtc/modules/rtp_rtcp/source/rtp_utility_unittest.cc b/webrtc/modules/rtp_rtcp/source/rtp_utility_unittest.cc
|
| index 80f22fc61311eea66bd2a97a55c1fab65034ab5d..dcaa242148901c0d29fd38b1a8aea4661eb48795 100644
|
| --- a/webrtc/modules/rtp_rtcp/source/rtp_utility_unittest.cc
|
| +++ b/webrtc/modules/rtp_rtcp/source/rtp_utility_unittest.cc
|
| @@ -148,21 +148,23 @@ TEST(RtpHeaderParser, ParseWithOverSizedExtension) {
|
| EXPECT_EQ(sizeof(kPacket), header.headerLength);
|
| }
|
|
|
| -TEST(RtpHeaderParser, ParseAll6Extensions) {
|
| +TEST(RtpHeaderParser, ParseAll8Extensions) {
|
| const uint8_t kAudioLevel = 0x5a;
|
| // clang-format off
|
| const uint8_t kPacket[] = {
|
| 0x90, kPayloadType, 0x00, kSeqNum,
|
| 0x65, 0x43, 0x12, 0x78, // kTimestamp.
|
| 0x12, 0x34, 0x56, 0x78, // kSsrc.
|
| - 0xbe, 0xde, 0x00, 0x05, // Extension of size 5x32bit word.
|
| + 0xbe, 0xde, 0x00, 0x08, // Extension of size 8x32bit words.
|
| 0x40, 0x80|kAudioLevel, // AudioLevel.
|
| 0x22, 0x01, 0x56, 0xce, // TransmissionOffset.
|
| 0x62, 0x12, 0x34, 0x56, // AbsoluteSendTime.
|
| 0x81, 0xce, 0xab, // TransportSequenceNumber.
|
| 0xa0, 0x03, // VideoRotation.
|
| 0xb2, 0x12, 0x48, 0x76, // PlayoutDelayLimits.
|
| - 0x00, // Padding to 32bit boundary.
|
| + 0xc2, 'r', 't', 'x', // RtpStreamId
|
| + 0xd5, 's', 't', 'r', 'e', 'a', 'm', // RepairedRtpStreamId
|
| + 0x00, 0x00, // Padding to 32bit boundary.
|
| };
|
| // clang-format on
|
| ASSERT_EQ(sizeof(kPacket) % 4, 0u);
|
| @@ -174,6 +176,8 @@ TEST(RtpHeaderParser, ParseAll6Extensions) {
|
| extensions.Register<TransportSequenceNumber>(8);
|
| extensions.Register<VideoOrientation>(0xa);
|
| extensions.Register<PlayoutDelayLimits>(0xb);
|
| + extensions.Register<RtpStreamId>(0xc);
|
| + extensions.Register<RepairedRtpStreamId>(0xd);
|
| RtpUtility::RtpHeaderParser parser(kPacket, sizeof(kPacket));
|
| RTPHeader header;
|
|
|
| @@ -199,6 +203,33 @@ TEST(RtpHeaderParser, ParseAll6Extensions) {
|
| header.extension.playout_delay.min_ms);
|
| EXPECT_EQ(0x876 * PlayoutDelayLimits::kGranularityMs,
|
| header.extension.playout_delay.max_ms);
|
| + EXPECT_EQ(header.extension.stream_id, StreamId("rtx"));
|
| + EXPECT_EQ(header.extension.repaired_stream_id, StreamId("stream"));
|
| +}
|
| +
|
| +TEST(RtpHeaderParser, ParseMalformedRsidExtensions) {
|
| + // clang-format off
|
| + const uint8_t kPacket[] = {
|
| + 0x90, kPayloadType, 0x00, kSeqNum,
|
| + 0x65, 0x43, 0x12, 0x78, // kTimestamp.
|
| + 0x12, 0x34, 0x56, 0x78, // kSsrc.
|
| + 0xbe, 0xde, 0x00, 0x03, // Extension of size 3x32bit words.
|
| + 0xc2, '\0', 't', 'x', // empty RtpStreamId
|
| + 0xd5, 's', 't', 'r', '\0', 'a', 'm', // RepairedRtpStreamId
|
| + 0x00, // Padding to 32bit boundary.
|
| + };
|
| + // clang-format on
|
| + ASSERT_EQ(sizeof(kPacket) % 4, 0u);
|
| +
|
| + RtpHeaderExtensionMap extensions;
|
| + extensions.Register<RtpStreamId>(0xc);
|
| + extensions.Register<RepairedRtpStreamId>(0xd);
|
| + RtpUtility::RtpHeaderParser parser(kPacket, sizeof(kPacket));
|
| + RTPHeader header;
|
| +
|
| + EXPECT_TRUE(parser.Parse(&header, &extensions));
|
| + EXPECT_TRUE(header.extension.stream_id.empty());
|
| + EXPECT_EQ(header.extension.repaired_stream_id, StreamId("str"));
|
| }
|
|
|
| TEST(RtpHeaderParser, ParseWithCsrcsExtensionAndPadding) {
|
|
|