| 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 15 matching lines...) Expand all Loading... |
| 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 kRtpMidExtensionId = 0xb; | 34 constexpr uint8_t kRtpMidExtensionId = 0xb; |
| 35 constexpr uint8_t kVideoTimingExtensionId = 0xc; | 35 constexpr uint8_t kVideoTimingExtensionId = 0xc; |
| 36 constexpr uint8_t kRtpFrameMarkingExtensionId = 8; |
| 36 constexpr int32_t kTimeOffset = 0x56ce; | 37 constexpr int32_t kTimeOffset = 0x56ce; |
| 37 constexpr bool kVoiceActive = true; | 38 constexpr bool kVoiceActive = true; |
| 38 constexpr uint8_t kAudioLevel = 0x5a; | 39 constexpr uint8_t kAudioLevel = 0x5a; |
| 39 constexpr char kStreamId[] = "streamid"; | 40 constexpr char kStreamId[] = "streamid"; |
| 40 constexpr char kMid[] = "mid"; | 41 constexpr char kMid[] = "mid"; |
| 41 constexpr size_t kMaxPaddingSize = 224u; | 42 constexpr size_t kMaxPaddingSize = 224u; |
| 42 // clang-format off | 43 // clang-format off |
| 43 constexpr uint8_t kMinimumPacket[] = { | 44 constexpr uint8_t kMinimumPacket[] = { |
| 44 0x80, kPayloadType, kSeqNumFirstByte, kSeqNumSecondByte, | 45 0x80, kPayloadType, kSeqNumFirstByte, kSeqNumSecondByte, |
| 45 0x65, 0x43, 0x12, 0x78, | 46 0x65, 0x43, 0x12, 0x78, |
| (...skipping 23 matching lines...) Expand all Loading... |
| 69 'e', 'a', 'm', 'i', | 70 'e', 'a', 'm', 'i', |
| 70 'd' , 0x00, 0x00, 0x00}; | 71 'd' , 0x00, 0x00, 0x00}; |
| 71 | 72 |
| 72 constexpr uint8_t kPacketWithMid[] = { | 73 constexpr uint8_t kPacketWithMid[] = { |
| 73 0x90, kPayloadType, kSeqNumFirstByte, kSeqNumSecondByte, | 74 0x90, kPayloadType, kSeqNumFirstByte, kSeqNumSecondByte, |
| 74 0x65, 0x43, 0x12, 0x78, | 75 0x65, 0x43, 0x12, 0x78, |
| 75 0x12, 0x34, 0x56, 0x78, | 76 0x12, 0x34, 0x56, 0x78, |
| 76 0xbe, 0xde, 0x00, 0x01, | 77 0xbe, 0xde, 0x00, 0x01, |
| 77 0xb2, 'm', 'i', 'd'}; | 78 0xb2, 'm', 'i', 'd'}; |
| 78 | 79 |
| 80 constexpr uint8_t kPacketWithFrameMarks[] = { |
| 81 0x90, kPayloadType, kSeqNumFirstByte, kSeqNumSecondByte, |
| 82 0x65, 0x43, 0x12, 0x78, |
| 83 0x12, 0x34, 0x56, 0x78, |
| 84 0xbe, 0xde, 0x00, 0x01, |
| 85 0x80, 0xe0, 0x00, 0x00}; // S:1 E:1 I:1 D:0 TID:0 |
| 86 |
| 87 constexpr uint8_t kPacketWithFrameMarksSVC[] = { |
| 88 0x90, kPayloadType, kSeqNumFirstByte, kSeqNumSecondByte, |
| 89 0x65, 0x43, 0x12, 0x78, |
| 90 0x12, 0x34, 0x56, 0x78, |
| 91 0xbe, 0xde, 0x00, 0x01, |
| 92 0x82, 0xe1, 0x00, 0x00}; // S:1 E:1 I:1 D:0 TID:1 |
| 93 |
| 94 constexpr uint8_t kPacketWithFrameMarksSVCVP9[] = { |
| 95 0x90, kPayloadType, kSeqNumFirstByte, kSeqNumSecondByte, |
| 96 0x65, 0x43, 0x12, 0x78, |
| 97 0x12, 0x34, 0x56, 0x78, |
| 98 0xbe, 0xde, 0x00, 0x01, |
| 99 0x82, 0xe1, 0x1a, 0x00}; // S:1 E:1 I:1 D:0 TID:1 P:1 U:1 SID: 2 |
| 100 |
| 79 constexpr uint32_t kCsrcs[] = {0x34567890, 0x32435465}; | 101 constexpr uint32_t kCsrcs[] = {0x34567890, 0x32435465}; |
| 80 constexpr uint8_t kPayload[] = {'p', 'a', 'y', 'l', 'o', 'a', 'd'}; | 102 constexpr uint8_t kPayload[] = {'p', 'a', 'y', 'l', 'o', 'a', 'd'}; |
| 81 constexpr uint8_t kPacketPaddingSize = 8; | 103 constexpr uint8_t kPacketPaddingSize = 8; |
| 82 constexpr uint8_t kPacket[] = { | 104 constexpr uint8_t kPacket[] = { |
| 83 0xb2, kPayloadType, kSeqNumFirstByte, kSeqNumSecondByte, | 105 0xb2, kPayloadType, kSeqNumFirstByte, kSeqNumSecondByte, |
| 84 0x65, 0x43, 0x12, 0x78, | 106 0x65, 0x43, 0x12, 0x78, |
| 85 0x12, 0x34, 0x56, 0x78, | 107 0x12, 0x34, 0x56, 0x78, |
| 86 0x34, 0x56, 0x78, 0x90, | 108 0x34, 0x56, 0x78, 0x90, |
| 87 0x32, 0x43, 0x54, 0x65, | 109 0x32, 0x43, 0x54, 0x65, |
| 88 0xbe, 0xde, 0x00, 0x01, | 110 0xbe, 0xde, 0x00, 0x01, |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 189 | 211 |
| 190 TEST(RtpPacketTest, TryToCreateWithLongMid) { | 212 TEST(RtpPacketTest, TryToCreateWithLongMid) { |
| 191 RtpPacketToSend::ExtensionManager extensions; | 213 RtpPacketToSend::ExtensionManager extensions; |
| 192 constexpr char kLongMid[] = "LoooooooooonogMid"; | 214 constexpr char kLongMid[] = "LoooooooooonogMid"; |
| 193 ASSERT_EQ(strlen(kLongMid), 17u); | 215 ASSERT_EQ(strlen(kLongMid), 17u); |
| 194 extensions.Register<RtpMid>(kRtpMidExtensionId); | 216 extensions.Register<RtpMid>(kRtpMidExtensionId); |
| 195 RtpPacketToSend packet(&extensions); | 217 RtpPacketToSend packet(&extensions); |
| 196 EXPECT_FALSE(packet.SetExtension<RtpMid>(kLongMid)); | 218 EXPECT_FALSE(packet.SetExtension<RtpMid>(kLongMid)); |
| 197 } | 219 } |
| 198 | 220 |
| 221 TEST(RtpPacketTest, CreateWithFrameMarks) { |
| 222 RtpPacketToSend::ExtensionManager extensions; |
| 223 extensions.Register<FrameMarking>(kRtpFrameMarkingExtensionId); |
| 224 RtpPacketToSend packet(&extensions); |
| 225 packet.SetPayloadType(kPayloadType); |
| 226 packet.SetSequenceNumber(kSeqNum); |
| 227 packet.SetTimestamp(kTimestamp); |
| 228 packet.SetSsrc(kSsrc); |
| 229 FrameMarks frame_marks; // S:1 E:1 I:1 D:0 TID:0 |
| 230 frame_marks.start_of_frame = true; |
| 231 frame_marks.end_of_frame = true; |
| 232 frame_marks.independent = true; |
| 233 EXPECT_TRUE(packet.SetExtension<FrameMarking>(frame_marks)); |
| 234 EXPECT_THAT(kPacketWithFrameMarks, |
| 235 ElementsAreArray(packet.data(), packet.size())); |
| 236 } |
| 237 |
| 238 TEST(RtpPacketTest, CreateWithFrameMarksSVC) { |
| 239 RtpPacketToSend::ExtensionManager extensions; |
| 240 extensions.Register<FrameMarking>(kRtpFrameMarkingExtensionId); |
| 241 RtpPacketToSend packet(&extensions); |
| 242 packet.SetPayloadType(kPayloadType); |
| 243 packet.SetSequenceNumber(kSeqNum); |
| 244 packet.SetTimestamp(kTimestamp); |
| 245 packet.SetSsrc(kSsrc); |
| 246 FrameMarks frame_marks; // S:1 E:1 I:1 D:0 TID:1 |
| 247 frame_marks.start_of_frame = true; |
| 248 frame_marks.end_of_frame = true; |
| 249 frame_marks.independent = true; |
| 250 frame_marks.temporal_layer_id = 1; |
| 251 EXPECT_TRUE(packet.SetExtension<FrameMarking>(frame_marks)); |
| 252 EXPECT_THAT(kPacketWithFrameMarksSVC, |
| 253 ElementsAreArray(packet.data(), packet.size())); |
| 254 } |
| 255 |
| 256 TEST(RtpPacketTest, CreateWithFrameMarksSVCVP9) { |
| 257 RtpPacketToSend::ExtensionManager extensions; |
| 258 extensions.Register<FrameMarking>(kRtpFrameMarkingExtensionId); |
| 259 RtpPacketToSend packet(&extensions); |
| 260 packet.SetPayloadType(kPayloadType); |
| 261 packet.SetSequenceNumber(kSeqNum); |
| 262 packet.SetTimestamp(kTimestamp); |
| 263 packet.SetSsrc(kSsrc); |
| 264 FrameMarks frame_marks; // S:1 E:1 I:1 D:0 TID:1 P:1 U:1 SID: 2 |
| 265 frame_marks.start_of_frame = true; |
| 266 frame_marks.end_of_frame = true; |
| 267 frame_marks.independent = true; |
| 268 frame_marks.temporal_layer_id = 1; |
| 269 RTPVideoHeaderVP9 vp9; |
| 270 vp9.spatial_idx = 2; |
| 271 vp9.temporal_up_switch = true; |
| 272 vp9.inter_pic_predicted = true; |
| 273 frame_marks.layer_id = FrameMarking::CreateLayerId(vp9); |
| 274 EXPECT_TRUE(packet.SetExtension<FrameMarking>(frame_marks)); |
| 275 EXPECT_THAT(kPacketWithFrameMarksSVCVP9, |
| 276 ElementsAreArray(packet.data(), packet.size())); |
| 277 } |
| 278 |
| 199 TEST(RtpPacketTest, CreateWithExtensionsWithoutManager) { | 279 TEST(RtpPacketTest, CreateWithExtensionsWithoutManager) { |
| 200 RtpPacketToSend packet(nullptr); | 280 RtpPacketToSend packet(nullptr); |
| 201 packet.SetPayloadType(kPayloadType); | 281 packet.SetPayloadType(kPayloadType); |
| 202 packet.SetSequenceNumber(kSeqNum); | 282 packet.SetSequenceNumber(kSeqNum); |
| 203 packet.SetTimestamp(kTimestamp); | 283 packet.SetTimestamp(kTimestamp); |
| 204 packet.SetSsrc(kSsrc); | 284 packet.SetSsrc(kSsrc); |
| 205 | 285 |
| 206 auto raw = packet.AllocateRawExtension(kTransmissionOffsetExtensionId, | 286 auto raw = packet.AllocateRawExtension(kTransmissionOffsetExtensionId, |
| 207 TransmissionOffset::kValueSizeBytes); | 287 TransmissionOffset::kValueSizeBytes); |
| 208 EXPECT_EQ(raw.size(), TransmissionOffset::kValueSizeBytes); | 288 EXPECT_EQ(raw.size(), TransmissionOffset::kValueSizeBytes); |
| (...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 557 VideoSendTiming receivied_timing; | 637 VideoSendTiming receivied_timing; |
| 558 EXPECT_TRUE(packet.GetExtension<VideoTimingExtension>(&receivied_timing)); | 638 EXPECT_TRUE(packet.GetExtension<VideoTimingExtension>(&receivied_timing)); |
| 559 | 639 |
| 560 // Check first and last timestamp are still OK. Flags should now be 0. | 640 // Check first and last timestamp are still OK. Flags should now be 0. |
| 561 EXPECT_EQ(receivied_timing.encode_start_delta_ms, 1); | 641 EXPECT_EQ(receivied_timing.encode_start_delta_ms, 1); |
| 562 EXPECT_EQ(receivied_timing.pacer_exit_delta_ms, 4); | 642 EXPECT_EQ(receivied_timing.pacer_exit_delta_ms, 4); |
| 563 EXPECT_EQ(receivied_timing.flags, 0); | 643 EXPECT_EQ(receivied_timing.flags, 0); |
| 564 } | 644 } |
| 565 | 645 |
| 566 } // namespace webrtc | 646 } // namespace webrtc |
| OLD | NEW |