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

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

Issue 2886813002: Delete RtpData::OnRecoveredPacket, use RecoveredPacketReceiver instead. (Closed)
Patch Set: Comment update. 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
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 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 18 matching lines...) Expand all
29 using ::testing::Args; 29 using ::testing::Args;
30 using ::testing::ElementsAreArray; 30 using ::testing::ElementsAreArray;
31 using ::testing::Return; 31 using ::testing::Return;
32 32
33 using test::fec::AugmentedPacket; 33 using test::fec::AugmentedPacket;
34 using Packet = ForwardErrorCorrection::Packet; 34 using Packet = ForwardErrorCorrection::Packet;
35 using test::fec::UlpfecPacketGenerator; 35 using test::fec::UlpfecPacketGenerator;
36 36
37 constexpr int kFecPayloadType = 96; 37 constexpr int kFecPayloadType = 96;
38 constexpr uint32_t kMediaSsrc = 835424; 38 constexpr uint32_t kMediaSsrc = 835424;
39
40 class MockRecoveredPacketReceiver : public RecoveredPacketReceiver {
brandtr 2017/05/22 12:54:36 You can reuse this class: https://cs.chromium.org/
nisse-webrtc 2017/05/22 13:08:05 Done.
41 public:
42 MOCK_METHOD2(OnRecoveredPacket,
43 void(const uint8_t* packet, size_t packet_length));
44 };
45
46 class NullRecoveredPacketReceiver : public RecoveredPacketReceiver {
47 public:
48 void OnRecoveredPacket(const uint8_t* packet, size_t length) override {}
49 };
50
39 } // namespace 51 } // namespace
40 52
41 class UlpfecReceiverTest : public ::testing::Test { 53 class UlpfecReceiverTest : public ::testing::Test {
42 protected: 54 protected:
43 UlpfecReceiverTest() 55 UlpfecReceiverTest()
44 : fec_(ForwardErrorCorrection::CreateUlpfec()), 56 : fec_(ForwardErrorCorrection::CreateUlpfec()),
45 receiver_fec_(UlpfecReceiver::Create(&rtp_data_callback_)), 57 receiver_fec_(UlpfecReceiver::Create(&recovered_packet_receiver_)),
46 packet_generator_(kMediaSsrc) {} 58 packet_generator_(kMediaSsrc) {}
47 59
48 // Generates |num_fec_packets| FEC packets, given |media_packets|. 60 // Generates |num_fec_packets| FEC packets, given |media_packets|.
49 void EncodeFec(const ForwardErrorCorrection::PacketList& media_packets, 61 void EncodeFec(const ForwardErrorCorrection::PacketList& media_packets,
50 size_t num_fec_packets, 62 size_t num_fec_packets,
51 std::list<ForwardErrorCorrection::Packet*>* fec_packets); 63 std::list<ForwardErrorCorrection::Packet*>* fec_packets);
52 64
53 // Generates |num_media_packets| corresponding to a single frame. 65 // Generates |num_media_packets| corresponding to a single frame.
54 void PacketizeFrame(size_t num_media_packets, 66 void PacketizeFrame(size_t num_media_packets,
55 size_t frame_offset, 67 size_t frame_offset,
56 std::list<AugmentedPacket*>* augmented_packets, 68 std::list<AugmentedPacket*>* augmented_packets,
57 ForwardErrorCorrection::PacketList* packets); 69 ForwardErrorCorrection::PacketList* packets);
58 70
59 // Build a media packet using |packet_generator_| and add it 71 // Build a media packet using |packet_generator_| and add it
60 // to the receiver. 72 // to the receiver.
61 void BuildAndAddRedMediaPacket(AugmentedPacket* packet); 73 void BuildAndAddRedMediaPacket(AugmentedPacket* packet);
62 74
63 // Build a FEC packet using |packet_generator_| and add it 75 // Build a FEC packet using |packet_generator_| and add it
64 // to the receiver. 76 // to the receiver.
65 void BuildAndAddRedFecPacket(Packet* packet); 77 void BuildAndAddRedFecPacket(Packet* packet);
66 78
67 // Ensure that |rtp_data_callback_| will be called correctly 79 // Ensure that |recovered_packet_receiver_| will be called correctly
68 // and that the recovered packet will be identical to the lost packet. 80 // and that the recovered packet will be identical to the lost packet.
69 void VerifyReconstructedMediaPacket(const AugmentedPacket& packet, 81 void VerifyReconstructedMediaPacket(const AugmentedPacket& packet,
70 size_t times); 82 size_t times);
71 83
72 void InjectGarbagePacketLength(size_t fec_garbage_offset); 84 void InjectGarbagePacketLength(size_t fec_garbage_offset);
73 85
74 static void SurvivesMaliciousPacket(const uint8_t* data, 86 static void SurvivesMaliciousPacket(const uint8_t* data,
75 size_t length, 87 size_t length,
76 uint8_t ulpfec_payload_type); 88 uint8_t ulpfec_payload_type);
77 89
78 MockRtpData rtp_data_callback_; 90 MockRecoveredPacketReceiver recovered_packet_receiver_;
79 std::unique_ptr<ForwardErrorCorrection> fec_; 91 std::unique_ptr<ForwardErrorCorrection> fec_;
80 std::unique_ptr<UlpfecReceiver> receiver_fec_; 92 std::unique_ptr<UlpfecReceiver> receiver_fec_;
81 UlpfecPacketGenerator packet_generator_; 93 UlpfecPacketGenerator packet_generator_;
82 }; 94 };
83 95
84 void UlpfecReceiverTest::EncodeFec( 96 void UlpfecReceiverTest::EncodeFec(
85 const ForwardErrorCorrection::PacketList& media_packets, 97 const ForwardErrorCorrection::PacketList& media_packets,
86 size_t num_fec_packets, 98 size_t num_fec_packets,
87 std::list<ForwardErrorCorrection::Packet*>* fec_packets) { 99 std::list<ForwardErrorCorrection::Packet*>* fec_packets) {
88 const uint8_t protection_factor = 100 const uint8_t protection_factor =
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 red_packet->header.header, red_packet->data, 139 red_packet->header.header, red_packet->data,
128 red_packet->length, kFecPayloadType)); 140 red_packet->length, kFecPayloadType));
129 } 141 }
130 142
131 void UlpfecReceiverTest::VerifyReconstructedMediaPacket( 143 void UlpfecReceiverTest::VerifyReconstructedMediaPacket(
132 const AugmentedPacket& packet, 144 const AugmentedPacket& packet,
133 size_t times) { 145 size_t times) {
134 // Verify that the content of the reconstructed packet is equal to the 146 // Verify that the content of the reconstructed packet is equal to the
135 // content of |packet|, and that the same content is received |times| number 147 // content of |packet|, and that the same content is received |times| number
136 // of times in a row. 148 // of times in a row.
137 EXPECT_CALL(rtp_data_callback_, OnRecoveredPacket(_, packet.length)) 149 EXPECT_CALL(recovered_packet_receiver_, OnRecoveredPacket(_, packet.length))
138 .With(Args<0, 1>(ElementsAreArray(packet.data, packet.length))) 150 .With(Args<0, 1>(ElementsAreArray(packet.data, packet.length)))
139 .Times(times) 151 .Times(times);
140 .WillRepeatedly(Return(true));
141 } 152 }
142 153
143 void UlpfecReceiverTest::InjectGarbagePacketLength(size_t fec_garbage_offset) { 154 void UlpfecReceiverTest::InjectGarbagePacketLength(size_t fec_garbage_offset) {
144 EXPECT_CALL(rtp_data_callback_, OnRecoveredPacket(_, _)) 155 EXPECT_CALL(recovered_packet_receiver_, OnRecoveredPacket(_, _));
145 .WillRepeatedly(Return(true));
146 156
147 const size_t kNumFecPackets = 1; 157 const size_t kNumFecPackets = 1;
148 std::list<AugmentedPacket*> augmented_media_packets; 158 std::list<AugmentedPacket*> augmented_media_packets;
149 ForwardErrorCorrection::PacketList media_packets; 159 ForwardErrorCorrection::PacketList media_packets;
150 PacketizeFrame(2, 0, &augmented_media_packets, &media_packets); 160 PacketizeFrame(2, 0, &augmented_media_packets, &media_packets);
151 std::list<ForwardErrorCorrection::Packet*> fec_packets; 161 std::list<ForwardErrorCorrection::Packet*> fec_packets;
152 EncodeFec(media_packets, kNumFecPackets, &fec_packets); 162 EncodeFec(media_packets, kNumFecPackets, &fec_packets);
153 ByteWriter<uint16_t>::WriteBigEndian( 163 ByteWriter<uint16_t>::WriteBigEndian(
154 &fec_packets.front()->data[fec_garbage_offset], 0x4711); 164 &fec_packets.front()->data[fec_garbage_offset], 0x4711);
155 165
156 // Inject first media packet, then first FEC packet, skipping the second media 166 // Inject first media packet, then first FEC packet, skipping the second media
157 // packet to cause a recovery from the FEC packet. 167 // packet to cause a recovery from the FEC packet.
158 BuildAndAddRedMediaPacket(augmented_media_packets.front()); 168 BuildAndAddRedMediaPacket(augmented_media_packets.front());
159 BuildAndAddRedFecPacket(fec_packets.front()); 169 BuildAndAddRedFecPacket(fec_packets.front());
160 EXPECT_EQ(0, receiver_fec_->ProcessReceivedFec()); 170 EXPECT_EQ(0, receiver_fec_->ProcessReceivedFec());
161 171
162 FecPacketCounter counter = receiver_fec_->GetPacketCounter(); 172 FecPacketCounter counter = receiver_fec_->GetPacketCounter();
163 EXPECT_EQ(2U, counter.num_packets); 173 EXPECT_EQ(2U, counter.num_packets);
164 EXPECT_EQ(1U, counter.num_fec_packets); 174 EXPECT_EQ(1U, counter.num_fec_packets);
165 EXPECT_EQ(0U, counter.num_recovered_packets); 175 EXPECT_EQ(0U, counter.num_recovered_packets);
166 } 176 }
167 177
168 void UlpfecReceiverTest::SurvivesMaliciousPacket(const uint8_t* data, 178 void UlpfecReceiverTest::SurvivesMaliciousPacket(const uint8_t* data,
169 size_t length, 179 size_t length,
170 uint8_t ulpfec_payload_type) { 180 uint8_t ulpfec_payload_type) {
171 RTPHeader header; 181 RTPHeader header;
172 std::unique_ptr<RtpHeaderParser> parser(RtpHeaderParser::Create()); 182 std::unique_ptr<RtpHeaderParser> parser(RtpHeaderParser::Create());
173 ASSERT_TRUE(parser->Parse(data, length, &header)); 183 ASSERT_TRUE(parser->Parse(data, length, &header));
174 184
175 NullRtpData null_callback; 185 NullRecoveredPacketReceiver null_callback;
176 std::unique_ptr<UlpfecReceiver> receiver_fec( 186 std::unique_ptr<UlpfecReceiver> receiver_fec(
177 UlpfecReceiver::Create(&null_callback)); 187 UlpfecReceiver::Create(&null_callback));
178 188
179 receiver_fec->AddReceivedRedPacket(header, data, length, ulpfec_payload_type); 189 receiver_fec->AddReceivedRedPacket(header, data, length, ulpfec_payload_type);
180 } 190 }
181 191
182 TEST_F(UlpfecReceiverTest, TwoMediaOneFec) { 192 TEST_F(UlpfecReceiverTest, TwoMediaOneFec) {
183 constexpr size_t kNumFecPackets = 1u; 193 constexpr size_t kNumFecPackets = 1u;
184 std::list<AugmentedPacket*> augmented_media_packets; 194 std::list<AugmentedPacket*> augmented_media_packets;
185 ForwardErrorCorrection::PacketList media_packets; 195 ForwardErrorCorrection::PacketList media_packets;
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
338 const size_t kNumFecPacketsBatch1 = 1; 348 const size_t kNumFecPacketsBatch1 = 1;
339 const size_t kNumMediaPacketsBatch1 = 2; 349 const size_t kNumMediaPacketsBatch1 = 2;
340 std::list<AugmentedPacket*> augmented_media_packets_batch1; 350 std::list<AugmentedPacket*> augmented_media_packets_batch1;
341 ForwardErrorCorrection::PacketList media_packets_batch1; 351 ForwardErrorCorrection::PacketList media_packets_batch1;
342 PacketizeFrame(kNumMediaPacketsBatch1, 0, &augmented_media_packets_batch1, 352 PacketizeFrame(kNumMediaPacketsBatch1, 0, &augmented_media_packets_batch1,
343 &media_packets_batch1); 353 &media_packets_batch1);
344 std::list<ForwardErrorCorrection::Packet*> fec_packets; 354 std::list<ForwardErrorCorrection::Packet*> fec_packets;
345 EncodeFec(media_packets_batch1, kNumFecPacketsBatch1, &fec_packets); 355 EncodeFec(media_packets_batch1, kNumFecPacketsBatch1, &fec_packets);
346 356
347 BuildAndAddRedMediaPacket(augmented_media_packets_batch1.front()); 357 BuildAndAddRedMediaPacket(augmented_media_packets_batch1.front());
348 EXPECT_CALL(rtp_data_callback_, OnRecoveredPacket(_, _)) 358 EXPECT_CALL(recovered_packet_receiver_, OnRecoveredPacket(_, _))
349 .Times(1) 359 .Times(1);
350 .WillRepeatedly(Return(true));
351 EXPECT_EQ(0, receiver_fec_->ProcessReceivedFec()); 360 EXPECT_EQ(0, receiver_fec_->ProcessReceivedFec());
352 delayed_fec = fec_packets.front(); 361 delayed_fec = fec_packets.front();
353 362
354 // Fill the FEC decoder. No packets should be dropped. 363 // Fill the FEC decoder. No packets should be dropped.
355 const size_t kNumMediaPacketsBatch2 = 46; 364 const size_t kNumMediaPacketsBatch2 = 46;
356 std::list<AugmentedPacket*> augmented_media_packets_batch2; 365 std::list<AugmentedPacket*> augmented_media_packets_batch2;
357 ForwardErrorCorrection::PacketList media_packets_batch2; 366 ForwardErrorCorrection::PacketList media_packets_batch2;
358 for (size_t i = 0; i < kNumMediaPacketsBatch2; ++i) { 367 for (size_t i = 0; i < kNumMediaPacketsBatch2; ++i) {
359 PacketizeFrame(1, i, &augmented_media_packets_batch2, 368 PacketizeFrame(1, i, &augmented_media_packets_batch2,
360 &media_packets_batch2); 369 &media_packets_batch2);
361 } 370 }
362 for (auto it = augmented_media_packets_batch2.begin(); 371 for (auto it = augmented_media_packets_batch2.begin();
363 it != augmented_media_packets_batch2.end(); ++it) { 372 it != augmented_media_packets_batch2.end(); ++it) {
364 BuildAndAddRedMediaPacket(*it); 373 BuildAndAddRedMediaPacket(*it);
365 EXPECT_CALL(rtp_data_callback_, OnRecoveredPacket(_, _)) 374 EXPECT_CALL(recovered_packet_receiver_, OnRecoveredPacket(_, _))
366 .Times(1) 375 .Times(1);
367 .WillRepeatedly(Return(true));
368 EXPECT_EQ(0, receiver_fec_->ProcessReceivedFec()); 376 EXPECT_EQ(0, receiver_fec_->ProcessReceivedFec());
369 } 377 }
370 378
371 // Add the delayed FEC packet. One packet should be reconstructed. 379 // Add the delayed FEC packet. One packet should be reconstructed.
372 BuildAndAddRedFecPacket(delayed_fec); 380 BuildAndAddRedFecPacket(delayed_fec);
373 EXPECT_CALL(rtp_data_callback_, OnRecoveredPacket(_, _)) 381 EXPECT_CALL(recovered_packet_receiver_, OnRecoveredPacket(_, _))
374 .Times(1) 382 .Times(1);
375 .WillRepeatedly(Return(true));
376 EXPECT_EQ(0, receiver_fec_->ProcessReceivedFec()); 383 EXPECT_EQ(0, receiver_fec_->ProcessReceivedFec());
377 } 384 }
378 385
379 TEST_F(UlpfecReceiverTest, PacketDroppedWhenTooOld) { 386 TEST_F(UlpfecReceiverTest, PacketDroppedWhenTooOld) {
380 // 1 frame with 2 media packets and one FEC packet. One media packet missing. 387 // 1 frame with 2 media packets and one FEC packet. One media packet missing.
381 // Delay the FEC packet. 388 // Delay the FEC packet.
382 Packet* delayed_fec = nullptr; 389 Packet* delayed_fec = nullptr;
383 const size_t kNumFecPacketsBatch1 = 1; 390 const size_t kNumFecPacketsBatch1 = 1;
384 const size_t kNumMediaPacketsBatch1 = 2; 391 const size_t kNumMediaPacketsBatch1 = 2;
385 std::list<AugmentedPacket*> augmented_media_packets_batch1; 392 std::list<AugmentedPacket*> augmented_media_packets_batch1;
386 ForwardErrorCorrection::PacketList media_packets_batch1; 393 ForwardErrorCorrection::PacketList media_packets_batch1;
387 PacketizeFrame(kNumMediaPacketsBatch1, 0, &augmented_media_packets_batch1, 394 PacketizeFrame(kNumMediaPacketsBatch1, 0, &augmented_media_packets_batch1,
388 &media_packets_batch1); 395 &media_packets_batch1);
389 std::list<ForwardErrorCorrection::Packet*> fec_packets; 396 std::list<ForwardErrorCorrection::Packet*> fec_packets;
390 EncodeFec(media_packets_batch1, kNumFecPacketsBatch1, &fec_packets); 397 EncodeFec(media_packets_batch1, kNumFecPacketsBatch1, &fec_packets);
391 398
392 BuildAndAddRedMediaPacket(augmented_media_packets_batch1.front()); 399 BuildAndAddRedMediaPacket(augmented_media_packets_batch1.front());
393 EXPECT_CALL(rtp_data_callback_, OnRecoveredPacket(_, _)) 400 EXPECT_CALL(recovered_packet_receiver_, OnRecoveredPacket(_, _))
394 .Times(1) 401 .Times(1);
395 .WillRepeatedly(Return(true));
396 EXPECT_EQ(0, receiver_fec_->ProcessReceivedFec()); 402 EXPECT_EQ(0, receiver_fec_->ProcessReceivedFec());
397 delayed_fec = fec_packets.front(); 403 delayed_fec = fec_packets.front();
398 404
399 // Fill the FEC decoder and force the last packet to be dropped. 405 // Fill the FEC decoder and force the last packet to be dropped.
400 const size_t kNumMediaPacketsBatch2 = 48; 406 const size_t kNumMediaPacketsBatch2 = 48;
401 std::list<AugmentedPacket*> augmented_media_packets_batch2; 407 std::list<AugmentedPacket*> augmented_media_packets_batch2;
402 ForwardErrorCorrection::PacketList media_packets_batch2; 408 ForwardErrorCorrection::PacketList media_packets_batch2;
403 for (size_t i = 0; i < kNumMediaPacketsBatch2; ++i) { 409 for (size_t i = 0; i < kNumMediaPacketsBatch2; ++i) {
404 PacketizeFrame(1, i, &augmented_media_packets_batch2, 410 PacketizeFrame(1, i, &augmented_media_packets_batch2,
405 &media_packets_batch2); 411 &media_packets_batch2);
406 } 412 }
407 for (auto it = augmented_media_packets_batch2.begin(); 413 for (auto it = augmented_media_packets_batch2.begin();
408 it != augmented_media_packets_batch2.end(); ++it) { 414 it != augmented_media_packets_batch2.end(); ++it) {
409 BuildAndAddRedMediaPacket(*it); 415 BuildAndAddRedMediaPacket(*it);
410 EXPECT_CALL(rtp_data_callback_, OnRecoveredPacket(_, _)) 416 EXPECT_CALL(recovered_packet_receiver_, OnRecoveredPacket(_, _))
411 .Times(1) 417 .Times(1);
412 .WillRepeatedly(Return(true));
413 EXPECT_EQ(0, receiver_fec_->ProcessReceivedFec()); 418 EXPECT_EQ(0, receiver_fec_->ProcessReceivedFec());
414 } 419 }
415 420
416 // Add the delayed FEC packet. No packet should be reconstructed since the 421 // Add the delayed FEC packet. No packet should be reconstructed since the
417 // first media packet of that frame has been dropped due to being too old. 422 // first media packet of that frame has been dropped due to being too old.
418 BuildAndAddRedFecPacket(delayed_fec); 423 BuildAndAddRedFecPacket(delayed_fec);
419 EXPECT_CALL(rtp_data_callback_, OnRecoveredPacket(_, _)).Times(0); 424 EXPECT_CALL(recovered_packet_receiver_, OnRecoveredPacket(_, _)).Times(0);
420 EXPECT_EQ(0, receiver_fec_->ProcessReceivedFec()); 425 EXPECT_EQ(0, receiver_fec_->ProcessReceivedFec());
421 } 426 }
422 427
423 TEST_F(UlpfecReceiverTest, OldFecPacketDropped) { 428 TEST_F(UlpfecReceiverTest, OldFecPacketDropped) {
424 // 49 frames with 2 media packets and one FEC packet. All media packets 429 // 49 frames with 2 media packets and one FEC packet. All media packets
425 // missing. 430 // missing.
426 const size_t kNumMediaPackets = 49 * 2; 431 const size_t kNumMediaPackets = 49 * 2;
427 std::list<AugmentedPacket*> augmented_media_packets; 432 std::list<AugmentedPacket*> augmented_media_packets;
428 ForwardErrorCorrection::PacketList media_packets; 433 ForwardErrorCorrection::PacketList media_packets;
429 for (size_t i = 0; i < kNumMediaPackets / 2; ++i) { 434 for (size_t i = 0; i < kNumMediaPackets / 2; ++i) {
430 std::list<AugmentedPacket*> frame_augmented_media_packets; 435 std::list<AugmentedPacket*> frame_augmented_media_packets;
431 ForwardErrorCorrection::PacketList frame_media_packets; 436 ForwardErrorCorrection::PacketList frame_media_packets;
432 std::list<ForwardErrorCorrection::Packet*> fec_packets; 437 std::list<ForwardErrorCorrection::Packet*> fec_packets;
433 PacketizeFrame(2, 0, &frame_augmented_media_packets, &frame_media_packets); 438 PacketizeFrame(2, 0, &frame_augmented_media_packets, &frame_media_packets);
434 EncodeFec(frame_media_packets, 1, &fec_packets); 439 EncodeFec(frame_media_packets, 1, &fec_packets);
435 for (auto it = fec_packets.begin(); it != fec_packets.end(); ++it) { 440 for (auto it = fec_packets.begin(); it != fec_packets.end(); ++it) {
436 // Only FEC packets inserted. No packets recoverable at this time. 441 // Only FEC packets inserted. No packets recoverable at this time.
437 BuildAndAddRedFecPacket(*it); 442 BuildAndAddRedFecPacket(*it);
438 EXPECT_CALL(rtp_data_callback_, OnRecoveredPacket(_, _)).Times(0); 443 EXPECT_CALL(recovered_packet_receiver_, OnRecoveredPacket(_, _)).Times(0);
439 EXPECT_EQ(0, receiver_fec_->ProcessReceivedFec()); 444 EXPECT_EQ(0, receiver_fec_->ProcessReceivedFec());
440 } 445 }
441 // Move unique_ptr's to media_packets for lifetime management. 446 // Move unique_ptr's to media_packets for lifetime management.
442 media_packets.insert(media_packets.end(), 447 media_packets.insert(media_packets.end(),
443 std::make_move_iterator(frame_media_packets.begin()), 448 std::make_move_iterator(frame_media_packets.begin()),
444 std::make_move_iterator(frame_media_packets.end())); 449 std::make_move_iterator(frame_media_packets.end()));
445 augmented_media_packets.insert(augmented_media_packets.end(), 450 augmented_media_packets.insert(augmented_media_packets.end(),
446 frame_augmented_media_packets.begin(), 451 frame_augmented_media_packets.begin(),
447 frame_augmented_media_packets.end()); 452 frame_augmented_media_packets.end());
448 } 453 }
449 // Insert the oldest media packet. The corresponding FEC packet is too old 454 // Insert the oldest media packet. The corresponding FEC packet is too old
450 // and should have been dropped. Only the media packet we inserted will be 455 // and should have been dropped. Only the media packet we inserted will be
451 // returned. 456 // returned.
452 BuildAndAddRedMediaPacket(augmented_media_packets.front()); 457 BuildAndAddRedMediaPacket(augmented_media_packets.front());
453 EXPECT_CALL(rtp_data_callback_, OnRecoveredPacket(_, _)) 458 EXPECT_CALL(recovered_packet_receiver_, OnRecoveredPacket(_, _))
454 .Times(1) 459 .Times(1);
455 .WillRepeatedly(Return(true));
456 EXPECT_EQ(0, receiver_fec_->ProcessReceivedFec()); 460 EXPECT_EQ(0, receiver_fec_->ProcessReceivedFec());
457 } 461 }
458 462
459 TEST_F(UlpfecReceiverTest, TruncatedPacketWithFBitSet) { 463 TEST_F(UlpfecReceiverTest, TruncatedPacketWithFBitSet) {
460 const uint8_t kTruncatedPacket[] = {0x80, 0x2a, 0x68, 0x71, 0x29, 0xa1, 0x27, 464 const uint8_t kTruncatedPacket[] = {0x80, 0x2a, 0x68, 0x71, 0x29, 0xa1, 0x27,
461 0x3a, 0x29, 0x12, 0x2a, 0x98, 0xe0, 0x29}; 465 0x3a, 0x29, 0x12, 0x2a, 0x98, 0xe0, 0x29};
462 466
463 SurvivesMaliciousPacket(kTruncatedPacket, sizeof(kTruncatedPacket), 100); 467 SurvivesMaliciousPacket(kTruncatedPacket, sizeof(kTruncatedPacket), 100);
464 } 468 }
465 469
(...skipping 10 matching lines...) Expand all
476 480
477 TEST_F(UlpfecReceiverTest, TruncatedPacketWithoutDataPastFirstBlock) { 481 TEST_F(UlpfecReceiverTest, TruncatedPacketWithoutDataPastFirstBlock) {
478 const uint8_t kPacket[] = { 482 const uint8_t kPacket[] = {
479 0x82, 0x38, 0x92, 0x38, 0x92, 0x38, 0xde, 0x2a, 0x11, 0xc8, 0xa3, 0xc4, 483 0x82, 0x38, 0x92, 0x38, 0x92, 0x38, 0xde, 0x2a, 0x11, 0xc8, 0xa3, 0xc4,
480 0x82, 0x38, 0x2a, 0x21, 0x2a, 0x28, 0x92, 0x38, 0x92, 0x00, 0x00, 0x0a, 484 0x82, 0x38, 0x2a, 0x21, 0x2a, 0x28, 0x92, 0x38, 0x92, 0x00, 0x00, 0x0a,
481 0x3a, 0xc8, 0xa3, 0x3a, 0x27, 0xc4, 0x2a, 0x21, 0x2a, 0x28}; 485 0x3a, 0xc8, 0xa3, 0x3a, 0x27, 0xc4, 0x2a, 0x21, 0x2a, 0x28};
482 SurvivesMaliciousPacket(kPacket, sizeof(kPacket), 100); 486 SurvivesMaliciousPacket(kPacket, sizeof(kPacket), 100);
483 } 487 }
484 488
485 } // namespace webrtc 489 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698