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

Side by Side Diff: modules/rtp_rtcp/test/testFec/test_fec.cc

Issue 3012243002: Change ForwardErrorCorrection class to accept one received packet at a time. (Closed)
Patch Set: Rebased. Created 3 years, 3 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 | « modules/rtp_rtcp/source/ulpfec_receiver_impl.cc ('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) 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 17 matching lines...) Expand all
28 // #define VERBOSE_OUTPUT 28 // #define VERBOSE_OUTPUT
29 29
30 namespace webrtc { 30 namespace webrtc {
31 namespace fec_private_tables { 31 namespace fec_private_tables {
32 extern const uint8_t** kPacketMaskBurstyTbl[12]; 32 extern const uint8_t** kPacketMaskBurstyTbl[12];
33 } 33 }
34 namespace test { 34 namespace test {
35 using fec_private_tables::kPacketMaskBurstyTbl; 35 using fec_private_tables::kPacketMaskBurstyTbl;
36 36
37 void ReceivePackets( 37 void ReceivePackets(
38 ForwardErrorCorrection::ReceivedPacketList* to_decode_list, 38 std::vector<std::unique_ptr<ForwardErrorCorrection::ReceivedPacket>>*
39 ForwardErrorCorrection::ReceivedPacketList* received_packet_list, 39 to_decode_list,
40 std::vector<std::unique_ptr<ForwardErrorCorrection::ReceivedPacket>>*
41 received_packet_list,
40 size_t num_packets_to_decode, 42 size_t num_packets_to_decode,
41 float reorder_rate, 43 float reorder_rate,
42 float duplicate_rate, 44 float duplicate_rate,
43 Random* random) { 45 Random* random) {
44 RTC_DCHECK(to_decode_list->empty()); 46 RTC_DCHECK(to_decode_list->empty());
45 RTC_DCHECK_LE(num_packets_to_decode, received_packet_list->size()); 47 RTC_DCHECK_LE(num_packets_to_decode, received_packet_list->size());
46 48
47 for (size_t i = 0; i < num_packets_to_decode; i++) { 49 for (size_t i = 0; i < num_packets_to_decode; i++) {
48 auto it = received_packet_list->begin(); 50 auto it = received_packet_list->begin();
49 // Reorder packets. 51 // Reorder packets.
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 // Maximum number of media packets allowed for the mask type. 98 // Maximum number of media packets allowed for the mask type.
97 const uint16_t kMaxMediaPackets[] = { 99 const uint16_t kMaxMediaPackets[] = {
98 kMaxNumberMediaPackets, 100 kMaxNumberMediaPackets,
99 sizeof(kPacketMaskBurstyTbl) / sizeof(*kPacketMaskBurstyTbl)}; 101 sizeof(kPacketMaskBurstyTbl) / sizeof(*kPacketMaskBurstyTbl)};
100 102
101 ASSERT_EQ(12, kMaxMediaPackets[1]) << "Max media packets for bursty mode not " 103 ASSERT_EQ(12, kMaxMediaPackets[1]) << "Max media packets for bursty mode not "
102 << "equal to 12."; 104 << "equal to 12.";
103 105
104 ForwardErrorCorrection::PacketList media_packet_list; 106 ForwardErrorCorrection::PacketList media_packet_list;
105 std::list<ForwardErrorCorrection::Packet*> fec_packet_list; 107 std::list<ForwardErrorCorrection::Packet*> fec_packet_list;
106 ForwardErrorCorrection::ReceivedPacketList to_decode_list; 108 std::vector<std::unique_ptr<ForwardErrorCorrection::ReceivedPacket>>
107 ForwardErrorCorrection::ReceivedPacketList received_packet_list; 109 to_decode_list;
110 std::vector<std::unique_ptr<ForwardErrorCorrection::ReceivedPacket>>
111 received_packet_list;
108 ForwardErrorCorrection::RecoveredPacketList recovered_packet_list; 112 ForwardErrorCorrection::RecoveredPacketList recovered_packet_list;
109 std::list<uint8_t*> fec_mask_list; 113 std::list<uint8_t*> fec_mask_list;
110 114
111 // Running over only two loss rates to limit execution time. 115 // Running over only two loss rates to limit execution time.
112 const float loss_rate[] = {0.05f, 0.01f}; 116 const float loss_rate[] = {0.05f, 0.01f};
113 const uint32_t loss_rate_size = sizeof(loss_rate) / sizeof(*loss_rate); 117 const uint32_t loss_rate_size = sizeof(loss_rate) / sizeof(*loss_rate);
114 const float reorder_rate = 0.1f; 118 const float reorder_rate = 0.1f;
115 const float duplicate_rate = 0.1f; 119 const float duplicate_rate = 0.1f;
116 120
117 uint8_t media_loss_mask[kMaxNumberMediaPackets]; 121 uint8_t media_loss_mask[kMaxNumberMediaPackets];
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after
396 num_packets_to_decode, reorder_rate, 400 num_packets_to_decode, reorder_rate,
397 duplicate_rate, &random); 401 duplicate_rate, &random);
398 402
399 if (fec_packet_received == false) { 403 if (fec_packet_received == false) {
400 for (const auto& received_packet : to_decode_list) { 404 for (const auto& received_packet : to_decode_list) {
401 if (received_packet->is_fec) { 405 if (received_packet->is_fec) {
402 fec_packet_received = true; 406 fec_packet_received = true;
403 } 407 }
404 } 408 }
405 } 409 }
406 ASSERT_EQ(0, 410 for (const auto& received_packet : to_decode_list) {
407 fec->DecodeFec(&to_decode_list, &recovered_packet_list)) 411 fec->DecodeFec(*received_packet, &recovered_packet_list);
408 << "DecodeFec() failed"; 412 }
409 ASSERT_TRUE(to_decode_list.empty()) 413 to_decode_list.clear();
410 << "Received packet list is not empty.";
411 } 414 }
412 media_packet_idx = 0; 415 media_packet_idx = 0;
413 for (const auto& media_packet : media_packet_list) { 416 for (const auto& media_packet : media_packet_list) {
414 if (media_loss_mask[media_packet_idx] == 1) { 417 if (media_loss_mask[media_packet_idx] == 1) {
415 // Should have recovered this packet. 418 // Should have recovered this packet.
416 auto recovered_packet_list_it = recovered_packet_list.cbegin(); 419 auto recovered_packet_list_it = recovered_packet_list.cbegin();
417 420
418 ASSERT_FALSE(recovered_packet_list_it == 421 ASSERT_FALSE(recovered_packet_list_it ==
419 recovered_packet_list.end()) 422 recovered_packet_list.end())
420 << "Insufficient number of recovered packets."; 423 << "Insufficient number of recovered packets.";
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
466 TEST(FecTest, UlpfecTest) { 469 TEST(FecTest, UlpfecTest) {
467 RunTest(false); 470 RunTest(false);
468 } 471 }
469 472
470 TEST(FecTest, FlexfecTest) { 473 TEST(FecTest, FlexfecTest) {
471 RunTest(true); 474 RunTest(true);
472 } 475 }
473 476
474 } // namespace test 477 } // namespace test
475 } // namespace webrtc 478 } // namespace webrtc
OLDNEW
« no previous file with comments | « modules/rtp_rtcp/source/ulpfec_receiver_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698