Index: webrtc/modules/rtp_rtcp/test/testFec/test_fec.cc |
diff --git a/webrtc/modules/rtp_rtcp/test/testFec/test_fec.cc b/webrtc/modules/rtp_rtcp/test/testFec/test_fec.cc |
index 3e9a5989d608b151aff7fdeebc754a79ac438258..fbc572caeb1c185ebacb8120f964b328601f3f7e 100644 |
--- a/webrtc/modules/rtp_rtcp/test/testFec/test_fec.cc |
+++ b/webrtc/modules/rtp_rtcp/test/testFec/test_fec.cc |
@@ -56,24 +56,25 @@ void ReceivePackets( |
} |
random_variable = random->Rand<float>(); |
} |
- ForwardErrorCorrection::ReceivedPacket* received_packet = *it; |
- to_decode_list->push_back(received_packet); |
+ to_decode_list->push_back(std::move(*it)); |
+ received_packet_list->erase(it); |
+ ForwardErrorCorrection::ReceivedPacket* received_packet = |
+ to_decode_list->back().get(); |
// Duplicate packets. |
random_variable = random->Rand<float>(); |
while (random_variable < duplicate_rate) { |
- ForwardErrorCorrection::ReceivedPacket* duplicate_packet = |
- new ForwardErrorCorrection::ReceivedPacket(); |
+ std::unique_ptr<ForwardErrorCorrection::ReceivedPacket> duplicate_packet( |
+ new ForwardErrorCorrection::ReceivedPacket()); |
*duplicate_packet = *received_packet; |
duplicate_packet->pkt = new ForwardErrorCorrection::Packet(); |
memcpy(duplicate_packet->pkt->data, received_packet->pkt->data, |
received_packet->pkt->length); |
duplicate_packet->pkt->length = received_packet->pkt->length; |
- to_decode_list->push_back(duplicate_packet); |
+ to_decode_list->push_back(std::move(duplicate_packet)); |
random_variable = random->Rand<float>(); |
} |
- received_packet_list->erase(it); |
} |
} |
@@ -108,13 +109,12 @@ TEST(FecTest, MAYBE_FecTest) { |
ForwardErrorCorrection fec; |
ForwardErrorCorrection::PacketList media_packet_list; |
- ForwardErrorCorrection::PacketList fec_packet_list; |
+ std::list<ForwardErrorCorrection::Packet*> fec_packet_list; |
ForwardErrorCorrection::ReceivedPacketList to_decode_list; |
ForwardErrorCorrection::ReceivedPacketList received_packet_list; |
ForwardErrorCorrection::RecoveredPacketList recovered_packet_list; |
std::list<uint8_t*> fec_mask_list; |
- ForwardErrorCorrection::Packet* media_packet = nullptr; |
// Running over only one loss rate to limit execution time. |
const float loss_rate[] = {0.5f}; |
const uint32_t loss_rate_size = sizeof(loss_rate) / sizeof(*loss_rate); |
@@ -234,8 +234,8 @@ TEST(FecTest, MAYBE_FecTest) { |
// around is detected. This case is currently not handled below. |
seq_num = 0; |
for (uint32_t i = 0; i < num_media_packets; ++i) { |
- media_packet = new ForwardErrorCorrection::Packet(); |
- media_packet_list.push_back(media_packet); |
+ std::unique_ptr<ForwardErrorCorrection::Packet> media_packet( |
+ new ForwardErrorCorrection::Packet()); |
const uint32_t kMinPacketSize = 12; |
const uint32_t kMaxPacketSize = static_cast<uint32_t>( |
IP_PACKET_SIZE - 12 - 28 - |
@@ -273,9 +273,10 @@ TEST(FecTest, MAYBE_FecTest) { |
for (size_t j = 12; j < media_packet->length; ++j) { |
media_packet->data[j] = random.Rand<uint8_t>(); |
} |
+ media_packet_list.push_back(std::move(media_packet)); |
seq_num++; |
} |
- media_packet->data[1] |= 0x80; |
+ media_packet_list.back()->data[1] |= 0x80; |
ASSERT_EQ(0, fec.GenerateFec(media_packet_list, protection_factor, |
num_imp_packets, kUseUnequalProtection, |
@@ -288,23 +289,22 @@ TEST(FecTest, MAYBE_FecTest) { |
memset(media_loss_mask, 0, sizeof(media_loss_mask)); |
uint32_t media_packet_idx = 0; |
- for (auto* media_packet : media_packet_list) { |
+ for (auto& media_packet : media_packet_list) { |
// We want a value between 0 and 1. |
const float loss_random_variable = random.Rand<float>(); |
if (loss_random_variable >= loss_rate[loss_rate_idx]) { |
media_loss_mask[media_packet_idx] = 1; |
- auto received_packet = |
- new ForwardErrorCorrection::ReceivedPacket(); |
+ std::unique_ptr<ForwardErrorCorrection::ReceivedPacket> |
+ received_packet(new ForwardErrorCorrection::ReceivedPacket()); |
received_packet->pkt = new ForwardErrorCorrection::Packet(); |
- received_packet_list.push_back(received_packet); |
- |
received_packet->pkt->length = media_packet->length; |
memcpy(received_packet->pkt->data, media_packet->data, |
media_packet->length); |
received_packet->seq_num = |
ByteReader<uint16_t>::ReadBigEndian(&media_packet->data[2]); |
received_packet->is_fec = false; |
+ received_packet_list.push_back(std::move(received_packet)); |
} |
media_packet_idx++; |
} |
@@ -315,19 +315,16 @@ TEST(FecTest, MAYBE_FecTest) { |
const float loss_random_variable = random.Rand<float>(); |
if (loss_random_variable >= loss_rate[loss_rate_idx]) { |
fec_loss_mask[fec_packet_idx] = 1; |
- auto received_packet = |
- new ForwardErrorCorrection::ReceivedPacket(); |
+ std::unique_ptr<ForwardErrorCorrection::ReceivedPacket> |
+ received_packet(new ForwardErrorCorrection::ReceivedPacket()); |
received_packet->pkt = new ForwardErrorCorrection::Packet(); |
- |
- received_packet_list.push_back(received_packet); |
- |
received_packet->pkt->length = fec_packet->length; |
memcpy(received_packet->pkt->data, fec_packet->data, |
fec_packet->length); |
- |
received_packet->seq_num = seq_num; |
received_packet->is_fec = true; |
received_packet->ssrc = ssrc; |
+ received_packet_list.push_back(std::move(received_packet)); |
fec_mask_list.push_back(fec_packet_masks[fec_packet_idx]); |
} |
@@ -388,7 +385,7 @@ TEST(FecTest, MAYBE_FecTest) { |
duplicate_rate, &random); |
if (fec_packet_received == false) { |
- for (auto* received_packet : to_decode_list) { |
+ for (auto& received_packet : to_decode_list) { |
if (received_packet->is_fec) { |
fec_packet_received = true; |
} |
@@ -401,7 +398,7 @@ TEST(FecTest, MAYBE_FecTest) { |
<< "Received packet list is not empty."; |
} |
media_packet_idx = 0; |
- for (auto* media_packet : media_packet_list) { |
+ for (auto& media_packet : media_packet_list) { |
if (media_loss_mask[media_packet_idx] == 1) { |
// Should have recovered this packet. |
auto recovered_packet_list_it = recovered_packet_list.cbegin(); |
@@ -410,7 +407,7 @@ TEST(FecTest, MAYBE_FecTest) { |
recovered_packet_list.end()) |
<< "Insufficient number of recovered packets."; |
ForwardErrorCorrection::RecoveredPacket* recovered_packet = |
- *recovered_packet_list_it; |
+ recovered_packet_list_it->get(); |
ASSERT_EQ(recovered_packet->pkt->length, media_packet->length) |
<< "Recovered packet length not identical to original " |
@@ -419,7 +416,6 @@ TEST(FecTest, MAYBE_FecTest) { |
media_packet->data, media_packet->length)) |
<< "Recovered packet payload not identical to original " |
<< "media packet"; |
- delete recovered_packet; |
recovered_packet_list.pop_front(); |
} |
++media_packet_idx; |
@@ -429,12 +425,7 @@ TEST(FecTest, MAYBE_FecTest) { |
<< "Excessive number of recovered packets.\t size is: " |
<< recovered_packet_list.size(); |
// -- Teardown -- |
- auto media_packet_list_it = media_packet_list.begin(); |
- while (media_packet_list_it != media_packet_list.end()) { |
- delete *media_packet_list_it; |
- ++media_packet_list_it; |
- media_packet_list.pop_front(); |
- } |
+ media_packet_list.clear(); |
RTC_DCHECK(media_packet_list.empty()); |
danilchap
2016/06/30 19:58:37
this DCHECK looks pointless after the simplificati
brandtr
2016/07/01 10:45:34
Removed.
|
// Clear FEC packet list, so we don't pass in a non-empty |
@@ -443,12 +434,7 @@ TEST(FecTest, MAYBE_FecTest) { |
// Delete received packets we didn't pass to DecodeFec(), due to |
// early frame completion. |
- auto received_packet_it = received_packet_list.cbegin(); |
- while (received_packet_it != received_packet_list.end()) { |
- delete *received_packet_it; |
- ++received_packet_it; |
- received_packet_list.pop_front(); |
- } |
+ received_packet_list.clear(); |
RTC_DCHECK(received_packet_list.empty()); |
danilchap
2016/06/30 19:58:37
Same here
brandtr
2016/07/01 10:45:34
Done.
|
while (!fec_mask_list.empty()) { |
@@ -461,7 +447,7 @@ TEST(FecTest, MAYBE_FecTest) { |
} // loop over loss rates |
} // loop over mask types |
- // Have DecodeFec free allocated memory. |
+ // Have DecodeFec clear the recovered packet list. |
fec.ResetState(&recovered_packet_list); |
ASSERT_TRUE(recovered_packet_list.empty()) |
<< "Recovered packet list is not empty"; |