Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(174)

Side by Side Diff: webrtc/modules/rtp_rtcp/source/rtp_packet_unittest.cc

Issue 2871813003: Add write support for the RtpStreamId and RepairedRtpStreamId header extensions. (Closed)
Patch Set: Patch 3 Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtp_packet.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 10 matching lines...) Expand all
21 using ::testing::ElementsAreArray; 21 using ::testing::ElementsAreArray;
22 using ::testing::IsEmpty; 22 using ::testing::IsEmpty;
23 using ::testing::make_tuple; 23 using ::testing::make_tuple;
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 = 88; 27 constexpr uint16_t kSeqNum = 88;
28 constexpr uint32_t kTimestamp = 0x65431278; 28 constexpr uint32_t kTimestamp = 0x65431278;
29 constexpr uint8_t kTransmissionOffsetExtensionId = 1; 29 constexpr uint8_t kTransmissionOffsetExtensionId = 1;
30 constexpr uint8_t kAudioLevelExtensionId = 9; 30 constexpr uint8_t kAudioLevelExtensionId = 9;
31 constexpr uint8_t kRtpStreamIdExtensionId = 0xa;
31 constexpr int32_t kTimeOffset = 0x56ce; 32 constexpr int32_t kTimeOffset = 0x56ce;
32 constexpr bool kVoiceActive = true; 33 constexpr bool kVoiceActive = true;
33 constexpr uint8_t kAudioLevel = 0x5a; 34 constexpr uint8_t kAudioLevel = 0x5a;
35 constexpr char kStreamId[] = "streamid";
34 constexpr size_t kMaxPaddingSize = 224u; 36 constexpr size_t kMaxPaddingSize = 224u;
35 // clang-format off 37 // clang-format off
36 constexpr uint8_t kMinimumPacket[] = { 38 constexpr uint8_t kMinimumPacket[] = {
37 0x80, kPayloadType, 0x00, kSeqNum, 39 0x80, kPayloadType, 0x00, kSeqNum,
38 0x65, 0x43, 0x12, 0x78, 40 0x65, 0x43, 0x12, 0x78,
39 0x12, 0x34, 0x56, 0x78}; 41 0x12, 0x34, 0x56, 0x78};
42
40 constexpr uint8_t kPacketWithTO[] = { 43 constexpr uint8_t kPacketWithTO[] = {
41 0x90, kPayloadType, 0x00, kSeqNum, 44 0x90, kPayloadType, 0x00, kSeqNum,
42 0x65, 0x43, 0x12, 0x78, 45 0x65, 0x43, 0x12, 0x78,
43 0x12, 0x34, 0x56, 0x78, 46 0x12, 0x34, 0x56, 0x78,
44 0xbe, 0xde, 0x00, 0x01, 47 0xbe, 0xde, 0x00, 0x01,
45 0x12, 0x00, 0x56, 0xce}; 48 0x12, 0x00, 0x56, 0xce};
46 49
47 constexpr uint8_t kPacketWithTOAndAL[] = { 50 constexpr uint8_t kPacketWithTOAndAL[] = {
48 0x90, kPayloadType, 0x00, kSeqNum, 51 0x90, kPayloadType, 0x00, kSeqNum,
49 0x65, 0x43, 0x12, 0x78, 52 0x65, 0x43, 0x12, 0x78,
50 0x12, 0x34, 0x56, 0x78, 53 0x12, 0x34, 0x56, 0x78,
51 0xbe, 0xde, 0x00, 0x02, 54 0xbe, 0xde, 0x00, 0x02,
52 0x12, 0x00, 0x56, 0xce, 55 0x12, 0x00, 0x56, 0xce,
53 0x90, 0x80|kAudioLevel, 0x00, 0x00}; 56 0x90, 0x80|kAudioLevel, 0x00, 0x00};
54 57
58 constexpr uint8_t kPacketWithRsid[] = {
59 0x90, kPayloadType, 0x00, kSeqNum,
60 0x65, 0x43, 0x12, 0x78,
61 0x12, 0x34, 0x56, 0x78,
62 0xbe, 0xde, 0x00, 0x03,
63 0xa7, 's', 't', 'r',
64 'e', 'a', 'm', 'i',
65 'd' , 0x00, 0x00, 0x00};
66
55 constexpr uint32_t kCsrcs[] = {0x34567890, 0x32435465}; 67 constexpr uint32_t kCsrcs[] = {0x34567890, 0x32435465};
56 constexpr uint8_t kPayload[] = {'p', 'a', 'y', 'l', 'o', 'a', 'd'}; 68 constexpr uint8_t kPayload[] = {'p', 'a', 'y', 'l', 'o', 'a', 'd'};
57 constexpr uint8_t kPacketPaddingSize = 8; 69 constexpr uint8_t kPacketPaddingSize = 8;
58 constexpr uint8_t kPacket[] = { 70 constexpr uint8_t kPacket[] = {
59 0xb2, kPayloadType, 0x00, kSeqNum, 71 0xb2, kPayloadType, 0x00, kSeqNum,
60 0x65, 0x43, 0x12, 0x78, 72 0x65, 0x43, 0x12, 0x78,
61 0x12, 0x34, 0x56, 0x78, 73 0x12, 0x34, 0x56, 0x78,
62 0x34, 0x56, 0x78, 0x90, 74 0x34, 0x56, 0x78, 0x90,
63 0x32, 0x43, 0x54, 0x65, 75 0x32, 0x43, 0x54, 0x65,
64 0xbe, 0xde, 0x00, 0x01, 76 0xbe, 0xde, 0x00, 0x01,
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 packet.SetPayloadType(kPayloadType); 122 packet.SetPayloadType(kPayloadType);
111 packet.SetSequenceNumber(kSeqNum); 123 packet.SetSequenceNumber(kSeqNum);
112 packet.SetTimestamp(kTimestamp); 124 packet.SetTimestamp(kTimestamp);
113 packet.SetSsrc(kSsrc); 125 packet.SetSsrc(kSsrc);
114 packet.SetExtension<TransmissionOffset>(kTimeOffset); 126 packet.SetExtension<TransmissionOffset>(kTimeOffset);
115 packet.SetExtension<AudioLevel>(kVoiceActive, kAudioLevel); 127 packet.SetExtension<AudioLevel>(kVoiceActive, kAudioLevel);
116 EXPECT_THAT(kPacketWithTOAndAL, 128 EXPECT_THAT(kPacketWithTOAndAL,
117 ElementsAreArray(packet.data(), packet.size())); 129 ElementsAreArray(packet.data(), packet.size()));
118 } 130 }
119 131
132 TEST(RtpPacketTest, CreateWithDynamicSizedExtensions) {
133 RtpPacketToSend::ExtensionManager extensions;
134 extensions.Register<RtpStreamId>(kRtpStreamIdExtensionId);
135 RtpPacketToSend packet(&extensions);
136 packet.SetPayloadType(kPayloadType);
137 packet.SetSequenceNumber(kSeqNum);
138 packet.SetTimestamp(kTimestamp);
139 packet.SetSsrc(kSsrc);
140 packet.SetExtension<RtpStreamId>(kStreamId);
141 EXPECT_THAT(kPacketWithRsid, ElementsAreArray(packet.data(), packet.size()));
142 }
143
144 TEST(RtpPacketTest, TryToCreateWithEmptyRsid) {
145 RtpPacketToSend::ExtensionManager extensions;
146 extensions.Register<RtpStreamId>(kRtpStreamIdExtensionId);
147 RtpPacketToSend packet(&extensions);
148 EXPECT_FALSE(packet.SetExtension<RtpStreamId>(""));
149 }
150
151 TEST(RtpPacketTest, TryToCreateWithLongRsid) {
152 RtpPacketToSend::ExtensionManager extensions;
153 constexpr char kLongStreamId[] = "LoooooooooongRsid";
154 ASSERT_EQ(strlen(kLongStreamId), 17u);
155 extensions.Register<RtpStreamId>(kRtpStreamIdExtensionId);
156 RtpPacketToSend packet(&extensions);
157 EXPECT_FALSE(packet.SetExtension<RtpStreamId>(kLongStreamId));
158 }
159
120 TEST(RtpPacketTest, CreateWithExtensionsWithoutManager) { 160 TEST(RtpPacketTest, CreateWithExtensionsWithoutManager) {
121 RtpPacketToSend packet(nullptr); 161 RtpPacketToSend packet(nullptr);
122 packet.SetPayloadType(kPayloadType); 162 packet.SetPayloadType(kPayloadType);
123 packet.SetSequenceNumber(kSeqNum); 163 packet.SetSequenceNumber(kSeqNum);
124 packet.SetTimestamp(kTimestamp); 164 packet.SetTimestamp(kTimestamp);
125 packet.SetSsrc(kSsrc); 165 packet.SetSsrc(kSsrc);
126 166
127 auto raw = packet.AllocateRawExtension(kTransmissionOffsetExtensionId, 167 auto raw = packet.AllocateRawExtension(kTransmissionOffsetExtensionId,
128 TransmissionOffset::kValueSizeBytes); 168 TransmissionOffset::kValueSizeBytes);
129 EXPECT_EQ(raw.size(), TransmissionOffset::kValueSizeBytes); 169 EXPECT_EQ(raw.size(), TransmissionOffset::kValueSizeBytes);
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after
414 ASSERT_TRUE(packet.Parse(kPacket, sizeof(kPacket))); 454 ASSERT_TRUE(packet.Parse(kPacket, sizeof(kPacket)));
415 455
416 EXPECT_FALSE(packet.HasRawExtension(kInvalidId)); 456 EXPECT_FALSE(packet.HasRawExtension(kInvalidId));
417 EXPECT_THAT(packet.GetRawExtension(kInvalidId), IsEmpty()); 457 EXPECT_THAT(packet.GetRawExtension(kInvalidId), IsEmpty());
418 const uint8_t kExtension[] = {'e', 'x', 't'}; 458 const uint8_t kExtension[] = {'e', 'x', 't'};
419 EXPECT_FALSE(packet.SetRawExtension(kInvalidId, kExtension)); 459 EXPECT_FALSE(packet.SetRawExtension(kInvalidId, kExtension));
420 EXPECT_THAT(packet.AllocateRawExtension(kInvalidId, 3), IsEmpty()); 460 EXPECT_THAT(packet.AllocateRawExtension(kInvalidId, 3), IsEmpty());
421 } 461 }
422 462
423 } // namespace webrtc 463 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtp_packet.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698