Index: webrtc/tools/event_log_visualizer/analyzer.cc |
diff --git a/webrtc/tools/event_log_visualizer/analyzer.cc b/webrtc/tools/event_log_visualizer/analyzer.cc |
index e29ef328388739cf56ec68de0cc8a5b4f9d87bb7..15b3e821b843f9647f92e0be053d68025964f4b2 100644 |
--- a/webrtc/tools/event_log_visualizer/analyzer.cc |
+++ b/webrtc/tools/event_log_visualizer/analyzer.cc |
@@ -43,6 +43,26 @@ namespace plotting { |
namespace { |
+class PacketFeedbackComparator { |
+ public: |
+ inline bool operator()(const webrtc::PacketFeedback& lhs, |
+ const webrtc::PacketFeedback& 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; |
+ } |
+}; |
+ |
+void SortPacketFeedbackVector(std::vector<PacketFeedback>* vec) { |
+ auto pred = [](const PacketFeedback& packet_feedback) { |
+ return packet_feedback.arrival_time_ms == PacketFeedback::kNotReceived; |
+ }; |
+ vec->erase(std::remove_if(vec->begin(), vec->end(), pred), vec->end()); |
+ std::sort(vec->begin(), vec->end(), PacketFeedbackComparator()); |
+} |
+ |
std::string SsrcToString(uint32_t ssrc) { |
std::stringstream ss; |
ss << "SSRC " << ssrc; |
@@ -1057,6 +1077,7 @@ void EventLogAnalyzer::CreateBweSimulationGraph(Plot* plot) { |
rtcp.packet.get())); |
std::vector<PacketFeedback> feedback = |
observer->GetTransportFeedbackVector(); |
+ SortPacketFeedbackVector(&feedback); |
rtc::Optional<uint32_t> bitrate_bps; |
if (!feedback.empty()) { |
for (const PacketFeedback& packet : feedback) |
@@ -1192,6 +1213,7 @@ void EventLogAnalyzer::CreateNetworkDelayFeedbackGraph(Plot* plot) { |
*static_cast<rtcp::TransportFeedback*>(rtcp.packet.get())); |
std::vector<PacketFeedback> feedback = |
feedback_adapter.GetTransportFeedbackVector(); |
+ SortPacketFeedbackVector(&feedback); |
for (const PacketFeedback& packet : feedback) { |
int64_t y = packet.arrival_time_ms - packet.send_time_ms; |
float x = |