| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 #include "webrtc/modules/rtp_rtcp/source/rtp_packet_received.h" | 10 #include "webrtc/modules/rtp_rtcp/source/rtp_packet_received.h" |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 | 24 |
| 25 constexpr int8_t kPayloadType = 100; | 25 constexpr int8_t kPayloadType = 100; |
| 26 constexpr uint32_t kSsrc = 0x12345678; | 26 constexpr uint32_t kSsrc = 0x12345678; |
| 27 constexpr uint16_t kSeqNum = 0x1234; | 27 constexpr uint16_t kSeqNum = 0x1234; |
| 28 constexpr uint8_t kSeqNumFirstByte = kSeqNum >> 8; | 28 constexpr uint8_t kSeqNumFirstByte = kSeqNum >> 8; |
| 29 constexpr uint8_t kSeqNumSecondByte = kSeqNum & 0xff; | 29 constexpr uint8_t kSeqNumSecondByte = kSeqNum & 0xff; |
| 30 constexpr uint32_t kTimestamp = 0x65431278; | 30 constexpr uint32_t kTimestamp = 0x65431278; |
| 31 constexpr uint8_t kTransmissionOffsetExtensionId = 1; | 31 constexpr uint8_t kTransmissionOffsetExtensionId = 1; |
| 32 constexpr uint8_t kAudioLevelExtensionId = 9; | 32 constexpr uint8_t kAudioLevelExtensionId = 9; |
| 33 constexpr uint8_t kRtpStreamIdExtensionId = 0xa; | 33 constexpr uint8_t kRtpStreamIdExtensionId = 0xa; |
| 34 constexpr uint8_t kRtpFrameMarkingExtensionId = 8; |
| 34 constexpr int32_t kTimeOffset = 0x56ce; | 35 constexpr int32_t kTimeOffset = 0x56ce; |
| 35 constexpr bool kVoiceActive = true; | 36 constexpr bool kVoiceActive = true; |
| 36 constexpr uint8_t kAudioLevel = 0x5a; | 37 constexpr uint8_t kAudioLevel = 0x5a; |
| 37 constexpr char kStreamId[] = "streamid"; | 38 constexpr char kStreamId[] = "streamid"; |
| 38 constexpr size_t kMaxPaddingSize = 224u; | 39 constexpr size_t kMaxPaddingSize = 224u; |
| 39 // clang-format off | 40 // clang-format off |
| 40 constexpr uint8_t kMinimumPacket[] = { | 41 constexpr uint8_t kMinimumPacket[] = { |
| 41 0x80, kPayloadType, kSeqNumFirstByte, kSeqNumSecondByte, | 42 0x80, kPayloadType, kSeqNumFirstByte, kSeqNumSecondByte, |
| 42 0x65, 0x43, 0x12, 0x78, | 43 0x65, 0x43, 0x12, 0x78, |
| 43 0x12, 0x34, 0x56, 0x78}; | 44 0x12, 0x34, 0x56, 0x78}; |
| (...skipping 15 matching lines...) Expand all Loading... |
| 59 | 60 |
| 60 constexpr uint8_t kPacketWithRsid[] = { | 61 constexpr uint8_t kPacketWithRsid[] = { |
| 61 0x90, kPayloadType, kSeqNumFirstByte, kSeqNumSecondByte, | 62 0x90, kPayloadType, kSeqNumFirstByte, kSeqNumSecondByte, |
| 62 0x65, 0x43, 0x12, 0x78, | 63 0x65, 0x43, 0x12, 0x78, |
| 63 0x12, 0x34, 0x56, 0x78, | 64 0x12, 0x34, 0x56, 0x78, |
| 64 0xbe, 0xde, 0x00, 0x03, | 65 0xbe, 0xde, 0x00, 0x03, |
| 65 0xa7, 's', 't', 'r', | 66 0xa7, 's', 't', 'r', |
| 66 'e', 'a', 'm', 'i', | 67 'e', 'a', 'm', 'i', |
| 67 'd' , 0x00, 0x00, 0x00}; | 68 'd' , 0x00, 0x00, 0x00}; |
| 68 | 69 |
| 70 constexpr uint8_t kPacketWithFrameMarks[] = { |
| 71 0x90, kPayloadType, kSeqNumFirstByte, kSeqNumSecondByte, |
| 72 0x65, 0x43, 0x12, 0x78, |
| 73 0x12, 0x34, 0x56, 0x78, |
| 74 0xbe, 0xde, 0x00, 0x01, |
| 75 0x80, 0xe0, 0x00, 0x00}; // S:1 E:1 I:1 D:0 TID:1 |
| 76 |
| 77 constexpr uint8_t kPacketWithFrameMarksSVC[] = { |
| 78 0x90, kPayloadType, kSeqNumFirstByte, kSeqNumSecondByte, |
| 79 0x65, 0x43, 0x12, 0x78, |
| 80 0x12, 0x34, 0x56, 0x78, |
| 81 0xbe, 0xde, 0x00, 0x01, |
| 82 0x82, 0xe1, 0x00, 0x00}; // S:1 E:1 I:1 D:0 TID:1 |
| 83 |
| 84 constexpr uint8_t kPacketWithFrameMarksSVCVP9[] = { |
| 85 0x90, kPayloadType, kSeqNumFirstByte, kSeqNumSecondByte, |
| 86 0x65, 0x43, 0x12, 0x78, |
| 87 0x12, 0x34, 0x56, 0x78, |
| 88 0xbe, 0xde, 0x00, 0x01, |
| 89 0x82, 0xe1, 0x1a, 0x00}; // S:1 E:1 I:1 D:0 TID:1 P:1 U:1 SID: 2 |
| 90 |
| 69 constexpr uint32_t kCsrcs[] = {0x34567890, 0x32435465}; | 91 constexpr uint32_t kCsrcs[] = {0x34567890, 0x32435465}; |
| 70 constexpr uint8_t kPayload[] = {'p', 'a', 'y', 'l', 'o', 'a', 'd'}; | 92 constexpr uint8_t kPayload[] = {'p', 'a', 'y', 'l', 'o', 'a', 'd'}; |
| 71 constexpr uint8_t kPacketPaddingSize = 8; | 93 constexpr uint8_t kPacketPaddingSize = 8; |
| 72 constexpr uint8_t kPacket[] = { | 94 constexpr uint8_t kPacket[] = { |
| 73 0xb2, kPayloadType, kSeqNumFirstByte, kSeqNumSecondByte, | 95 0xb2, kPayloadType, kSeqNumFirstByte, kSeqNumSecondByte, |
| 74 0x65, 0x43, 0x12, 0x78, | 96 0x65, 0x43, 0x12, 0x78, |
| 75 0x12, 0x34, 0x56, 0x78, | 97 0x12, 0x34, 0x56, 0x78, |
| 76 0x34, 0x56, 0x78, 0x90, | 98 0x34, 0x56, 0x78, 0x90, |
| 77 0x32, 0x43, 0x54, 0x65, | 99 0x32, 0x43, 0x54, 0x65, |
| 78 0xbe, 0xde, 0x00, 0x01, | 100 0xbe, 0xde, 0x00, 0x01, |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 152 | 174 |
| 153 TEST(RtpPacketTest, TryToCreateWithLongRsid) { | 175 TEST(RtpPacketTest, TryToCreateWithLongRsid) { |
| 154 RtpPacketToSend::ExtensionManager extensions; | 176 RtpPacketToSend::ExtensionManager extensions; |
| 155 constexpr char kLongStreamId[] = "LoooooooooongRsid"; | 177 constexpr char kLongStreamId[] = "LoooooooooongRsid"; |
| 156 ASSERT_EQ(strlen(kLongStreamId), 17u); | 178 ASSERT_EQ(strlen(kLongStreamId), 17u); |
| 157 extensions.Register<RtpStreamId>(kRtpStreamIdExtensionId); | 179 extensions.Register<RtpStreamId>(kRtpStreamIdExtensionId); |
| 158 RtpPacketToSend packet(&extensions); | 180 RtpPacketToSend packet(&extensions); |
| 159 EXPECT_FALSE(packet.SetExtension<RtpStreamId>(kLongStreamId)); | 181 EXPECT_FALSE(packet.SetExtension<RtpStreamId>(kLongStreamId)); |
| 160 } | 182 } |
| 161 | 183 |
| 184 TEST(RtpPacketTest, CreateWithFrameMarks) { |
| 185 RtpPacketToSend::ExtensionManager extensions; |
| 186 extensions.Register<FrameMarking>(kRtpFrameMarkingExtensionId); |
| 187 RtpPacketToSend packet(&extensions); |
| 188 packet.SetPayloadType(kPayloadType); |
| 189 packet.SetSequenceNumber(kSeqNum); |
| 190 packet.SetTimestamp(kTimestamp); |
| 191 packet.SetSsrc(kSsrc); |
| 192 FrameMarks frame_marks = {true, true, true, false, false, 0, 0, 0}; |
| 193 EXPECT_TRUE(packet.SetExtension<FrameMarking>(frame_marks)); |
| 194 EXPECT_THAT(kPacketWithFrameMarks, |
| 195 ElementsAreArray(packet.data(), packet.size())); |
| 196 } |
| 197 |
| 198 TEST(RtpPacketTest, CreateWithFrameMarksSVC) { |
| 199 RtpPacketToSend::ExtensionManager extensions; |
| 200 extensions.Register<FrameMarking>(kRtpFrameMarkingExtensionId); |
| 201 RtpPacketToSend packet(&extensions); |
| 202 packet.SetPayloadType(kPayloadType); |
| 203 packet.SetSequenceNumber(kSeqNum); |
| 204 packet.SetTimestamp(kTimestamp); |
| 205 packet.SetSsrc(kSsrc); |
| 206 FrameMarks frame_marks = {true, true, true, false, false, 1, 0, 0}; |
| 207 EXPECT_TRUE(packet.SetExtension<FrameMarking>(frame_marks)); |
| 208 EXPECT_THAT(kPacketWithFrameMarksSVC, |
| 209 ElementsAreArray(packet.data(), packet.size())); |
| 210 } |
| 211 |
| 212 TEST(RtpPacketTest, CreateWithFrameMarksSVCVP9) { |
| 213 RtpPacketToSend::ExtensionManager extensions; |
| 214 extensions.Register<FrameMarking>(kRtpFrameMarkingExtensionId); |
| 215 RtpPacketToSend packet(&extensions); |
| 216 packet.SetPayloadType(kPayloadType); |
| 217 packet.SetSequenceNumber(kSeqNum); |
| 218 packet.SetTimestamp(kTimestamp); |
| 219 packet.SetSsrc(kSsrc); |
| 220 FrameMarks frame_marks = {true, true, true, false, false, 1, 0, 0}; |
| 221 RTPVideoHeaderVP9 vp9; |
| 222 vp9.spatial_idx = 2; |
| 223 vp9.temporal_up_switch = true; |
| 224 vp9.inter_pic_predicted = true; |
| 225 frame_marks.layer_id = FrameMarking::CreateLayerId(vp9); |
| 226 EXPECT_TRUE(packet.SetExtension<FrameMarking>(frame_marks)); |
| 227 EXPECT_THAT(kPacketWithFrameMarksSVCVP9, |
| 228 ElementsAreArray(packet.data(), packet.size())); |
| 229 } |
| 230 |
| 162 TEST(RtpPacketTest, CreateWithExtensionsWithoutManager) { | 231 TEST(RtpPacketTest, CreateWithExtensionsWithoutManager) { |
| 163 RtpPacketToSend packet(nullptr); | 232 RtpPacketToSend packet(nullptr); |
| 164 packet.SetPayloadType(kPayloadType); | 233 packet.SetPayloadType(kPayloadType); |
| 165 packet.SetSequenceNumber(kSeqNum); | 234 packet.SetSequenceNumber(kSeqNum); |
| 166 packet.SetTimestamp(kTimestamp); | 235 packet.SetTimestamp(kTimestamp); |
| 167 packet.SetSsrc(kSsrc); | 236 packet.SetSsrc(kSsrc); |
| 168 | 237 |
| 169 auto raw = packet.AllocateRawExtension(kTransmissionOffsetExtensionId, | 238 auto raw = packet.AllocateRawExtension(kTransmissionOffsetExtensionId, |
| 170 TransmissionOffset::kValueSizeBytes); | 239 TransmissionOffset::kValueSizeBytes); |
| 171 EXPECT_EQ(raw.size(), TransmissionOffset::kValueSizeBytes); | 240 EXPECT_EQ(raw.size(), TransmissionOffset::kValueSizeBytes); |
| (...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 456 ASSERT_TRUE(packet.Parse(kPacket, sizeof(kPacket))); | 525 ASSERT_TRUE(packet.Parse(kPacket, sizeof(kPacket))); |
| 457 | 526 |
| 458 EXPECT_FALSE(packet.HasRawExtension(kInvalidId)); | 527 EXPECT_FALSE(packet.HasRawExtension(kInvalidId)); |
| 459 EXPECT_THAT(packet.GetRawExtension(kInvalidId), IsEmpty()); | 528 EXPECT_THAT(packet.GetRawExtension(kInvalidId), IsEmpty()); |
| 460 const uint8_t kExtension[] = {'e', 'x', 't'}; | 529 const uint8_t kExtension[] = {'e', 'x', 't'}; |
| 461 EXPECT_FALSE(packet.SetRawExtension(kInvalidId, kExtension)); | 530 EXPECT_FALSE(packet.SetRawExtension(kInvalidId, kExtension)); |
| 462 EXPECT_THAT(packet.AllocateRawExtension(kInvalidId, 3), IsEmpty()); | 531 EXPECT_THAT(packet.AllocateRawExtension(kInvalidId, 3), IsEmpty()); |
| 463 } | 532 } |
| 464 | 533 |
| 465 } // namespace webrtc | 534 } // namespace webrtc |
| OLD | NEW |