Adds SortedByReceiveTime to TransportPacketsFeedback.

This is part of a series of CLs removing RTP dependencies from GoogCC
implementation.

Bug: webrtc:10749
Change-Id: I4d8ec92643f1a0d4b5fdac2fbcb067766afc6548
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/142222
Reviewed-by: Jonas Olsson <jonasolsson@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28300}
This commit is contained in:
Sebastian Jansson 2019-06-17 10:13:59 +02:00 committed by Commit Bot
parent 873a7a98b3
commit 23026ee6c3
2 changed files with 25 additions and 1 deletions

View File

@ -10,8 +10,9 @@
#include "api/transport/network_types.h"
namespace webrtc {
#include <algorithm>
namespace webrtc {
// TODO(srte): Revert to using default after removing union member.
StreamsConfig::StreamsConfig() {}
StreamsConfig::StreamsConfig(const StreamsConfig&) = default;
@ -61,6 +62,28 @@ std::vector<PacketResult> TransportPacketsFeedback::PacketsWithFeedback()
return packet_feedbacks;
}
std::vector<PacketResult> TransportPacketsFeedback::SortedByReceiveTime()
const {
class PacketResultComparator {
public:
inline bool operator()(const PacketResult& lhs, const PacketResult& rhs) {
if (lhs.receive_time != rhs.receive_time)
return lhs.receive_time < rhs.receive_time;
if (lhs.sent_packet.send_time != rhs.sent_packet.send_time)
return lhs.sent_packet.send_time < rhs.sent_packet.send_time;
return lhs.sent_packet.sequence_number < rhs.sent_packet.sequence_number;
}
};
std::vector<PacketResult> res;
for (const PacketResult& fb : packet_feedbacks) {
if (fb.receive_time.IsFinite()) {
res.push_back(fb);
}
}
std::sort(res.begin(), res.end(), PacketResultComparator());
return res;
}
NetworkControlUpdate::NetworkControlUpdate() = default;
NetworkControlUpdate::NetworkControlUpdate(const NetworkControlUpdate&) =
default;

View File

@ -156,6 +156,7 @@ struct TransportPacketsFeedback {
std::vector<PacketResult> ReceivedWithSendInfo() const;
std::vector<PacketResult> LostWithSendInfo() const;
std::vector<PacketResult> PacketsWithFeedback() const;
std::vector<PacketResult> SortedByReceiveTime() const;
};
// Network estimation