Chromium Code Reviews| 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..d3f02fa7ab6832fd76328afa0f3fa1d3d594d27f 100644 |
| --- a/webrtc/tools/event_log_visualizer/analyzer.cc |
| +++ b/webrtc/tools/event_log_visualizer/analyzer.cc |
| @@ -43,6 +43,18 @@ namespace plotting { |
| namespace { |
| +class PacketFeedbackComparator { |
|
elad.alon_webrtc.org
2017/03/06 18:28:02
This is now duplicated with delay_based_bwe.cc. An
|
| + 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; |
| + } |
| +}; |
| + |
| std::string SsrcToString(uint32_t ssrc) { |
| std::stringstream ss; |
| ss << "SSRC " << ssrc; |
| @@ -557,6 +569,15 @@ void EventLogAnalyzer::FillAudioEncoderTimeSeries( |
| } |
| } |
| +void EventLogAnalyzer::SortPacketFeedbackVector( |
| + std::vector<PacketFeedback>* vec) const { |
| + 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()); |
| +} |
| + |
| void EventLogAnalyzer::CreatePacketGraph(PacketDirection desired_direction, |
| Plot* plot) { |
| for (auto& kv : rtp_packets_) { |
| @@ -1057,6 +1078,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 +1214,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 = |