Index: webrtc/modules/remote_bitrate_estimator/transport_feedback_adapter.cc |
diff --git a/webrtc/modules/remote_bitrate_estimator/transport_feedback_adapter.cc b/webrtc/modules/remote_bitrate_estimator/transport_feedback_adapter.cc |
index f7e07a5dc5194a56682770db206161cc2f6e642c..ed8b6e6d3a837b38654b665c053d9ba5688e7314 100644 |
--- a/webrtc/modules/remote_bitrate_estimator/transport_feedback_adapter.cc |
+++ b/webrtc/modules/remote_bitrate_estimator/transport_feedback_adapter.cc |
@@ -10,6 +10,7 @@ |
#include "webrtc/modules/remote_bitrate_estimator/transport_feedback_adapter.h" |
+#include <algorithm> |
#include <limits> |
#include "webrtc/base/checks.h" |
@@ -26,6 +27,17 @@ const int64_t kBaseTimestampScaleFactor = |
rtcp::TransportFeedback::kDeltaScaleFactor * (1 << 8); |
const int64_t kBaseTimestampRangeSizeUs = kBaseTimestampScaleFactor * (1 << 24); |
+class PacketInfoComparator { |
+ public: |
+ inline bool operator()(const PacketInfo& lhs, const PacketInfo& rhs) { |
+ if (lhs.arrival_time_ms != rhs.arrival_time_ms) |
+ return lhs.arrival_time_ms < rhs.arrival_time_ms; |
+ if (lhs.send_time_ms != rhs.send_time_ms) |
+ return lhs.send_time_ms < rhs.send_time_ms; |
+ return lhs.sequence_number < rhs.sequence_number; |
+ } |
+}; |
+ |
TransportFeedbackAdapter::TransportFeedbackAdapter( |
BitrateController* bitrate_controller, |
Clock* clock) |
@@ -104,6 +116,8 @@ void TransportFeedbackAdapter::OnTransportFeedback( |
} |
++sequence_number; |
} |
+ std::sort(packet_feedback_vector.begin(), packet_feedback_vector.end(), |
+ PacketInfoComparator()); |
RTC_DCHECK(delta_it == delta_vec.end()); |
if (failed_lookups > 0) { |
LOG(LS_WARNING) << "Failed to lookup send time for " << failed_lookups |