Add fraction loss in visualization tool.

Review-Url: https://codereview.webrtc.org/2204713005
Cr-Commit-Position: refs/heads/master@{#13644}
diff --git a/webrtc/tools/event_log_visualizer/analyzer.cc b/webrtc/tools/event_log_visualizer/analyzer.cc
index b1f8722..cb8455c 100644
--- a/webrtc/tools/event_log_visualizer/analyzer.cc
+++ b/webrtc/tools/event_log_visualizer/analyzer.cc
@@ -538,6 +538,23 @@
   plot->SetTitle("Accumulated network latency change");
 }
 
+// Plot the fraction of packets lost (as perceived by the loss-based BWE).
+void EventLogAnalyzer::CreateFractionLossGraph(Plot* plot) {
+  plot->series_list_.push_back(TimeSeries());
+  for (auto& bwe_update : bwe_loss_updates_) {
+    float x = static_cast<float>(bwe_update.timestamp - begin_time_) / 1000000;
+    float y = static_cast<float>(bwe_update.fraction_loss) / 255 * 100;
+    plot->series_list_.back().points.emplace_back(x, y);
+  }
+  plot->series_list_.back().label = "Fraction lost";
+  plot->series_list_.back().style = LINE_DOT_GRAPH;
+
+  plot->SetXAxis(0, call_duration_s_, "Time (s)", kLeftMargin, kRightMargin);
+  plot->SetSuggestedYAxis(0, 10, "Percent lost packets", kBottomMargin,
+                          kTopMargin);
+  plot->SetTitle("Reported packet loss");
+}
+
 // Plot the total bandwidth used by all RTP streams.
 void EventLogAnalyzer::CreateTotalBitrateGraph(
     PacketDirection desired_direction,
diff --git a/webrtc/tools/event_log_visualizer/analyzer.h b/webrtc/tools/event_log_visualizer/analyzer.h
index 2853e86..dc56c5f 100644
--- a/webrtc/tools/event_log_visualizer/analyzer.h
+++ b/webrtc/tools/event_log_visualizer/analyzer.h
@@ -41,6 +41,8 @@
 
   void CreateAccumulatedDelayChangeGraph(Plot* plot);
 
+  void CreateFractionLossGraph(Plot* plot);
+
   void CreateTotalBitrateGraph(PacketDirection desired_direction, Plot* plot);
 
   void CreateStreamBitrateGraph(PacketDirection desired_direction, Plot* plot);
diff --git a/webrtc/tools/event_log_visualizer/generate_timeseries.cc b/webrtc/tools/event_log_visualizer/generate_timeseries.cc
index 273dcfa..27dc59c 100644
--- a/webrtc/tools/event_log_visualizer/generate_timeseries.cc
+++ b/webrtc/tools/event_log_visualizer/generate_timeseries.cc
@@ -51,6 +51,10 @@
             false,
             "Compute network delay based on sent packets and the received "
             "transport feedback.");
+DEFINE_bool(plot_fraction_loss,
+            false,
+            "Plot packet loss in percent for outgoing packets (as perceived by "
+            "the send-side bandwidth estimator).");
 
 int main(int argc, char* argv[]) {
   std::string program_name = argv[0];
@@ -116,6 +120,10 @@
     }
   }
 
+  if (FLAGS_plot_all || FLAGS_plot_fraction_loss) {
+    analyzer.CreateFractionLossGraph(collection->AppendNewPlot());
+  }
+
   if (FLAGS_plot_all || FLAGS_plot_total_bitrate) {
     if (FLAGS_incoming) {
       analyzer.CreateTotalBitrateGraph(webrtc::PacketDirection::kIncomingPacket,