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

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

Issue 2490523002: Wire up FlexfecSender in RTPSenderVideo. (Closed)
Patch Set: Feedback response 2. Created 4 years, 1 month 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
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 10
(...skipping 14 matching lines...) Expand all
25 25
26 using test::fec::AugmentedPacket; 26 using test::fec::AugmentedPacket;
27 using test::fec::AugmentedPacketGenerator; 27 using test::fec::AugmentedPacketGenerator;
28 28
29 constexpr int kFlexfecPayloadType = 123; 29 constexpr int kFlexfecPayloadType = 123;
30 constexpr uint32_t kMediaSsrc = 1234; 30 constexpr uint32_t kMediaSsrc = 1234;
31 constexpr uint32_t kFlexfecSsrc = 5678; 31 constexpr uint32_t kFlexfecSsrc = 5678;
32 const std::vector<RtpExtension> kNoRtpHeaderExtensions; 32 const std::vector<RtpExtension> kNoRtpHeaderExtensions;
33 // Assume a single protected media SSRC. 33 // Assume a single protected media SSRC.
34 constexpr size_t kFlexfecMaxHeaderSize = 32; 34 constexpr size_t kFlexfecMaxHeaderSize = 32;
35 constexpr size_t kRtpHeaderExtensionBaseHeaderSize = 4;
35 constexpr size_t kPayloadLength = 50; 36 constexpr size_t kPayloadLength = 50;
36 37
37 constexpr int64_t kInitialSimulatedClockTime = 1; 38 constexpr int64_t kInitialSimulatedClockTime = 1;
38 // These values are deterministically given by the PRNG, due to our fixed seed. 39 // These values are deterministically given by the PRNG, due to our fixed seed.
39 // They should be updated if the PRNG implementation changes. 40 // They should be updated if the PRNG implementation changes.
40 constexpr uint16_t kDeterministicSequenceNumber = 28732; 41 constexpr uint16_t kDeterministicSequenceNumber = 28732;
41 constexpr uint32_t kDeterministicTimestamp = 2305613085; 42 constexpr uint32_t kDeterministicTimestamp = 2305613085;
42 43
43 std::unique_ptr<RtpPacketToSend> GenerateSingleFlexfecPacket( 44 std::unique_ptr<RtpPacketToSend> GenerateSingleFlexfecPacket(
44 FlexfecSender* sender) { 45 FlexfecSender* sender) {
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 EXPECT_EQ(kFlexfecSsrc, fec_packet->Ssrc()); 174 EXPECT_EQ(kFlexfecSsrc, fec_packet->Ssrc());
174 } 175 }
175 } 176 }
176 177
177 // In the tests, we only consider RTP header extensions that are useful for BWE. 178 // In the tests, we only consider RTP header extensions that are useful for BWE.
178 TEST(FlexfecSenderTest, NoRtpHeaderExtensionsForBweByDefault) { 179 TEST(FlexfecSenderTest, NoRtpHeaderExtensionsForBweByDefault) {
179 const std::vector<RtpExtension> kRtpHeaderExtensions{}; 180 const std::vector<RtpExtension> kRtpHeaderExtensions{};
180 SimulatedClock clock(kInitialSimulatedClockTime); 181 SimulatedClock clock(kInitialSimulatedClockTime);
181 FlexfecSender sender(kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc, 182 FlexfecSender sender(kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc,
182 kRtpHeaderExtensions, &clock); 183 kRtpHeaderExtensions, &clock);
184 EXPECT_EQ(kRtpHeaderSize, sender.RtpHeaderLength());
183 auto fec_packet = GenerateSingleFlexfecPacket(&sender); 185 auto fec_packet = GenerateSingleFlexfecPacket(&sender);
184 186
185 EXPECT_FALSE(fec_packet->HasExtension<AbsoluteSendTime>()); 187 EXPECT_FALSE(fec_packet->HasExtension<AbsoluteSendTime>());
186 EXPECT_FALSE(fec_packet->HasExtension<TransmissionOffset>()); 188 EXPECT_FALSE(fec_packet->HasExtension<TransmissionOffset>());
187 EXPECT_FALSE(fec_packet->HasExtension<TransportSequenceNumber>()); 189 EXPECT_FALSE(fec_packet->HasExtension<TransportSequenceNumber>());
188 } 190 }
189 191
190 TEST(FlexfecSenderTest, RegisterAbsoluteSendTimeRtpHeaderExtension) { 192 TEST(FlexfecSenderTest, RegisterAbsoluteSendTimeRtpHeaderExtension) {
191 const std::vector<RtpExtension> kRtpHeaderExtensions{ 193 const std::vector<RtpExtension> kRtpHeaderExtensions{
192 {RtpExtension::kAbsSendTimeUri, 1}}; 194 {RtpExtension::kAbsSendTimeUri, 1}};
193 SimulatedClock clock(kInitialSimulatedClockTime); 195 SimulatedClock clock(kInitialSimulatedClockTime);
194 FlexfecSender sender(kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc, 196 FlexfecSender sender(kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc,
195 kRtpHeaderExtensions, &clock); 197 kRtpHeaderExtensions, &clock);
198 EXPECT_EQ(kRtpHeaderSize + kRtpHeaderExtensionBaseHeaderSize + 4U,
199 sender.RtpHeaderLength());
196 auto fec_packet = GenerateSingleFlexfecPacket(&sender); 200 auto fec_packet = GenerateSingleFlexfecPacket(&sender);
197 201
198 EXPECT_TRUE(fec_packet->HasExtension<AbsoluteSendTime>()); 202 EXPECT_TRUE(fec_packet->HasExtension<AbsoluteSendTime>());
199 EXPECT_FALSE(fec_packet->HasExtension<TransmissionOffset>()); 203 EXPECT_FALSE(fec_packet->HasExtension<TransmissionOffset>());
200 EXPECT_FALSE(fec_packet->HasExtension<TransportSequenceNumber>()); 204 EXPECT_FALSE(fec_packet->HasExtension<TransportSequenceNumber>());
201 } 205 }
202 206
203 TEST(FlexfecSenderTest, RegisterTransmissionOffsetRtpHeaderExtension) { 207 TEST(FlexfecSenderTest, RegisterTransmissionOffsetRtpHeaderExtension) {
204 const std::vector<RtpExtension> kRtpHeaderExtensions{ 208 const std::vector<RtpExtension> kRtpHeaderExtensions{
205 {RtpExtension::kTimestampOffsetUri, 1}}; 209 {RtpExtension::kTimestampOffsetUri, 1}};
206 SimulatedClock clock(kInitialSimulatedClockTime); 210 SimulatedClock clock(kInitialSimulatedClockTime);
207 FlexfecSender sender(kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc, 211 FlexfecSender sender(kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc,
208 kRtpHeaderExtensions, &clock); 212 kRtpHeaderExtensions, &clock);
213 EXPECT_EQ(kRtpHeaderSize + kRtpHeaderExtensionBaseHeaderSize + 4U,
214 sender.RtpHeaderLength());
209 auto fec_packet = GenerateSingleFlexfecPacket(&sender); 215 auto fec_packet = GenerateSingleFlexfecPacket(&sender);
210 216
211 EXPECT_FALSE(fec_packet->HasExtension<AbsoluteSendTime>()); 217 EXPECT_FALSE(fec_packet->HasExtension<AbsoluteSendTime>());
212 EXPECT_TRUE(fec_packet->HasExtension<TransmissionOffset>()); 218 EXPECT_TRUE(fec_packet->HasExtension<TransmissionOffset>());
213 EXPECT_FALSE(fec_packet->HasExtension<TransportSequenceNumber>()); 219 EXPECT_FALSE(fec_packet->HasExtension<TransportSequenceNumber>());
214 } 220 }
215 221
216 TEST(FlexfecSenderTest, RegisterTransportSequenceNumberRtpHeaderExtension) { 222 TEST(FlexfecSenderTest, RegisterTransportSequenceNumberRtpHeaderExtension) {
217 const std::vector<RtpExtension> kRtpHeaderExtensions{ 223 const std::vector<RtpExtension> kRtpHeaderExtensions{
218 {RtpExtension::kTransportSequenceNumberUri, 1}}; 224 {RtpExtension::kTransportSequenceNumberUri, 1}};
219 SimulatedClock clock(kInitialSimulatedClockTime); 225 SimulatedClock clock(kInitialSimulatedClockTime);
220 FlexfecSender sender(kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc, 226 FlexfecSender sender(kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc,
221 kRtpHeaderExtensions, &clock); 227 kRtpHeaderExtensions, &clock);
228 EXPECT_EQ(kRtpHeaderSize + kRtpHeaderExtensionBaseHeaderSize + 4U,
229 sender.RtpHeaderLength());
222 auto fec_packet = GenerateSingleFlexfecPacket(&sender); 230 auto fec_packet = GenerateSingleFlexfecPacket(&sender);
223 231
224 EXPECT_FALSE(fec_packet->HasExtension<AbsoluteSendTime>()); 232 EXPECT_FALSE(fec_packet->HasExtension<AbsoluteSendTime>());
225 EXPECT_FALSE(fec_packet->HasExtension<TransmissionOffset>()); 233 EXPECT_FALSE(fec_packet->HasExtension<TransmissionOffset>());
226 EXPECT_TRUE(fec_packet->HasExtension<TransportSequenceNumber>()); 234 EXPECT_TRUE(fec_packet->HasExtension<TransportSequenceNumber>());
227 } 235 }
228 236
229 TEST(FlexfecSenderTest, RegisterAllRtpHeaderExtensionsForBwe) { 237 TEST(FlexfecSenderTest, RegisterAllRtpHeaderExtensionsForBwe) {
230 const std::vector<RtpExtension> kRtpHeaderExtensions{ 238 const std::vector<RtpExtension> kRtpHeaderExtensions{
231 {RtpExtension::kAbsSendTimeUri, 1}, 239 {RtpExtension::kAbsSendTimeUri, 1},
232 {RtpExtension::kTimestampOffsetUri, 2}, 240 {RtpExtension::kTimestampOffsetUri, 2},
233 {RtpExtension::kTransportSequenceNumberUri, 3}}; 241 {RtpExtension::kTransportSequenceNumberUri, 3}};
234 SimulatedClock clock(kInitialSimulatedClockTime); 242 SimulatedClock clock(kInitialSimulatedClockTime);
235 FlexfecSender sender(kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc, 243 FlexfecSender sender(kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc,
236 kRtpHeaderExtensions, &clock); 244 kRtpHeaderExtensions, &clock);
245 EXPECT_EQ(kRtpHeaderSize + kRtpHeaderExtensionBaseHeaderSize + 3 * 4U,
246 sender.RtpHeaderLength());
237 auto fec_packet = GenerateSingleFlexfecPacket(&sender); 247 auto fec_packet = GenerateSingleFlexfecPacket(&sender);
238 248
239 EXPECT_TRUE(fec_packet->HasExtension<AbsoluteSendTime>()); 249 EXPECT_TRUE(fec_packet->HasExtension<AbsoluteSendTime>());
240 EXPECT_TRUE(fec_packet->HasExtension<TransmissionOffset>()); 250 EXPECT_TRUE(fec_packet->HasExtension<TransmissionOffset>());
241 EXPECT_TRUE(fec_packet->HasExtension<TransportSequenceNumber>()); 251 EXPECT_TRUE(fec_packet->HasExtension<TransportSequenceNumber>());
242 } 252 }
243 253
244 TEST(FlexfecSenderTest, MaxPacketOverhead) { 254 TEST(FlexfecSenderTest, MaxPacketOverhead) {
245 SimulatedClock clock(kInitialSimulatedClockTime); 255 SimulatedClock clock(kInitialSimulatedClockTime);
246 FlexfecSender sender(kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc, 256 FlexfecSender sender(kFlexfecPayloadType, kFlexfecSsrc, kMediaSsrc,
247 kNoRtpHeaderExtensions, &clock); 257 kNoRtpHeaderExtensions, &clock);
248 258
249 EXPECT_EQ(kFlexfecMaxHeaderSize, sender.MaxPacketOverhead()); 259 EXPECT_EQ(kFlexfecMaxHeaderSize, sender.MaxPacketOverhead());
250 } 260 }
251 261
252 } // namespace webrtc 262 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698