| Index: webrtc/modules/rtp_rtcp/source/rtp_fec_unittest.cc
|
| diff --git a/webrtc/modules/rtp_rtcp/source/rtp_fec_unittest.cc b/webrtc/modules/rtp_rtcp/source/rtp_fec_unittest.cc
|
| index 228c19fe4c6334ca6325fc00f016faa19574e343..198877df26f20e1847cefc202d5976dd5a37c788 100644
|
| --- a/webrtc/modules/rtp_rtcp/source/rtp_fec_unittest.cc
|
| +++ b/webrtc/modules/rtp_rtcp/source/rtp_fec_unittest.cc
|
| @@ -8,6 +8,7 @@
|
| * be found in the AUTHORS file in the root of the source tree.
|
| */
|
|
|
| +#include <algorithm>
|
| #include <list>
|
|
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| @@ -99,7 +100,7 @@ TEST_F(RtpFecTest, FecRecoveryNoLoss) {
|
|
|
| fec_seq_num_ = ConstructMediaPackets(kNumMediaPackets);
|
|
|
| - EXPECT_EQ(0, fec_->GenerateFEC(media_packet_list_, kProtectionFactor,
|
| + EXPECT_EQ(0, fec_->GenerateFec(media_packet_list_, kProtectionFactor,
|
| kNumImportantPackets, kUseUnequalProtection,
|
| webrtc::kFecMaskBursty, &fec_packet_list_));
|
|
|
| @@ -111,7 +112,7 @@ TEST_F(RtpFecTest, FecRecoveryNoLoss) {
|
| memset(fec_loss_mask_, 0, sizeof(fec_loss_mask_));
|
| NetworkReceivedPackets();
|
|
|
| - EXPECT_EQ(0, fec_->DecodeFEC(&received_packet_list_,
|
| + EXPECT_EQ(0, fec_->DecodeFec(&received_packet_list_,
|
| &recovered_packet_list_));
|
|
|
| // No packets lost, expect complete recovery.
|
| @@ -126,7 +127,7 @@ TEST_F(RtpFecTest, FecRecoveryWithLoss) {
|
|
|
| fec_seq_num_ = ConstructMediaPackets(kNumMediaPackets);
|
|
|
| - EXPECT_EQ(0, fec_->GenerateFEC(media_packet_list_, kProtectionFactor,
|
| + EXPECT_EQ(0, fec_->GenerateFec(media_packet_list_, kProtectionFactor,
|
| kNumImportantPackets, kUseUnequalProtection,
|
| webrtc::kFecMaskBursty, &fec_packet_list_));
|
|
|
| @@ -140,7 +141,7 @@ TEST_F(RtpFecTest, FecRecoveryWithLoss) {
|
| NetworkReceivedPackets();
|
|
|
| EXPECT_EQ(0,
|
| - fec_->DecodeFEC(&received_packet_list_, &recovered_packet_list_));
|
| + fec_->DecodeFec(&received_packet_list_, &recovered_packet_list_));
|
|
|
| // One packet lost, one FEC packet, expect complete recovery.
|
| EXPECT_TRUE(IsRecoveryComplete());
|
| @@ -153,7 +154,7 @@ TEST_F(RtpFecTest, FecRecoveryWithLoss) {
|
| media_loss_mask_[3] = 1;
|
| NetworkReceivedPackets();
|
|
|
| - EXPECT_EQ(0, fec_->DecodeFEC(&received_packet_list_,
|
| + EXPECT_EQ(0, fec_->DecodeFec(&received_packet_list_,
|
| &recovered_packet_list_));
|
|
|
| // 2 packets lost, one FEC packet, cannot get complete recovery.
|
| @@ -176,7 +177,7 @@ TEST_F(RtpFecTest, FecRecoveryWithSeqNumGapTwoFrames) {
|
| // Construct media packets for first frame, starting at sequence number 0.
|
| fec_seq_num_ = ConstructMediaPacketsSeqNum(2, 0);
|
|
|
| - EXPECT_EQ(0, fec_->GenerateFEC(media_packet_list_, kProtectionFactor,
|
| + EXPECT_EQ(0, fec_->GenerateFec(media_packet_list_, kProtectionFactor,
|
| kNumImportantPackets, kUseUnequalProtection,
|
| webrtc::kFecMaskBursty, &fec_packet_list_));
|
| // Expect 1 FEC packet.
|
| @@ -200,7 +201,7 @@ TEST_F(RtpFecTest, FecRecoveryWithSeqNumGapTwoFrames) {
|
| ReceivedPackets(media_packet_list_, media_loss_mask_, false);
|
|
|
| EXPECT_EQ(0,
|
| - fec_->DecodeFEC(&received_packet_list_, &recovered_packet_list_));
|
| + fec_->DecodeFec(&received_packet_list_, &recovered_packet_list_));
|
|
|
| // Expect that no decoding is done to get missing packet (seq#0) of second
|
| // frame, using old FEC packet (seq#2) from first (old) frame. So number of
|
| @@ -222,7 +223,7 @@ TEST_F(RtpFecTest, FecRecoveryWithSeqNumGapOneFrameRecovery) {
|
| // #65534(media) #65535(media) #0(media) #1(FEC).
|
| fec_seq_num_ = ConstructMediaPacketsSeqNum(3, 65534);
|
|
|
| - EXPECT_EQ(0, fec_->GenerateFEC(media_packet_list_, kProtectionFactor,
|
| + EXPECT_EQ(0, fec_->GenerateFec(media_packet_list_, kProtectionFactor,
|
| kNumImportantPackets, kUseUnequalProtection,
|
| webrtc::kFecMaskBursty, &fec_packet_list_));
|
|
|
| @@ -238,7 +239,7 @@ TEST_F(RtpFecTest, FecRecoveryWithSeqNumGapOneFrameRecovery) {
|
| ReceivedPackets(fec_packet_list_, fec_loss_mask_, true);
|
|
|
| EXPECT_EQ(0,
|
| - fec_->DecodeFEC(&received_packet_list_, &recovered_packet_list_));
|
| + fec_->DecodeFec(&received_packet_list_, &recovered_packet_list_));
|
|
|
| // Expect 3 media packets in recovered list, and complete recovery.
|
| // Wrap-around won't remove FEC packet, as it follows the wrap.
|
| @@ -264,7 +265,7 @@ TEST_F(RtpFecTest, FecRecoveryWithSeqNumGapOneFrameNoRecovery) {
|
| // #65532(media) #65533(media) #65534(media) #65535(FEC) #0(FEC).
|
| fec_seq_num_ = ConstructMediaPacketsSeqNum(3, 65532);
|
|
|
| - EXPECT_EQ(0, fec_->GenerateFEC(media_packet_list_, kProtectionFactor,
|
| + EXPECT_EQ(0, fec_->GenerateFec(media_packet_list_, kProtectionFactor,
|
| kNumImportantPackets, kUseUnequalProtection,
|
| webrtc::kFecMaskBursty, &fec_packet_list_));
|
|
|
| @@ -280,7 +281,7 @@ TEST_F(RtpFecTest, FecRecoveryWithSeqNumGapOneFrameNoRecovery) {
|
| ReceivedPackets(fec_packet_list_, fec_loss_mask_, true);
|
|
|
| EXPECT_EQ(0,
|
| - fec_->DecodeFEC(&received_packet_list_, &recovered_packet_list_));
|
| + fec_->DecodeFec(&received_packet_list_, &recovered_packet_list_));
|
|
|
| // The two FEC packets are received and should allow for complete recovery,
|
| // but because of the wrap the second FEC packet will be discarded, and only
|
| @@ -303,7 +304,7 @@ TEST_F(RtpFecTest, FecRecoveryWithFecOutOfOrder) {
|
| // #0(media) #1(media) #2(media) #3(FEC).
|
| fec_seq_num_ = ConstructMediaPacketsSeqNum(3, 0);
|
|
|
| - EXPECT_EQ(0, fec_->GenerateFEC(media_packet_list_, kProtectionFactor,
|
| + EXPECT_EQ(0, fec_->GenerateFec(media_packet_list_, kProtectionFactor,
|
| kNumImportantPackets, kUseUnequalProtection,
|
| webrtc::kFecMaskBursty, &fec_packet_list_));
|
|
|
| @@ -320,7 +321,7 @@ TEST_F(RtpFecTest, FecRecoveryWithFecOutOfOrder) {
|
| ReceivedPackets(media_packet_list_, media_loss_mask_, false);
|
|
|
| EXPECT_EQ(0,
|
| - fec_->DecodeFEC(&received_packet_list_, &recovered_packet_list_));
|
| + fec_->DecodeFec(&received_packet_list_, &recovered_packet_list_));
|
|
|
| // Expect 3 media packets in recovered list, and complete recovery.
|
| EXPECT_EQ(3, static_cast<int>(recovered_packet_list_.size()));
|
| @@ -349,7 +350,7 @@ TEST_F(RtpFecTest, FecRecoveryWithLoss50percRandomMask) {
|
|
|
| fec_seq_num_ = ConstructMediaPackets(kNumMediaPackets);
|
|
|
| - EXPECT_EQ(0, fec_->GenerateFEC(media_packet_list_, kProtectionFactor,
|
| + EXPECT_EQ(0, fec_->GenerateFec(media_packet_list_, kProtectionFactor,
|
| kNumImportantPackets, kUseUnequalProtection,
|
| webrtc::kFecMaskRandom, &fec_packet_list_));
|
|
|
| @@ -366,7 +367,7 @@ TEST_F(RtpFecTest, FecRecoveryWithLoss50percRandomMask) {
|
| NetworkReceivedPackets();
|
|
|
| EXPECT_EQ(0,
|
| - fec_->DecodeFEC(&received_packet_list_, &recovered_packet_list_));
|
| + fec_->DecodeFec(&received_packet_list_, &recovered_packet_list_));
|
|
|
| // With media packet#1 and FEC packets #1, #2, #3, expect complete recovery.
|
| EXPECT_TRUE(IsRecoveryComplete());
|
| @@ -381,7 +382,7 @@ TEST_F(RtpFecTest, FecRecoveryWithLoss50percRandomMask) {
|
| media_loss_mask_[3] = 1;
|
| NetworkReceivedPackets();
|
|
|
| - EXPECT_EQ(0, fec_->DecodeFEC(&received_packet_list_,
|
| + EXPECT_EQ(0, fec_->DecodeFec(&received_packet_list_,
|
| &recovered_packet_list_));
|
|
|
| // Cannot get complete recovery for this loss configuration with random mask.
|
| @@ -409,7 +410,7 @@ TEST_F(RtpFecTest, FecRecoveryWithLoss50percBurstyMask) {
|
|
|
| fec_seq_num_ = ConstructMediaPackets(kNumMediaPackets);
|
|
|
| - EXPECT_EQ(0, fec_->GenerateFEC(media_packet_list_, kProtectionFactor,
|
| + EXPECT_EQ(0, fec_->GenerateFec(media_packet_list_, kProtectionFactor,
|
| kNumImportantPackets, kUseUnequalProtection,
|
| webrtc::kFecMaskBursty, &fec_packet_list_));
|
|
|
| @@ -425,7 +426,7 @@ TEST_F(RtpFecTest, FecRecoveryWithLoss50percBurstyMask) {
|
| media_loss_mask_[3] = 1;
|
| NetworkReceivedPackets();
|
|
|
| - EXPECT_EQ(0, fec_->DecodeFEC(&received_packet_list_,
|
| + EXPECT_EQ(0, fec_->DecodeFec(&received_packet_list_,
|
| &recovered_packet_list_));
|
|
|
| // Expect complete recovery for consecutive packet loss <= 50%.
|
| @@ -441,7 +442,7 @@ TEST_F(RtpFecTest, FecRecoveryWithLoss50percBurstyMask) {
|
| media_loss_mask_[3] = 1;
|
| NetworkReceivedPackets();
|
|
|
| - EXPECT_EQ(0, fec_->DecodeFEC(&received_packet_list_,
|
| + EXPECT_EQ(0, fec_->DecodeFec(&received_packet_list_,
|
| &recovered_packet_list_));
|
|
|
| // Expect complete recovery for consecutive packet loss <= 50%.
|
| @@ -457,7 +458,7 @@ TEST_F(RtpFecTest, FecRecoveryWithLoss50percBurstyMask) {
|
| media_loss_mask_[3] = 1;
|
| NetworkReceivedPackets();
|
|
|
| - EXPECT_EQ(0, fec_->DecodeFEC(&received_packet_list_,
|
| + EXPECT_EQ(0, fec_->DecodeFec(&received_packet_list_,
|
| &recovered_packet_list_));
|
|
|
| // Cannot get complete recovery for this loss configuration.
|
| @@ -472,7 +473,7 @@ TEST_F(RtpFecTest, FecRecoveryNoLossUep) {
|
|
|
| fec_seq_num_ = ConstructMediaPackets(kNumMediaPackets);
|
|
|
| - EXPECT_EQ(0, fec_->GenerateFEC(media_packet_list_, kProtectionFactor,
|
| + EXPECT_EQ(0, fec_->GenerateFec(media_packet_list_, kProtectionFactor,
|
| kNumImportantPackets, kUseUnequalProtection,
|
| webrtc::kFecMaskBursty, &fec_packet_list_));
|
|
|
| @@ -485,7 +486,7 @@ TEST_F(RtpFecTest, FecRecoveryNoLossUep) {
|
| NetworkReceivedPackets();
|
|
|
| EXPECT_EQ(0,
|
| - fec_->DecodeFEC(&received_packet_list_, &recovered_packet_list_));
|
| + fec_->DecodeFec(&received_packet_list_, &recovered_packet_list_));
|
|
|
| // No packets lost, expect complete recovery.
|
| EXPECT_TRUE(IsRecoveryComplete());
|
| @@ -499,7 +500,7 @@ TEST_F(RtpFecTest, FecRecoveryWithLossUep) {
|
|
|
| fec_seq_num_ = ConstructMediaPackets(kNumMediaPackets);
|
|
|
| - EXPECT_EQ(0, fec_->GenerateFEC(media_packet_list_, kProtectionFactor,
|
| + EXPECT_EQ(0, fec_->GenerateFec(media_packet_list_, kProtectionFactor,
|
| kNumImportantPackets, kUseUnequalProtection,
|
| webrtc::kFecMaskBursty, &fec_packet_list_));
|
|
|
| @@ -512,7 +513,7 @@ TEST_F(RtpFecTest, FecRecoveryWithLossUep) {
|
| media_loss_mask_[3] = 1;
|
| NetworkReceivedPackets();
|
|
|
| - EXPECT_EQ(0, fec_->DecodeFEC(&received_packet_list_,
|
| + EXPECT_EQ(0, fec_->DecodeFec(&received_packet_list_,
|
| &recovered_packet_list_));
|
|
|
| // One packet lost, one FEC packet, expect complete recovery.
|
| @@ -526,7 +527,7 @@ TEST_F(RtpFecTest, FecRecoveryWithLossUep) {
|
| media_loss_mask_[3] = 1;
|
| NetworkReceivedPackets();
|
|
|
| - EXPECT_EQ(0, fec_->DecodeFEC(&received_packet_list_,
|
| + EXPECT_EQ(0, fec_->DecodeFec(&received_packet_list_,
|
| &recovered_packet_list_));
|
|
|
| // 2 packets lost, one FEC packet, cannot get complete recovery.
|
| @@ -552,7 +553,7 @@ TEST_F(RtpFecTest, FecRecoveryWithLoss50percUepRandomMask) {
|
|
|
| fec_seq_num_ = ConstructMediaPackets(kNumMediaPackets);
|
|
|
| - EXPECT_EQ(0, fec_->GenerateFEC(media_packet_list_, kProtectionFactor,
|
| + EXPECT_EQ(0, fec_->GenerateFec(media_packet_list_, kProtectionFactor,
|
| kNumImportantPackets, kUseUnequalProtection,
|
| webrtc::kFecMaskRandom, &fec_packet_list_));
|
|
|
| @@ -568,7 +569,7 @@ TEST_F(RtpFecTest, FecRecoveryWithLoss50percUepRandomMask) {
|
| media_loss_mask_[3] = 1;
|
| NetworkReceivedPackets();
|
|
|
| - EXPECT_EQ(0, fec_->DecodeFEC(&received_packet_list_,
|
| + EXPECT_EQ(0, fec_->DecodeFec(&received_packet_list_,
|
| &recovered_packet_list_));
|
|
|
| // With media packet#3 and FEC packets #0, #1, #3, expect complete recovery.
|
| @@ -585,7 +586,7 @@ TEST_F(RtpFecTest, FecRecoveryWithLoss50percUepRandomMask) {
|
| media_loss_mask_[3] = 1;
|
| NetworkReceivedPackets();
|
|
|
| - EXPECT_EQ(0, fec_->DecodeFEC(&received_packet_list_,
|
| + EXPECT_EQ(0, fec_->DecodeFec(&received_packet_list_,
|
| &recovered_packet_list_));
|
|
|
| // Cannot get complete recovery for this loss configuration.
|
| @@ -604,12 +605,12 @@ TEST_F(RtpFecTest, FecRecoveryNonConsecutivePackets) {
|
| // This list should have every other packet removed.
|
| PacketList protected_media_packets;
|
| int i = 0;
|
| - for (PacketList::iterator it = media_packet_list_.begin();
|
| - it != media_packet_list_.end(); ++it, ++i) {
|
| + for (auto it = media_packet_list_.begin(); it != media_packet_list_.end();
|
| + ++it, ++i) {
|
| if (i % 2 == 0) protected_media_packets.push_back(*it);
|
| }
|
|
|
| - EXPECT_EQ(0, fec_->GenerateFEC(protected_media_packets, kProtectionFactor,
|
| + EXPECT_EQ(0, fec_->GenerateFec(protected_media_packets, kProtectionFactor,
|
| kNumImportantPackets, kUseUnequalProtection,
|
| webrtc::kFecMaskBursty, &fec_packet_list_));
|
|
|
| @@ -622,7 +623,7 @@ TEST_F(RtpFecTest, FecRecoveryNonConsecutivePackets) {
|
| media_loss_mask_[2] = 1;
|
| NetworkReceivedPackets();
|
|
|
| - EXPECT_EQ(0, fec_->DecodeFEC(&received_packet_list_,
|
| + EXPECT_EQ(0, fec_->DecodeFec(&received_packet_list_,
|
| &recovered_packet_list_));
|
|
|
| // One packet lost, one FEC packet, expect complete recovery.
|
| @@ -635,7 +636,7 @@ TEST_F(RtpFecTest, FecRecoveryNonConsecutivePackets) {
|
| media_loss_mask_[1] = 1;
|
| NetworkReceivedPackets();
|
|
|
| - EXPECT_EQ(0, fec_->DecodeFEC(&received_packet_list_,
|
| + EXPECT_EQ(0, fec_->DecodeFec(&received_packet_list_,
|
| &recovered_packet_list_));
|
|
|
| // Unprotected packet lost. Recovery not possible.
|
| @@ -649,7 +650,7 @@ TEST_F(RtpFecTest, FecRecoveryNonConsecutivePackets) {
|
| media_loss_mask_[2] = 1;
|
| NetworkReceivedPackets();
|
|
|
| - EXPECT_EQ(0, fec_->DecodeFEC(&received_packet_list_,
|
| + EXPECT_EQ(0, fec_->DecodeFec(&received_packet_list_,
|
| &recovered_packet_list_));
|
|
|
| // 2 protected packets lost, one FEC packet, cannot get complete recovery.
|
| @@ -668,15 +669,15 @@ TEST_F(RtpFecTest, FecRecoveryNonConsecutivePacketsExtension) {
|
| // This list should have every other packet removed.
|
| PacketList protected_media_packets;
|
| int i = 0;
|
| - for (PacketList::iterator it = media_packet_list_.begin();
|
| - it != media_packet_list_.end(); ++it, ++i) {
|
| + for (auto it = media_packet_list_.begin(); it != media_packet_list_.end();
|
| + ++it, ++i) {
|
| if (i % 2 == 0) protected_media_packets.push_back(*it);
|
| }
|
|
|
| // Zero column insertion will have to extend the size of the packet
|
| // mask since the number of actual packets are 21, while the number
|
| // of protected packets are 11.
|
| - EXPECT_EQ(0, fec_->GenerateFEC(protected_media_packets, kProtectionFactor,
|
| + EXPECT_EQ(0, fec_->GenerateFec(protected_media_packets, kProtectionFactor,
|
| kNumImportantPackets, kUseUnequalProtection,
|
| webrtc::kFecMaskBursty, &fec_packet_list_));
|
|
|
| @@ -689,7 +690,7 @@ TEST_F(RtpFecTest, FecRecoveryNonConsecutivePacketsExtension) {
|
| media_loss_mask_[kNumMediaPackets - 1] = 1;
|
| NetworkReceivedPackets();
|
|
|
| - EXPECT_EQ(0, fec_->DecodeFEC(&received_packet_list_,
|
| + EXPECT_EQ(0, fec_->DecodeFec(&received_packet_list_,
|
| &recovered_packet_list_));
|
|
|
| // One packet lost, one FEC packet, expect complete recovery.
|
| @@ -702,7 +703,7 @@ TEST_F(RtpFecTest, FecRecoveryNonConsecutivePacketsExtension) {
|
| media_loss_mask_[kNumMediaPackets - 2] = 1;
|
| NetworkReceivedPackets();
|
|
|
| - EXPECT_EQ(0, fec_->DecodeFEC(&received_packet_list_,
|
| + EXPECT_EQ(0, fec_->DecodeFec(&received_packet_list_,
|
| &recovered_packet_list_));
|
|
|
| // Unprotected packet lost. Recovery not possible.
|
| @@ -720,7 +721,7 @@ TEST_F(RtpFecTest, FecRecoveryNonConsecutivePacketsExtension) {
|
| media_loss_mask_[kNumMediaPackets - 1] = 1;
|
| NetworkReceivedPackets();
|
|
|
| - EXPECT_EQ(0, fec_->DecodeFEC(&received_packet_list_,
|
| + EXPECT_EQ(0, fec_->DecodeFec(&received_packet_list_,
|
| &recovered_packet_list_));
|
|
|
| // 5 protected packets lost, one FEC packet, cannot get complete recovery.
|
| @@ -739,15 +740,15 @@ TEST_F(RtpFecTest, FecRecoveryNonConsecutivePacketsWrap) {
|
| // This list should have every other packet removed.
|
| PacketList protected_media_packets;
|
| int i = 0;
|
| - for (PacketList::iterator it = media_packet_list_.begin();
|
| - it != media_packet_list_.end(); ++it, ++i) {
|
| + for (auto it = media_packet_list_.begin(); it != media_packet_list_.end();
|
| + ++it, ++i) {
|
| if (i % 2 == 0) protected_media_packets.push_back(*it);
|
| }
|
|
|
| // Zero column insertion will have to extend the size of the packet
|
| // mask since the number of actual packets are 21, while the number
|
| // of protected packets are 11.
|
| - EXPECT_EQ(0, fec_->GenerateFEC(protected_media_packets, kProtectionFactor,
|
| + EXPECT_EQ(0, fec_->GenerateFec(protected_media_packets, kProtectionFactor,
|
| kNumImportantPackets, kUseUnequalProtection,
|
| webrtc::kFecMaskBursty, &fec_packet_list_));
|
|
|
| @@ -760,7 +761,7 @@ TEST_F(RtpFecTest, FecRecoveryNonConsecutivePacketsWrap) {
|
| media_loss_mask_[kNumMediaPackets - 1] = 1;
|
| NetworkReceivedPackets();
|
|
|
| - EXPECT_EQ(0, fec_->DecodeFEC(&received_packet_list_,
|
| + EXPECT_EQ(0, fec_->DecodeFec(&received_packet_list_,
|
| &recovered_packet_list_));
|
|
|
| // One packet lost, one FEC packet, expect complete recovery.
|
| @@ -773,7 +774,7 @@ TEST_F(RtpFecTest, FecRecoveryNonConsecutivePacketsWrap) {
|
| media_loss_mask_[kNumMediaPackets - 2] = 1;
|
| NetworkReceivedPackets();
|
|
|
| - EXPECT_EQ(0, fec_->DecodeFEC(&received_packet_list_,
|
| + EXPECT_EQ(0, fec_->DecodeFec(&received_packet_list_,
|
| &recovered_packet_list_));
|
|
|
| // Unprotected packet lost. Recovery not possible.
|
| @@ -791,7 +792,7 @@ TEST_F(RtpFecTest, FecRecoveryNonConsecutivePacketsWrap) {
|
| media_loss_mask_[kNumMediaPackets - 1] = 1;
|
| NetworkReceivedPackets();
|
|
|
| - EXPECT_EQ(0, fec_->DecodeFEC(&received_packet_list_,
|
| + EXPECT_EQ(0, fec_->DecodeFec(&received_packet_list_,
|
| &recovered_packet_list_));
|
|
|
| // 5 protected packets lost, one FEC packet, cannot get complete recovery.
|
| @@ -811,36 +812,27 @@ void RtpFecTest::FreeRecoveredPacketList() {
|
| }
|
|
|
| bool RtpFecTest::IsRecoveryComplete() {
|
| - // Check that the number of media and recovered packets are equal.
|
| - if (media_packet_list_.size() != recovered_packet_list_.size()) {
|
| + // We must have equally many recovered packets as original packets.
|
| + if (recovered_packet_list_.size() != media_packet_list_.size()) {
|
| return false;
|
| }
|
|
|
| - ForwardErrorCorrection::Packet* media_packet;
|
| - ForwardErrorCorrection::RecoveredPacket* recovered_packet;
|
| -
|
| - bool recovery = true;
|
| -
|
| - PacketList::iterator media_packet_list_item = media_packet_list_.begin();
|
| - RecoveredPacketList::iterator recovered_packet_list_item =
|
| - recovered_packet_list_.begin();
|
| - while (media_packet_list_item != media_packet_list_.end()) {
|
| - if (recovered_packet_list_item == recovered_packet_list_.end()) {
|
| - return false;
|
| - }
|
| - media_packet = *media_packet_list_item;
|
| - recovered_packet = *recovered_packet_list_item;
|
| - if (recovered_packet->pkt->length != media_packet->length) {
|
| + // All recovered packets must be identical to the corresponding
|
| + // original packets.
|
| + auto cmp = [](ForwardErrorCorrection::Packet* media_packet,
|
| + ForwardErrorCorrection::RecoveredPacket* recovered_packet) {
|
| + if (media_packet->length != recovered_packet->pkt->length) {
|
| return false;
|
| }
|
| - if (memcmp(recovered_packet->pkt->data, media_packet->data,
|
| + if (memcmp(media_packet->data,
|
| + recovered_packet->pkt->data,
|
| media_packet->length) != 0) {
|
| return false;
|
| }
|
| - media_packet_list_item++;
|
| - recovered_packet_list_item++;
|
| - }
|
| - return recovery;
|
| + return true;
|
| + };
|
| + return std::equal(media_packet_list_.cbegin(), media_packet_list_.cend(),
|
| + recovered_packet_list_.cbegin(), cmp);
|
| }
|
|
|
| void RtpFecTest::NetworkReceivedPackets() {
|
| @@ -851,18 +843,13 @@ void RtpFecTest::NetworkReceivedPackets() {
|
|
|
| void RtpFecTest::ReceivedPackets(const PacketList& packet_list, int* loss_mask,
|
| bool is_fec) {
|
| - ForwardErrorCorrection::Packet* packet;
|
| - ForwardErrorCorrection::ReceivedPacket* received_packet;
|
| int seq_num = fec_seq_num_;
|
| int packet_idx = 0;
|
|
|
| - PacketList::const_iterator packet_list_item = packet_list.begin();
|
| -
|
| - while (packet_list_item != packet_list.end()) {
|
| - packet = *packet_list_item;
|
| + for (const auto* packet : packet_list) {
|
| if (loss_mask[packet_idx] == 0) {
|
| - received_packet = new ForwardErrorCorrection::ReceivedPacket;
|
| - received_packet->pkt = new ForwardErrorCorrection::Packet;
|
| + auto received_packet = new ForwardErrorCorrection::ReceivedPacket();
|
| + received_packet->pkt = new ForwardErrorCorrection::Packet();
|
| received_packet_list_.push_back(received_packet);
|
| received_packet->pkt->length = packet->length;
|
| memcpy(received_packet->pkt->data, packet->data, packet->length);
|
| @@ -884,7 +871,6 @@ void RtpFecTest::ReceivedPackets(const PacketList& packet_list, int* loss_mask,
|
| }
|
| }
|
| packet_idx++;
|
| - packet_list_item++;
|
| // Sequence number of FEC packets are defined as increment by 1 from
|
| // last media packet in frame.
|
| if (is_fec) seq_num++;
|
| @@ -893,13 +879,13 @@ void RtpFecTest::ReceivedPackets(const PacketList& packet_list, int* loss_mask,
|
|
|
| int RtpFecTest::ConstructMediaPacketsSeqNum(int num_media_packets,
|
| int start_seq_num) {
|
| - assert(num_media_packets > 0);
|
| + RTC_DCHECK_GT(num_media_packets, 0);
|
| ForwardErrorCorrection::Packet* media_packet = NULL;
|
| int sequence_number = start_seq_num;
|
| int time_stamp = random_.Rand<int>();
|
|
|
| for (int i = 0; i < num_media_packets; ++i) {
|
| - media_packet = new ForwardErrorCorrection::Packet;
|
| + media_packet = new ForwardErrorCorrection::Packet();
|
| media_packet_list_.push_back(media_packet);
|
| const uint32_t kMinPacketSize = kRtpHeaderSize;
|
| const uint32_t kMaxPacketSize = IP_PACKET_SIZE - kRtpHeaderSize -
|
| @@ -937,7 +923,7 @@ int RtpFecTest::ConstructMediaPacketsSeqNum(int num_media_packets,
|
| sequence_number++;
|
| }
|
| // Last packet, set marker bit.
|
| - assert(media_packet != NULL);
|
| + RTC_DCHECK(media_packet);
|
| media_packet->data[1] |= 0x80;
|
| return sequence_number;
|
| }
|
|
|