diff --git a/rtc_tools/BUILD.gn b/rtc_tools/BUILD.gn index c99ed9b780..8d09587c65 100644 --- a/rtc_tools/BUILD.gn +++ b/rtc_tools/BUILD.gn @@ -305,6 +305,7 @@ if (!build_with_chromium) { "../rtc_base:rtc_base_approved", "../rtc_base:rtc_numerics", "../rtc_base:stringutils", + "//third_party/abseil-cpp/absl/algorithm:container", "//third_party/abseil-cpp/absl/strings", ] } diff --git a/rtc_tools/rtc_event_log_visualizer/analyzer.cc b/rtc_tools/rtc_event_log_visualizer/analyzer.cc index 126d9caaf1..0b5f795944 100644 --- a/rtc_tools/rtc_event_log_visualizer/analyzer.cc +++ b/rtc_tools/rtc_event_log_visualizer/analyzer.cc @@ -18,6 +18,7 @@ #include #include +#include "absl/algorithm/container.h" #include "absl/strings/string_view.h" #include "api/function_view.h" #include "api/transport/field_trial_based_config.h" @@ -1455,7 +1456,13 @@ void EventLogAnalyzer::CreateNetworkDelayFeedbackGraph(Plot* plot) { int64_t min_rtt_ms = std::numeric_limits::max(); int64_t prev_y = 0; - for (auto packet : GetNetworkTrace(parsed_log_)) { + std::vector matched_rtp_rtcp = + GetNetworkTrace(parsed_log_); + absl::c_stable_sort(matched_rtp_rtcp, [](const MatchedSendArrivalTimes& a, + const MatchedSendArrivalTimes& b) { + return a.feedback_arrival_time_ms < b.feedback_arrival_time_ms; + }); + for (const auto& packet : matched_rtp_rtcp) { if (packet.arrival_time_ms == PacketFeedback::kNotReceived) continue; float x = config_.GetCallTimeSec(1000 * packet.feedback_arrival_time_ms);