| Index: webrtc/modules/congestion_controller/transport_feedback_adapter_unittest.cc
|
| diff --git a/webrtc/modules/congestion_controller/transport_feedback_adapter_unittest.cc b/webrtc/modules/congestion_controller/transport_feedback_adapter_unittest.cc
|
| index e0adee0ad45852076ef37e8d3a587d5e720226be..a41926bbc842938f58376025dd30ae6af7259152 100644
|
| --- a/webrtc/modules/congestion_controller/transport_feedback_adapter_unittest.cc
|
| +++ b/webrtc/modules/congestion_controller/transport_feedback_adapter_unittest.cc
|
| @@ -76,8 +76,8 @@ class TransportFeedbackAdapterTest : public ::testing::Test {
|
| int64_t rtt,
|
| int64_t now_ms) {}
|
|
|
| - void ComparePacketVectors(const std::vector<PacketInfo>& truth,
|
| - const std::vector<PacketInfo>& input) {
|
| + void ComparePacketVectors(const std::vector<PacketFeedback>& truth,
|
| + const std::vector<PacketFeedback>& input) {
|
| ASSERT_EQ(truth.size(), input.size());
|
| size_t len = truth.size();
|
| // truth contains the input data for the test, and input is what will be
|
| @@ -99,10 +99,12 @@ class TransportFeedbackAdapterTest : public ::testing::Test {
|
| }
|
| }
|
|
|
| - void OnSentPacket(const PacketInfo& info) {
|
| - adapter_->AddPacket(info.sequence_number, info.payload_size,
|
| - info.pacing_info);
|
| - adapter_->OnSentPacket(info.sequence_number, info.send_time_ms);
|
| + void OnSentPacket(const PacketFeedback& packet_feedback) {
|
| + adapter_->AddPacket(packet_feedback.sequence_number,
|
| + packet_feedback.payload_size,
|
| + packet_feedback.pacing_info);
|
| + adapter_->OnSentPacket(packet_feedback.sequence_number,
|
| + packet_feedback.send_time_ms);
|
| }
|
|
|
| SimulatedClock clock_;
|
| @@ -113,21 +115,21 @@ class TransportFeedbackAdapterTest : public ::testing::Test {
|
| };
|
|
|
| TEST_F(TransportFeedbackAdapterTest, AdaptsFeedbackAndPopulatesSendTimes) {
|
| - std::vector<PacketInfo> packets;
|
| - packets.push_back(PacketInfo(100, 200, 0, 1500, kPacingInfo0));
|
| - packets.push_back(PacketInfo(110, 210, 1, 1500, kPacingInfo0));
|
| - packets.push_back(PacketInfo(120, 220, 2, 1500, kPacingInfo0));
|
| - packets.push_back(PacketInfo(130, 230, 3, 1500, kPacingInfo1));
|
| - packets.push_back(PacketInfo(140, 240, 4, 1500, kPacingInfo1));
|
| -
|
| - for (const PacketInfo& packet : packets)
|
| + std::vector<PacketFeedback> packets;
|
| + packets.push_back(PacketFeedback(100, 200, 0, 1500, kPacingInfo0));
|
| + packets.push_back(PacketFeedback(110, 210, 1, 1500, kPacingInfo0));
|
| + packets.push_back(PacketFeedback(120, 220, 2, 1500, kPacingInfo0));
|
| + packets.push_back(PacketFeedback(130, 230, 3, 1500, kPacingInfo1));
|
| + packets.push_back(PacketFeedback(140, 240, 4, 1500, kPacingInfo1));
|
| +
|
| + for (const PacketFeedback& packet : packets)
|
| OnSentPacket(packet);
|
|
|
| rtcp::TransportFeedback feedback;
|
| feedback.SetBase(packets[0].sequence_number,
|
| packets[0].arrival_time_ms * 1000);
|
|
|
| - for (const PacketInfo& packet : packets) {
|
| + for (const PacketFeedback& packet : packets) {
|
| EXPECT_TRUE(feedback.AddReceivedPacket(packet.sequence_number,
|
| packet.arrival_time_ms * 1000));
|
| }
|
| @@ -142,25 +144,26 @@ TEST_F(TransportFeedbackAdapterTest, LongFeedbackDelays) {
|
| const int64_t kFeedbackTimeoutMs = 60001;
|
| const int kMaxConsecutiveFailedLookups = 5;
|
| for (int i = 0; i < kMaxConsecutiveFailedLookups; ++i) {
|
| - std::vector<PacketInfo> packets;
|
| - packets.push_back(PacketInfo(i * 100, 2 * i * 100, 0, 1500, kPacingInfo0));
|
| + std::vector<PacketFeedback> packets;
|
| packets.push_back(
|
| - PacketInfo(i * 100 + 10, 2 * i * 100 + 10, 1, 1500, kPacingInfo0));
|
| + PacketFeedback(i * 100, 2 * i * 100, 0, 1500, kPacingInfo0));
|
| packets.push_back(
|
| - PacketInfo(i * 100 + 20, 2 * i * 100 + 20, 2, 1500, kPacingInfo0));
|
| + PacketFeedback(i * 100 + 10, 2 * i * 100 + 10, 1, 1500, kPacingInfo0));
|
| packets.push_back(
|
| - PacketInfo(i * 100 + 30, 2 * i * 100 + 30, 3, 1500, kPacingInfo1));
|
| + PacketFeedback(i * 100 + 20, 2 * i * 100 + 20, 2, 1500, kPacingInfo0));
|
| packets.push_back(
|
| - PacketInfo(i * 100 + 40, 2 * i * 100 + 40, 4, 1500, kPacingInfo1));
|
| + PacketFeedback(i * 100 + 30, 2 * i * 100 + 30, 3, 1500, kPacingInfo1));
|
| + packets.push_back(
|
| + PacketFeedback(i * 100 + 40, 2 * i * 100 + 40, 4, 1500, kPacingInfo1));
|
|
|
| - for (const PacketInfo& packet : packets)
|
| + for (const PacketFeedback& packet : packets)
|
| OnSentPacket(packet);
|
|
|
| rtcp::TransportFeedback feedback;
|
| feedback.SetBase(packets[0].sequence_number,
|
| packets[0].arrival_time_ms * 1000);
|
|
|
| - for (const PacketInfo& packet : packets) {
|
| + for (const PacketFeedback& packet : packets) {
|
| EXPECT_TRUE(feedback.AddReceivedPacket(packet.sequence_number,
|
| packet.arrival_time_ms * 1000));
|
| }
|
| @@ -168,15 +171,15 @@ TEST_F(TransportFeedbackAdapterTest, LongFeedbackDelays) {
|
| feedback.Build();
|
|
|
| clock_.AdvanceTimeMilliseconds(kFeedbackTimeoutMs);
|
| - PacketInfo later_packet(kFeedbackTimeoutMs + i * 100 + 40,
|
| - kFeedbackTimeoutMs + i * 200 + 40, 5, 1500,
|
| - kPacingInfo1);
|
| + PacketFeedback later_packet(kFeedbackTimeoutMs + i * 100 + 40,
|
| + kFeedbackTimeoutMs + i * 200 + 40, 5, 1500,
|
| + kPacingInfo1);
|
| OnSentPacket(later_packet);
|
|
|
| adapter_->OnTransportFeedback(feedback);
|
|
|
| // Check that packets have timed out.
|
| - for (PacketInfo& packet : packets) {
|
| + for (PacketFeedback& packet : packets) {
|
| packet.send_time_ms = -1;
|
| packet.payload_size = 0;
|
| packet.pacing_info = PacedPacketInfo();
|
| @@ -189,21 +192,21 @@ TEST_F(TransportFeedbackAdapterTest, LongFeedbackDelays) {
|
|
|
| // Test with feedback that isn't late enough to time out.
|
| {
|
| - std::vector<PacketInfo> packets;
|
| - packets.push_back(PacketInfo(100, 200, 0, 1500, kPacingInfo0));
|
| - packets.push_back(PacketInfo(110, 210, 1, 1500, kPacingInfo0));
|
| - packets.push_back(PacketInfo(120, 220, 2, 1500, kPacingInfo0));
|
| - packets.push_back(PacketInfo(130, 230, 3, 1500, kPacingInfo1));
|
| - packets.push_back(PacketInfo(140, 240, 4, 1500, kPacingInfo1));
|
| -
|
| - for (const PacketInfo& packet : packets)
|
| + std::vector<PacketFeedback> packets;
|
| + packets.push_back(PacketFeedback(100, 200, 0, 1500, kPacingInfo0));
|
| + packets.push_back(PacketFeedback(110, 210, 1, 1500, kPacingInfo0));
|
| + packets.push_back(PacketFeedback(120, 220, 2, 1500, kPacingInfo0));
|
| + packets.push_back(PacketFeedback(130, 230, 3, 1500, kPacingInfo1));
|
| + packets.push_back(PacketFeedback(140, 240, 4, 1500, kPacingInfo1));
|
| +
|
| + for (const PacketFeedback& packet : packets)
|
| OnSentPacket(packet);
|
|
|
| rtcp::TransportFeedback feedback;
|
| feedback.SetBase(packets[0].sequence_number,
|
| packets[0].arrival_time_ms * 1000);
|
|
|
| - for (const PacketInfo& packet : packets) {
|
| + for (const PacketFeedback& packet : packets) {
|
| EXPECT_TRUE(feedback.AddReceivedPacket(packet.sequence_number,
|
| packet.arrival_time_ms * 1000));
|
| }
|
| @@ -211,8 +214,9 @@ TEST_F(TransportFeedbackAdapterTest, LongFeedbackDelays) {
|
| feedback.Build();
|
|
|
| clock_.AdvanceTimeMilliseconds(kFeedbackTimeoutMs - 1);
|
| - PacketInfo later_packet(kFeedbackTimeoutMs + 140, kFeedbackTimeoutMs + 240,
|
| - 5, 1500, kPacingInfo1);
|
| + PacketFeedback later_packet(kFeedbackTimeoutMs + 140,
|
| + kFeedbackTimeoutMs + 240, 5, 1500,
|
| + kPacingInfo1);
|
| OnSentPacket(later_packet);
|
|
|
| adapter_->OnTransportFeedback(feedback);
|
| @@ -221,17 +225,17 @@ TEST_F(TransportFeedbackAdapterTest, LongFeedbackDelays) {
|
| }
|
|
|
| TEST_F(TransportFeedbackAdapterTest, HandlesDroppedPackets) {
|
| - std::vector<PacketInfo> packets;
|
| - packets.push_back(PacketInfo(100, 200, 0, 1500, kPacingInfo0));
|
| - packets.push_back(PacketInfo(110, 210, 1, 1500, kPacingInfo1));
|
| - packets.push_back(PacketInfo(120, 220, 2, 1500, kPacingInfo2));
|
| - packets.push_back(PacketInfo(130, 230, 3, 1500, kPacingInfo3));
|
| - packets.push_back(PacketInfo(140, 240, 4, 1500, kPacingInfo4));
|
| + std::vector<PacketFeedback> packets;
|
| + packets.push_back(PacketFeedback(100, 200, 0, 1500, kPacingInfo0));
|
| + packets.push_back(PacketFeedback(110, 210, 1, 1500, kPacingInfo1));
|
| + packets.push_back(PacketFeedback(120, 220, 2, 1500, kPacingInfo2));
|
| + packets.push_back(PacketFeedback(130, 230, 3, 1500, kPacingInfo3));
|
| + packets.push_back(PacketFeedback(140, 240, 4, 1500, kPacingInfo4));
|
|
|
| const uint16_t kSendSideDropBefore = 1;
|
| const uint16_t kReceiveSideDropAfter = 3;
|
|
|
| - for (const PacketInfo& packet : packets) {
|
| + for (const PacketFeedback& packet : packets) {
|
| if (packet.sequence_number >= kSendSideDropBefore)
|
| OnSentPacket(packet);
|
| }
|
| @@ -240,7 +244,7 @@ TEST_F(TransportFeedbackAdapterTest, HandlesDroppedPackets) {
|
| feedback.SetBase(packets[0].sequence_number,
|
| packets[0].arrival_time_ms * 1000);
|
|
|
| - for (const PacketInfo& packet : packets) {
|
| + for (const PacketFeedback& packet : packets) {
|
| if (packet.sequence_number <= kReceiveSideDropAfter) {
|
| EXPECT_TRUE(feedback.AddReceivedPacket(packet.sequence_number,
|
| packet.arrival_time_ms * 1000));
|
| @@ -249,7 +253,7 @@ TEST_F(TransportFeedbackAdapterTest, HandlesDroppedPackets) {
|
|
|
| feedback.Build();
|
|
|
| - std::vector<PacketInfo> expected_packets(
|
| + std::vector<PacketFeedback> expected_packets(
|
| packets.begin(), packets.begin() + kReceiveSideDropAfter + 1);
|
| // Packets that have timed out on the send-side have lost the
|
| // information stored on the send-side.
|
| @@ -268,15 +272,15 @@ TEST_F(TransportFeedbackAdapterTest, SendTimeWrapsBothWays) {
|
| int64_t kHighArrivalTimeMs = rtcp::TransportFeedback::kDeltaScaleFactor *
|
| static_cast<int64_t>(1 << 8) *
|
| static_cast<int64_t>((1 << 23) - 1) / 1000;
|
| - std::vector<PacketInfo> packets;
|
| + std::vector<PacketFeedback> packets;
|
| packets.push_back(
|
| - PacketInfo(kHighArrivalTimeMs - 64, 200, 0, 1500, PacedPacketInfo()));
|
| + PacketFeedback(kHighArrivalTimeMs - 64, 200, 0, 1500, PacedPacketInfo()));
|
| packets.push_back(
|
| - PacketInfo(kHighArrivalTimeMs + 64, 210, 1, 1500, PacedPacketInfo()));
|
| + PacketFeedback(kHighArrivalTimeMs + 64, 210, 1, 1500, PacedPacketInfo()));
|
| packets.push_back(
|
| - PacketInfo(kHighArrivalTimeMs, 220, 2, 1500, PacedPacketInfo()));
|
| + PacketFeedback(kHighArrivalTimeMs, 220, 2, 1500, PacedPacketInfo()));
|
|
|
| - for (const PacketInfo& packet : packets)
|
| + for (const PacketFeedback& packet : packets)
|
| OnSentPacket(packet);
|
|
|
| for (size_t i = 0; i < packets.size(); ++i) {
|
| @@ -292,7 +296,7 @@ TEST_F(TransportFeedbackAdapterTest, SendTimeWrapsBothWays) {
|
| feedback = rtcp::TransportFeedback::ParseFrom(raw_packet.data(),
|
| raw_packet.size());
|
|
|
| - std::vector<PacketInfo> expected_packets;
|
| + std::vector<PacketFeedback> expected_packets;
|
| expected_packets.push_back(packets[i]);
|
|
|
| adapter_->OnTransportFeedback(*feedback.get());
|
| @@ -302,23 +306,23 @@ TEST_F(TransportFeedbackAdapterTest, SendTimeWrapsBothWays) {
|
| }
|
|
|
| TEST_F(TransportFeedbackAdapterTest, HandlesReordering) {
|
| - std::vector<PacketInfo> packets;
|
| - packets.push_back(PacketInfo(120, 200, 0, 1500, kPacingInfo0));
|
| - packets.push_back(PacketInfo(110, 210, 1, 1500, kPacingInfo0));
|
| - packets.push_back(PacketInfo(100, 220, 2, 1500, kPacingInfo0));
|
| - std::vector<PacketInfo> expected_packets;
|
| + std::vector<PacketFeedback> packets;
|
| + packets.push_back(PacketFeedback(120, 200, 0, 1500, kPacingInfo0));
|
| + packets.push_back(PacketFeedback(110, 210, 1, 1500, kPacingInfo0));
|
| + packets.push_back(PacketFeedback(100, 220, 2, 1500, kPacingInfo0));
|
| + std::vector<PacketFeedback> expected_packets;
|
| expected_packets.push_back(packets[2]);
|
| expected_packets.push_back(packets[1]);
|
| expected_packets.push_back(packets[0]);
|
|
|
| - for (const PacketInfo& packet : packets)
|
| + for (const PacketFeedback& packet : packets)
|
| OnSentPacket(packet);
|
|
|
| rtcp::TransportFeedback feedback;
|
| feedback.SetBase(packets[0].sequence_number,
|
| packets[0].arrival_time_ms * 1000);
|
|
|
| - for (const PacketInfo& packet : packets) {
|
| + for (const PacketFeedback& packet : packets) {
|
| EXPECT_TRUE(feedback.AddReceivedPacket(packet.sequence_number,
|
| packet.arrival_time_ms * 1000));
|
| }
|
| @@ -331,7 +335,7 @@ TEST_F(TransportFeedbackAdapterTest, HandlesReordering) {
|
| }
|
|
|
| TEST_F(TransportFeedbackAdapterTest, TimestampDeltas) {
|
| - std::vector<PacketInfo> sent_packets;
|
| + std::vector<PacketFeedback> sent_packets;
|
| const int64_t kSmallDeltaUs =
|
| rtcp::TransportFeedback::kDeltaScaleFactor * ((1 << 8) - 1);
|
| const int64_t kLargePositiveDeltaUs =
|
| @@ -341,33 +345,33 @@ TEST_F(TransportFeedbackAdapterTest, TimestampDeltas) {
|
| rtcp::TransportFeedback::kDeltaScaleFactor *
|
| std::numeric_limits<int16_t>::min();
|
|
|
| - PacketInfo info(100, 200, 0, 1500, true, PacedPacketInfo());
|
| - sent_packets.push_back(info);
|
| + PacketFeedback packet_feedback(100, 200, 0, 1500, true, PacedPacketInfo());
|
| + sent_packets.push_back(packet_feedback);
|
|
|
| - info.send_time_ms += kSmallDeltaUs / 1000;
|
| - info.arrival_time_ms += kSmallDeltaUs / 1000;
|
| - ++info.sequence_number;
|
| - sent_packets.push_back(info);
|
| + packet_feedback.send_time_ms += kSmallDeltaUs / 1000;
|
| + packet_feedback.arrival_time_ms += kSmallDeltaUs / 1000;
|
| + ++packet_feedback.sequence_number;
|
| + sent_packets.push_back(packet_feedback);
|
|
|
| - info.send_time_ms += kLargePositiveDeltaUs / 1000;
|
| - info.arrival_time_ms += kLargePositiveDeltaUs / 1000;
|
| - ++info.sequence_number;
|
| - sent_packets.push_back(info);
|
| + packet_feedback.send_time_ms += kLargePositiveDeltaUs / 1000;
|
| + packet_feedback.arrival_time_ms += kLargePositiveDeltaUs / 1000;
|
| + ++packet_feedback.sequence_number;
|
| + sent_packets.push_back(packet_feedback);
|
|
|
| - info.send_time_ms += kLargeNegativeDeltaUs / 1000;
|
| - info.arrival_time_ms += kLargeNegativeDeltaUs / 1000;
|
| - ++info.sequence_number;
|
| - sent_packets.push_back(info);
|
| + packet_feedback.send_time_ms += kLargeNegativeDeltaUs / 1000;
|
| + packet_feedback.arrival_time_ms += kLargeNegativeDeltaUs / 1000;
|
| + ++packet_feedback.sequence_number;
|
| + sent_packets.push_back(packet_feedback);
|
|
|
| // Too large, delta - will need two feedback messages.
|
| - info.send_time_ms += (kLargePositiveDeltaUs + 1000) / 1000;
|
| - info.arrival_time_ms += (kLargePositiveDeltaUs + 1000) / 1000;
|
| - ++info.sequence_number;
|
| + packet_feedback.send_time_ms += (kLargePositiveDeltaUs + 1000) / 1000;
|
| + packet_feedback.arrival_time_ms += (kLargePositiveDeltaUs + 1000) / 1000;
|
| + ++packet_feedback.sequence_number;
|
|
|
| // Packets will be added to send history.
|
| - for (const PacketInfo& packet : sent_packets)
|
| + for (const PacketFeedback& packet : sent_packets)
|
| OnSentPacket(packet);
|
| - OnSentPacket(info);
|
| + OnSentPacket(packet_feedback);
|
|
|
| // Create expected feedback and send into adapter.
|
| std::unique_ptr<rtcp::TransportFeedback> feedback(
|
| @@ -375,25 +379,25 @@ TEST_F(TransportFeedbackAdapterTest, TimestampDeltas) {
|
| feedback->SetBase(sent_packets[0].sequence_number,
|
| sent_packets[0].arrival_time_ms * 1000);
|
|
|
| - for (const PacketInfo& packet : sent_packets) {
|
| + for (const PacketFeedback& packet : sent_packets) {
|
| EXPECT_TRUE(feedback->AddReceivedPacket(packet.sequence_number,
|
| packet.arrival_time_ms * 1000));
|
| }
|
| - EXPECT_FALSE(feedback->AddReceivedPacket(info.sequence_number,
|
| - info.arrival_time_ms * 1000));
|
| + EXPECT_FALSE(feedback->AddReceivedPacket(
|
| + packet_feedback.sequence_number, packet_feedback.arrival_time_ms * 1000));
|
|
|
| rtc::Buffer raw_packet = feedback->Build();
|
| feedback =
|
| rtcp::TransportFeedback::ParseFrom(raw_packet.data(), raw_packet.size());
|
|
|
| - std::vector<PacketInfo> received_feedback;
|
| + std::vector<PacketFeedback> received_feedback;
|
|
|
| EXPECT_TRUE(feedback.get() != nullptr);
|
| adapter_->OnTransportFeedback(*feedback.get());
|
| {
|
| // Expected to be ordered on arrival time when the feedback message has been
|
| // parsed.
|
| - std::vector<PacketInfo> expected_packets;
|
| + std::vector<PacketFeedback> expected_packets;
|
| expected_packets.push_back(sent_packets[0]);
|
| expected_packets.push_back(sent_packets[3]);
|
| expected_packets.push_back(sent_packets[1]);
|
| @@ -404,9 +408,10 @@ TEST_F(TransportFeedbackAdapterTest, TimestampDeltas) {
|
|
|
| // Create a new feedback message and add the trailing item.
|
| feedback.reset(new rtcp::TransportFeedback());
|
| - feedback->SetBase(info.sequence_number, info.arrival_time_ms * 1000);
|
| - EXPECT_TRUE(feedback->AddReceivedPacket(info.sequence_number,
|
| - info.arrival_time_ms * 1000));
|
| + feedback->SetBase(packet_feedback.sequence_number,
|
| + packet_feedback.arrival_time_ms * 1000);
|
| + EXPECT_TRUE(feedback->AddReceivedPacket(
|
| + packet_feedback.sequence_number, packet_feedback.arrival_time_ms * 1000));
|
| raw_packet = feedback->Build();
|
| feedback =
|
| rtcp::TransportFeedback::ParseFrom(raw_packet.data(), raw_packet.size());
|
| @@ -414,8 +419,8 @@ TEST_F(TransportFeedbackAdapterTest, TimestampDeltas) {
|
| EXPECT_TRUE(feedback.get() != nullptr);
|
| adapter_->OnTransportFeedback(*feedback.get());
|
| {
|
| - std::vector<PacketInfo> expected_packets;
|
| - expected_packets.push_back(info);
|
| + std::vector<PacketFeedback> expected_packets;
|
| + expected_packets.push_back(packet_feedback);
|
| ComparePacketVectors(expected_packets,
|
| adapter_->GetTransportFeedbackVector());
|
| }
|
| @@ -429,8 +434,9 @@ TEST_F(TransportFeedbackAdapterTest, UpdatesDelayBasedEstimate) {
|
| const int64_t kRunTimeMs = 6000;
|
| int64_t start_time_ms = clock_.TimeInMilliseconds();
|
| while (clock_.TimeInMilliseconds() - start_time_ms < kRunTimeMs) {
|
| - PacketInfo packet(clock_.TimeInMilliseconds(), clock_.TimeInMilliseconds(),
|
| - seq_num, kPayloadSize, PacedPacketInfo());
|
| + PacketFeedback packet(clock_.TimeInMilliseconds(),
|
| + clock_.TimeInMilliseconds(), seq_num, kPayloadSize,
|
| + PacedPacketInfo());
|
| OnSentPacket(packet);
|
| // Create expected feedback and send into adapter.
|
| std::unique_ptr<rtcp::TransportFeedback> feedback(
|
|
|