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}
diff --git a/api/transport/network_types.cc b/api/transport/network_types.cc
index 8cb21d7..db2a30b 100644
--- a/api/transport/network_types.cc
+++ b/api/transport/network_types.cc
@@ -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 @@
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;
diff --git a/api/transport/network_types.h b/api/transport/network_types.h
index a415c09..16c8211 100644
--- a/api/transport/network_types.h
+++ b/api/transport/network_types.h
@@ -156,6 +156,7 @@
std::vector<PacketResult> ReceivedWithSendInfo() const;
std::vector<PacketResult> LostWithSendInfo() const;
std::vector<PacketResult> PacketsWithFeedback() const;
+ std::vector<PacketResult> SortedByReceiveTime() const;
};
// Network estimation