Revert of Visualization tool for WebrtcEventLogs (patchset #9 id:160001 of https://codereview.webrtc.org/1995523002/ )

Reason for revert:
Reverting while investigating a downstream build failure.

Original issue's description:
> Initial version of the local visualization tool for WebrtcEventLogs.
>
> Plot graphs to python code. Generate packet, playout, sequence number and total bitrate graphs.
>
> Add bitrate and latency plots. Generate multiple figures, and control which ones are used through command line flags.
>
> Committed: https://crrev.com/a478786ef1513790194792010f766324a469db4d
> Cr-Commit-Position: refs/heads/master@{#13443}

TBR=stefan@webrtc.org,aleloi@webrtc.org,phoglund@webrtc.org,henrika@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Review-Url: https://codereview.webrtc.org/2147453002
Cr-Commit-Position: refs/heads/master@{#13445}
diff --git a/webrtc/BUILD.gn b/webrtc/BUILD.gn
index 58f69a1..f151f10 100644
--- a/webrtc/BUILD.gn
+++ b/webrtc/BUILD.gn
@@ -358,7 +358,7 @@
     configs += [ ":common_config" ]
     public_configs = [ ":common_inherited_config" ]
 
-    public_deps = [
+    deps = [
       ":rtc_event_log_proto",
       ":webrtc_common",
     ]
diff --git a/webrtc/tools/BUILD.gn b/webrtc/tools/BUILD.gn
index abf0ca0..2d09563 100644
--- a/webrtc/tools/BUILD.gn
+++ b/webrtc/tools/BUILD.gn
@@ -171,36 +171,6 @@
 
 # Exclude tools depending on gflags since that's not available in Chromium.
 if (rtc_include_tests) {
-  if (rtc_enable_protobuf) {
-    executable("event_log_visualizer") {
-      sources = [
-        "event_log_visualizer/analyzer.cc",
-        "event_log_visualizer/analyzer.h",
-        "event_log_visualizer/generate_timeseries.cc",
-        "event_log_visualizer/plot_base.h",
-        "event_log_visualizer/plot_python.cc",
-        "event_log_visualizer/plot_python.h",
-      ]
-
-      configs += [ "..:common_config" ]
-      public_configs = [ "..:common_inherited_config" ]
-
-      if (is_clang && !is_nacl) {
-        # Suppress warnings from the Chromium Clang plugin.
-        # See http://code.google.com/p/webrtc/issues/detail?id=163 for details.
-        configs -= [ "//build/config/clang:find_bad_constructs" ]
-      }
-
-      defines = [ "ENABLE_RTC_EVENT_LOG" ]
-      deps = [
-        "../:rtc_event_log_parser",
-        "../modules/rtp_rtcp:rtp_rtcp",
-        "../system_wrappers:system_wrappers_default",
-        "//third_party/gflags",
-      ]
-    }
-  }
-
   executable("agc_harness") {
     testonly = true
     sources = [
diff --git a/webrtc/tools/DEPS b/webrtc/tools/DEPS
index 33df89f..73073f0 100644
--- a/webrtc/tools/DEPS
+++ b/webrtc/tools/DEPS
@@ -1,9 +1,7 @@
 include_rules = [
   "+webrtc/base",
-  "+webrtc/call",
   "+webrtc/common_video",
   "+webrtc/modules/audio_processing",
-  "+webrtc/modules/rtp_rtcp",
   "+webrtc/system_wrappers",
   "+webrtc/voice_engine",
 ]
diff --git a/webrtc/tools/event_log_visualizer/analyzer.cc b/webrtc/tools/event_log_visualizer/analyzer.cc
deleted file mode 100644
index 05d94ee..0000000
--- a/webrtc/tools/event_log_visualizer/analyzer.cc
+++ /dev/null
@@ -1,710 +0,0 @@
-/*
- *  Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/tools/event_log_visualizer/analyzer.h"
-
-#include <algorithm>
-#include <limits>
-#include <map>
-#include <sstream>
-#include <string>
-#include <utility>
-
-#include "webrtc/audio_receive_stream.h"
-#include "webrtc/audio_send_stream.h"
-#include "webrtc/base/checks.h"
-#include "webrtc/call.h"
-#include "webrtc/common_types.h"
-#include "webrtc/modules/rtp_rtcp/include/rtp_rtcp.h"
-#include "webrtc/modules/rtp_rtcp/include/rtp_rtcp_defines.h"
-#include "webrtc/modules/rtp_rtcp/source/rtp_utility.h"
-#include "webrtc/video_receive_stream.h"
-#include "webrtc/video_send_stream.h"
-
-namespace {
-
-std::string SsrcToString(uint32_t ssrc) {
-  std::stringstream ss;
-  ss << "SSRC " << ssrc;
-  return ss.str();
-}
-
-// Checks whether an SSRC is contained in the list of desired SSRCs.
-// Note that an empty SSRC list matches every SSRC.
-bool MatchingSsrc(uint32_t ssrc, const std::vector<uint32_t>& desired_ssrc) {
-  if (desired_ssrc.size() == 0)
-    return true;
-  return std::find(desired_ssrc.begin(), desired_ssrc.end(), ssrc) !=
-         desired_ssrc.end();
-}
-
-double AbsSendTimeToMicroseconds(int64_t abs_send_time) {
-  // The timestamp is a fixed point representation with 6 bits for seconds
-  // and 18 bits for fractions of a second. Thus, we divide by 2^18 to get the
-  // time in seconds and then multiply by 1000000 to convert to microseconds.
-  static constexpr double kTimestampToMicroSec =
-      1000000.0 / static_cast<double>(1 << 18);
-  return abs_send_time * kTimestampToMicroSec;
-}
-
-// Computes the difference |later| - |earlier| where |later| and |earlier|
-// are counters that wrap at |modulus|. The difference is chosen to have the
-// least absolute value. For example if |modulus| is 8, then the difference will
-// be chosen in the range [-3, 4]. If |modulus| is 9, then the difference will
-// be in [-4, 4].
-int64_t WrappingDifference(uint32_t later, uint32_t earlier, int64_t modulus) {
-  RTC_DCHECK_LE(1, modulus);
-  RTC_DCHECK_LT(later, modulus);
-  RTC_DCHECK_LT(earlier, modulus);
-  int64_t difference =
-      static_cast<int64_t>(later) - static_cast<int64_t>(earlier);
-  int64_t max_difference = modulus / 2;
-  int64_t min_difference = max_difference - modulus + 1;
-  if (difference > max_difference) {
-    difference -= modulus;
-  }
-  if (difference < min_difference) {
-    difference += modulus;
-  }
-  return difference;
-}
-
-class StreamId {
- public:
-  StreamId(uint32_t ssrc,
-           webrtc::PacketDirection direction,
-           webrtc::MediaType media_type)
-      : ssrc_(ssrc), direction_(direction), media_type_(media_type) {}
-
-  bool operator<(const StreamId& other) const {
-    if (ssrc_ < other.ssrc_) {
-      return true;
-    }
-    if (ssrc_ == other.ssrc_) {
-      if (media_type_ < other.media_type_) {
-        return true;
-      }
-      if (media_type_ == other.media_type_) {
-        if (direction_ < other.direction_) {
-          return true;
-        }
-      }
-    }
-    return false;
-  }
-
-  bool operator==(const StreamId& other) const {
-    return ssrc_ == other.ssrc_ && direction_ == other.direction_ &&
-           media_type_ == other.media_type_;
-  }
-
-  uint32_t GetSsrc() const { return ssrc_; }
-
- private:
-  uint32_t ssrc_;
-  webrtc::PacketDirection direction_;
-  webrtc::MediaType media_type_;
-};
-
-const double kXMargin = 1.02;
-const double kYMargin = 1.1;
-const double kDefaultXMin = -1;
-const double kDefaultYMin = -1;
-
-}  // namespace
-
-namespace webrtc {
-namespace plotting {
-
-EventLogAnalyzer::EventLogAnalyzer(const ParsedRtcEventLog& log)
-    : parsed_log_(log), window_duration_(250000), step_(10000) {
-  uint64_t first_timestamp = std::numeric_limits<uint64_t>::max();
-  uint64_t last_timestamp = std::numeric_limits<uint64_t>::min();
-  for (size_t i = 0; i < parsed_log_.GetNumberOfEvents(); i++) {
-    ParsedRtcEventLog::EventType event_type = parsed_log_.GetEventType(i);
-    if (event_type == ParsedRtcEventLog::EventType::VIDEO_RECEIVER_CONFIG_EVENT)
-      continue;
-    if (event_type == ParsedRtcEventLog::EventType::VIDEO_SENDER_CONFIG_EVENT)
-      continue;
-    if (event_type == ParsedRtcEventLog::EventType::AUDIO_RECEIVER_CONFIG_EVENT)
-      continue;
-    if (event_type == ParsedRtcEventLog::EventType::AUDIO_SENDER_CONFIG_EVENT)
-      continue;
-    uint64_t timestamp = parsed_log_.GetTimestamp(i);
-    first_timestamp = std::min(first_timestamp, timestamp);
-    last_timestamp = std::max(last_timestamp, timestamp);
-  }
-  if (last_timestamp < first_timestamp) {
-    // No useful events in the log.
-    first_timestamp = last_timestamp = 0;
-  }
-  begin_time_ = first_timestamp;
-  end_time_ = last_timestamp;
-}
-
-void EventLogAnalyzer::CreatePacketGraph(PacketDirection desired_direction,
-                                         Plot* plot) {
-  std::map<uint32_t, TimeSeries> time_series;
-
-  PacketDirection direction;
-  MediaType media_type;
-  uint8_t header[IP_PACKET_SIZE];
-  size_t header_length, total_length;
-  float max_y = 0;
-
-  for (size_t i = 0; i < parsed_log_.GetNumberOfEvents(); i++) {
-    ParsedRtcEventLog::EventType event_type = parsed_log_.GetEventType(i);
-    if (event_type == ParsedRtcEventLog::RTP_EVENT) {
-      parsed_log_.GetRtpHeader(i, &direction, &media_type, header,
-                               &header_length, &total_length);
-      if (direction == desired_direction) {
-        // Parse header to get SSRC.
-        RtpUtility::RtpHeaderParser rtp_parser(header, header_length);
-        RTPHeader parsed_header;
-        rtp_parser.Parse(&parsed_header);
-        // Filter on SSRC.
-        if (MatchingSsrc(parsed_header.ssrc, desired_ssrc_)) {
-          uint64_t timestamp = parsed_log_.GetTimestamp(i);
-          float x = static_cast<float>(timestamp - begin_time_) / 1000000;
-          float y = total_length;
-          max_y = std::max(max_y, y);
-          time_series[parsed_header.ssrc].points.push_back(
-              TimeSeriesPoint(x, y));
-        }
-      }
-    }
-  }
-
-  // Set labels and put in graph.
-  for (auto& kv : time_series) {
-    kv.second.label = SsrcToString(kv.first);
-    kv.second.style = BAR_GRAPH;
-    plot->series.push_back(std::move(kv.second));
-  }
-
-  plot->xaxis_min = kDefaultXMin;
-  plot->xaxis_max = (end_time_ - begin_time_) / 1000000 * kXMargin;
-  plot->xaxis_label = "Time (s)";
-  plot->yaxis_min = kDefaultYMin;
-  plot->yaxis_max = max_y * kYMargin;
-  plot->yaxis_label = "Packet size (bytes)";
-  if (desired_direction == webrtc::PacketDirection::kIncomingPacket) {
-    plot->title = "Incoming RTP packets";
-  } else if (desired_direction == webrtc::PacketDirection::kOutgoingPacket) {
-    plot->title = "Outgoing RTP packets";
-  }
-}
-
-// For each SSRC, plot the time between the consecutive playouts.
-void EventLogAnalyzer::CreatePlayoutGraph(Plot* plot) {
-  std::map<uint32_t, TimeSeries> time_series;
-  std::map<uint32_t, uint64_t> last_playout;
-
-  uint32_t ssrc;
-  float max_y = 0;
-
-  for (size_t i = 0; i < parsed_log_.GetNumberOfEvents(); i++) {
-    ParsedRtcEventLog::EventType event_type = parsed_log_.GetEventType(i);
-    if (event_type == ParsedRtcEventLog::AUDIO_PLAYOUT_EVENT) {
-      parsed_log_.GetAudioPlayout(i, &ssrc);
-      uint64_t timestamp = parsed_log_.GetTimestamp(i);
-      if (MatchingSsrc(ssrc, desired_ssrc_)) {
-        float x = static_cast<float>(timestamp - begin_time_) / 1000000;
-        float y = static_cast<float>(timestamp - last_playout[ssrc]) / 1000;
-        if (time_series[ssrc].points.size() == 0) {
-          // There were no previusly logged playout for this SSRC.
-          // Generate a point, but place it on the x-axis.
-          y = 0;
-        }
-        max_y = std::max(max_y, y);
-        time_series[ssrc].points.push_back(TimeSeriesPoint(x, y));
-        last_playout[ssrc] = timestamp;
-      }
-    }
-  }
-
-  // Set labels and put in graph.
-  for (auto& kv : time_series) {
-    kv.second.label = SsrcToString(kv.first);
-    kv.second.style = BAR_GRAPH;
-    plot->series.push_back(std::move(kv.second));
-  }
-
-  plot->xaxis_min = kDefaultXMin;
-  plot->xaxis_max = (end_time_ - begin_time_) / 1000000 * kXMargin;
-  plot->xaxis_label = "Time (s)";
-  plot->yaxis_min = kDefaultYMin;
-  plot->yaxis_max = max_y * kYMargin;
-  plot->yaxis_label = "Time since last playout (ms)";
-  plot->title = "Audio playout";
-}
-
-// For each SSRC, plot the time between the consecutive playouts.
-void EventLogAnalyzer::CreateSequenceNumberGraph(Plot* plot) {
-  std::map<uint32_t, TimeSeries> time_series;
-  std::map<uint32_t, uint16_t> last_seqno;
-
-  PacketDirection direction;
-  MediaType media_type;
-  uint8_t header[IP_PACKET_SIZE];
-  size_t header_length, total_length;
-
-  int max_y = 1;
-  int min_y = 0;
-
-  for (size_t i = 0; i < parsed_log_.GetNumberOfEvents(); i++) {
-    ParsedRtcEventLog::EventType event_type = parsed_log_.GetEventType(i);
-    if (event_type == ParsedRtcEventLog::RTP_EVENT) {
-      parsed_log_.GetRtpHeader(i, &direction, &media_type, header,
-                               &header_length, &total_length);
-      uint64_t timestamp = parsed_log_.GetTimestamp(i);
-      if (direction == PacketDirection::kIncomingPacket) {
-        // Parse header to get SSRC.
-        RtpUtility::RtpHeaderParser rtp_parser(header, header_length);
-        RTPHeader parsed_header;
-        rtp_parser.Parse(&parsed_header);
-        // Filter on SSRC.
-        if (MatchingSsrc(parsed_header.ssrc, desired_ssrc_)) {
-          float x = static_cast<float>(timestamp - begin_time_) / 1000000;
-          int y = WrappingDifference(parsed_header.sequenceNumber,
-                                     last_seqno[parsed_header.ssrc], 1ul << 16);
-          if (time_series[parsed_header.ssrc].points.size() == 0) {
-            // There were no previusly logged playout for this SSRC.
-            // Generate a point, but place it on the x-axis.
-            y = 0;
-          }
-          max_y = std::max(max_y, y);
-          min_y = std::min(min_y, y);
-          time_series[parsed_header.ssrc].points.push_back(
-              TimeSeriesPoint(x, y));
-          last_seqno[parsed_header.ssrc] = parsed_header.sequenceNumber;
-        }
-      }
-    }
-  }
-
-  // Set labels and put in graph.
-  for (auto& kv : time_series) {
-    kv.second.label = SsrcToString(kv.first);
-    kv.second.style = BAR_GRAPH;
-    plot->series.push_back(std::move(kv.second));
-  }
-
-  plot->xaxis_min = kDefaultXMin;
-  plot->xaxis_max = (end_time_ - begin_time_) / 1000000 * kXMargin;
-  plot->xaxis_label = "Time (s)";
-  plot->yaxis_min = min_y - (kYMargin - 1) / 2 * (max_y - min_y);
-  plot->yaxis_max = max_y + (kYMargin - 1) / 2 * (max_y - min_y);
-  plot->yaxis_label = "Difference since last packet";
-  plot->title = "Sequence number";
-}
-
-void EventLogAnalyzer::CreateDelayChangeGraph(Plot* plot) {
-  // Maps a stream identifier consisting of ssrc, direction and MediaType
-  // to the header extensions used by that stream,
-  std::map<StreamId, RtpHeaderExtensionMap> extension_maps;
-
-  struct SendReceiveTime {
-    SendReceiveTime() = default;
-    SendReceiveTime(uint32_t send_time, uint64_t recv_time)
-        : absolute_send_time(send_time), receive_timestamp(recv_time) {}
-    uint32_t absolute_send_time;  // 24-bit value in units of 2^-18 seconds.
-    uint64_t receive_timestamp;   // In microseconds.
-  };
-  std::map<StreamId, SendReceiveTime> last_packet;
-  std::map<StreamId, TimeSeries> time_series;
-
-  PacketDirection direction;
-  MediaType media_type;
-  uint8_t header[IP_PACKET_SIZE];
-  size_t header_length, total_length;
-
-  double max_y = 10;
-  double min_y = 0;
-
-  for (size_t i = 0; i < parsed_log_.GetNumberOfEvents(); i++) {
-    ParsedRtcEventLog::EventType event_type = parsed_log_.GetEventType(i);
-    if (event_type == ParsedRtcEventLog::VIDEO_RECEIVER_CONFIG_EVENT) {
-      VideoReceiveStream::Config config(nullptr);
-      parsed_log_.GetVideoReceiveConfig(i, &config);
-      StreamId stream(config.rtp.remote_ssrc, kIncomingPacket,
-                      MediaType::VIDEO);
-      extension_maps[stream].Erase();
-      for (size_t j = 0; j < config.rtp.extensions.size(); ++j) {
-        const std::string& extension = config.rtp.extensions[j].uri;
-        int id = config.rtp.extensions[j].id;
-        extension_maps[stream].Register(StringToRtpExtensionType(extension),
-                                        id);
-      }
-    } else if (event_type == ParsedRtcEventLog::VIDEO_SENDER_CONFIG_EVENT) {
-      VideoSendStream::Config config(nullptr);
-      parsed_log_.GetVideoSendConfig(i, &config);
-      for (auto ssrc : config.rtp.ssrcs) {
-        StreamId stream(ssrc, kIncomingPacket, MediaType::VIDEO);
-        extension_maps[stream].Erase();
-        for (size_t j = 0; j < config.rtp.extensions.size(); ++j) {
-          const std::string& extension = config.rtp.extensions[j].uri;
-          int id = config.rtp.extensions[j].id;
-          extension_maps[stream].Register(StringToRtpExtensionType(extension),
-                                          id);
-        }
-      }
-    } else if (event_type == ParsedRtcEventLog::AUDIO_RECEIVER_CONFIG_EVENT) {
-      AudioReceiveStream::Config config;
-      // TODO(terelius): Parse the audio configs once we have them
-    } else if (event_type == ParsedRtcEventLog::AUDIO_SENDER_CONFIG_EVENT) {
-      AudioSendStream::Config config(nullptr);
-      // TODO(terelius): Parse the audio configs once we have them
-    } else if (event_type == ParsedRtcEventLog::RTP_EVENT) {
-      parsed_log_.GetRtpHeader(i, &direction, &media_type, header,
-                               &header_length, &total_length);
-      if (direction == kIncomingPacket) {
-        // Parse header to get SSRC.
-        RtpUtility::RtpHeaderParser rtp_parser(header, header_length);
-        RTPHeader parsed_header;
-        rtp_parser.Parse(&parsed_header);
-        // Filter on SSRC.
-        if (MatchingSsrc(parsed_header.ssrc, desired_ssrc_)) {
-          StreamId stream(parsed_header.ssrc, direction, media_type);
-          // Look up the extension_map and parse it again to get the extensions.
-          if (extension_maps.count(stream) == 1) {
-            RtpHeaderExtensionMap* extension_map = &extension_maps[stream];
-            rtp_parser.Parse(&parsed_header, extension_map);
-            if (parsed_header.extension.hasAbsoluteSendTime) {
-              uint64_t timestamp = parsed_log_.GetTimestamp(i);
-              int64_t send_time_diff = WrappingDifference(
-                  parsed_header.extension.absoluteSendTime,
-                  last_packet[stream].absolute_send_time, 1ul << 24);
-              int64_t recv_time_diff =
-                  timestamp - last_packet[stream].receive_timestamp;
-
-              float x = static_cast<float>(timestamp - begin_time_) / 1000000;
-              double y = static_cast<double>(
-                             recv_time_diff -
-                             AbsSendTimeToMicroseconds(send_time_diff)) /
-                         1000;
-              if (time_series[stream].points.size() == 0) {
-                // There were no previusly logged playout for this SSRC.
-                // Generate a point, but place it on the x-axis.
-                y = 0;
-              }
-              max_y = std::max(max_y, y);
-              min_y = std::min(min_y, y);
-              time_series[stream].points.push_back(TimeSeriesPoint(x, y));
-              last_packet[stream] = SendReceiveTime(
-                  parsed_header.extension.absoluteSendTime, timestamp);
-            }
-          }
-        }
-      }
-    }
-  }
-
-  // Set labels and put in graph.
-  for (auto& kv : time_series) {
-    kv.second.label = SsrcToString(kv.first.GetSsrc());
-    kv.second.style = BAR_GRAPH;
-    plot->series.push_back(std::move(kv.second));
-  }
-
-  plot->xaxis_min = kDefaultXMin;
-  plot->xaxis_max = (end_time_ - begin_time_) / 1000000 * kXMargin;
-  plot->xaxis_label = "Time (s)";
-  plot->yaxis_min = min_y - (kYMargin - 1) / 2 * (max_y - min_y);
-  plot->yaxis_max = max_y + (kYMargin - 1) / 2 * (max_y - min_y);
-  plot->yaxis_label = "Latency change (ms)";
-  plot->title = "Network latency change between consecutive packets";
-}
-
-void EventLogAnalyzer::CreateAccumulatedDelayChangeGraph(Plot* plot) {
-  // TODO(terelius): Refactor
-
-  // Maps a stream identifier consisting of ssrc, direction and MediaType
-  // to the header extensions used by that stream.
-  std::map<StreamId, RtpHeaderExtensionMap> extension_maps;
-
-  struct SendReceiveTime {
-    SendReceiveTime() = default;
-    SendReceiveTime(uint32_t send_time, uint64_t recv_time, double accumulated)
-        : absolute_send_time(send_time),
-          receive_timestamp(recv_time),
-          accumulated_delay(accumulated) {}
-    uint32_t absolute_send_time;  // 24-bit value in units of 2^-18 seconds.
-    uint64_t receive_timestamp;   // In microseconds.
-    double accumulated_delay;     // In milliseconds.
-  };
-  std::map<StreamId, SendReceiveTime> last_packet;
-  std::map<StreamId, TimeSeries> time_series;
-
-  PacketDirection direction;
-  MediaType media_type;
-  uint8_t header[IP_PACKET_SIZE];
-  size_t header_length, total_length;
-
-  double max_y = 10;
-  double min_y = 0;
-
-  for (size_t i = 0; i < parsed_log_.GetNumberOfEvents(); i++) {
-    ParsedRtcEventLog::EventType event_type = parsed_log_.GetEventType(i);
-    if (event_type == ParsedRtcEventLog::VIDEO_RECEIVER_CONFIG_EVENT) {
-      VideoReceiveStream::Config config(nullptr);
-      parsed_log_.GetVideoReceiveConfig(i, &config);
-      StreamId stream(config.rtp.remote_ssrc, kIncomingPacket,
-                      MediaType::VIDEO);
-      extension_maps[stream].Erase();
-      for (size_t j = 0; j < config.rtp.extensions.size(); ++j) {
-        const std::string& extension = config.rtp.extensions[j].uri;
-        int id = config.rtp.extensions[j].id;
-        extension_maps[stream].Register(StringToRtpExtensionType(extension),
-                                        id);
-      }
-    } else if (event_type == ParsedRtcEventLog::VIDEO_SENDER_CONFIG_EVENT) {
-      VideoSendStream::Config config(nullptr);
-      parsed_log_.GetVideoSendConfig(i, &config);
-      for (auto ssrc : config.rtp.ssrcs) {
-        StreamId stream(ssrc, kIncomingPacket, MediaType::VIDEO);
-        extension_maps[stream].Erase();
-        for (size_t j = 0; j < config.rtp.extensions.size(); ++j) {
-          const std::string& extension = config.rtp.extensions[j].uri;
-          int id = config.rtp.extensions[j].id;
-          extension_maps[stream].Register(StringToRtpExtensionType(extension),
-                                          id);
-        }
-      }
-    } else if (event_type == ParsedRtcEventLog::AUDIO_RECEIVER_CONFIG_EVENT) {
-      AudioReceiveStream::Config config;
-      // TODO(terelius): Parse the audio configs once we have them
-    } else if (event_type == ParsedRtcEventLog::AUDIO_SENDER_CONFIG_EVENT) {
-      AudioSendStream::Config config(nullptr);
-      // TODO(terelius): Parse the audio configs once we have them
-    } else if (event_type == ParsedRtcEventLog::RTP_EVENT) {
-      parsed_log_.GetRtpHeader(i, &direction, &media_type, header,
-                               &header_length, &total_length);
-      if (direction == kIncomingPacket) {
-        // Parse header to get SSRC.
-        RtpUtility::RtpHeaderParser rtp_parser(header, header_length);
-        RTPHeader parsed_header;
-        rtp_parser.Parse(&parsed_header);
-        // Filter on SSRC.
-        if (MatchingSsrc(parsed_header.ssrc, desired_ssrc_)) {
-          StreamId stream(parsed_header.ssrc, direction, media_type);
-          // Look up the extension_map and parse it again to get the extensions.
-          if (extension_maps.count(stream) == 1) {
-            RtpHeaderExtensionMap* extension_map = &extension_maps[stream];
-            rtp_parser.Parse(&parsed_header, extension_map);
-            if (parsed_header.extension.hasAbsoluteSendTime) {
-              uint64_t timestamp = parsed_log_.GetTimestamp(i);
-              int64_t send_time_diff = WrappingDifference(
-                  parsed_header.extension.absoluteSendTime,
-                  last_packet[stream].absolute_send_time, 1ul << 24);
-              int64_t recv_time_diff =
-                  timestamp - last_packet[stream].receive_timestamp;
-
-              float x = static_cast<float>(timestamp - begin_time_) / 1000000;
-              double y = last_packet[stream].accumulated_delay +
-                         static_cast<double>(
-                             recv_time_diff -
-                             AbsSendTimeToMicroseconds(send_time_diff)) /
-                             1000;
-              if (time_series[stream].points.size() == 0) {
-                // There were no previusly logged playout for this SSRC.
-                // Generate a point, but place it on the x-axis.
-                y = 0;
-              }
-              max_y = std::max(max_y, y);
-              min_y = std::min(min_y, y);
-              time_series[stream].points.push_back(TimeSeriesPoint(x, y));
-              last_packet[stream] = SendReceiveTime(
-                  parsed_header.extension.absoluteSendTime, timestamp, y);
-            }
-          }
-        }
-      }
-    }
-  }
-
-  // Set labels and put in graph.
-  for (auto& kv : time_series) {
-    kv.second.label = SsrcToString(kv.first.GetSsrc());
-    kv.second.style = LINE_GRAPH;
-    plot->series.push_back(std::move(kv.second));
-  }
-
-  plot->xaxis_min = kDefaultXMin;
-  plot->xaxis_max = (end_time_ - begin_time_) / 1000000 * kXMargin;
-  plot->xaxis_label = "Time (s)";
-  plot->yaxis_min = min_y - (kYMargin - 1) / 2 * (max_y - min_y);
-  plot->yaxis_max = max_y + (kYMargin - 1) / 2 * (max_y - min_y);
-  plot->yaxis_label = "Latency change (ms)";
-  plot->title = "Accumulated network latency change";
-}
-
-// Plot the total bandwidth used by all RTP streams.
-void EventLogAnalyzer::CreateTotalBitrateGraph(
-    PacketDirection desired_direction,
-    Plot* plot) {
-  struct TimestampSize {
-    TimestampSize(uint64_t t, size_t s) : timestamp(t), size(s) {}
-    uint64_t timestamp;
-    size_t size;
-  };
-  std::vector<TimestampSize> packets;
-
-  PacketDirection direction;
-  size_t total_length;
-
-  // Extract timestamps and sizes for the relevant packets.
-  for (size_t i = 0; i < parsed_log_.GetNumberOfEvents(); i++) {
-    ParsedRtcEventLog::EventType event_type = parsed_log_.GetEventType(i);
-    if (event_type == ParsedRtcEventLog::RTP_EVENT) {
-      parsed_log_.GetRtpHeader(i, &direction, nullptr, nullptr, nullptr,
-                               &total_length);
-      if (direction == desired_direction) {
-        uint64_t timestamp = parsed_log_.GetTimestamp(i);
-        packets.push_back(TimestampSize(timestamp, total_length));
-      }
-    }
-  }
-
-  size_t window_index_begin = 0;
-  size_t window_index_end = 0;
-  size_t bytes_in_window = 0;
-  float max_y = 0;
-
-  // Calculate a moving average of the bitrate and store in a TimeSeries.
-  plot->series.push_back(TimeSeries());
-  for (uint64_t time = begin_time_; time < end_time_ + step_; time += step_) {
-    while (window_index_end < packets.size() &&
-           packets[window_index_end].timestamp < time) {
-      bytes_in_window += packets[window_index_end].size;
-      window_index_end++;
-    }
-    while (window_index_begin < packets.size() &&
-           packets[window_index_begin].timestamp < time - window_duration_) {
-      RTC_DCHECK_LE(packets[window_index_begin].size, bytes_in_window);
-      bytes_in_window -= packets[window_index_begin].size;
-      window_index_begin++;
-    }
-    float window_duration_in_seconds =
-        static_cast<float>(window_duration_) / 1000000;
-    float x = static_cast<float>(time - begin_time_) / 1000000;
-    float y = bytes_in_window * 8 / window_duration_in_seconds / 1000;
-    max_y = std::max(max_y, y);
-    plot->series.back().points.push_back(TimeSeriesPoint(x, y));
-  }
-
-  // Set labels.
-  if (desired_direction == webrtc::PacketDirection::kIncomingPacket) {
-    plot->series.back().label = "Incoming bitrate";
-  } else if (desired_direction == webrtc::PacketDirection::kOutgoingPacket) {
-    plot->series.back().label = "Outgoing bitrate";
-  }
-  plot->series.back().style = LINE_GRAPH;
-
-  plot->xaxis_min = kDefaultXMin;
-  plot->xaxis_max = (end_time_ - begin_time_) / 1000000 * kXMargin;
-  plot->xaxis_label = "Time (s)";
-  plot->yaxis_min = kDefaultYMin;
-  plot->yaxis_max = max_y * kYMargin;
-  plot->yaxis_label = "Bitrate (kbps)";
-  if (desired_direction == webrtc::PacketDirection::kIncomingPacket) {
-    plot->title = "Incoming RTP bitrate";
-  } else if (desired_direction == webrtc::PacketDirection::kOutgoingPacket) {
-    plot->title = "Outgoing RTP bitrate";
-  }
-}
-
-// For each SSRC, plot the bandwidth used by that stream.
-void EventLogAnalyzer::CreateStreamBitrateGraph(
-    PacketDirection desired_direction,
-    Plot* plot) {
-  struct TimestampSize {
-    TimestampSize(uint64_t t, size_t s) : timestamp(t), size(s) {}
-    uint64_t timestamp;
-    size_t size;
-  };
-  std::map<uint32_t, std::vector<TimestampSize> > packets;
-
-  PacketDirection direction;
-  MediaType media_type;
-  uint8_t header[IP_PACKET_SIZE];
-  size_t header_length, total_length;
-
-  // Extract timestamps and sizes for the relevant packets.
-  for (size_t i = 0; i < parsed_log_.GetNumberOfEvents(); i++) {
-    ParsedRtcEventLog::EventType event_type = parsed_log_.GetEventType(i);
-    if (event_type == ParsedRtcEventLog::RTP_EVENT) {
-      parsed_log_.GetRtpHeader(i, &direction, &media_type, header,
-                               &header_length, &total_length);
-      if (direction == desired_direction) {
-        // Parse header to get SSRC.
-        RtpUtility::RtpHeaderParser rtp_parser(header, header_length);
-        RTPHeader parsed_header;
-        rtp_parser.Parse(&parsed_header);
-        // Filter on SSRC.
-        if (MatchingSsrc(parsed_header.ssrc, desired_ssrc_)) {
-          uint64_t timestamp = parsed_log_.GetTimestamp(i);
-          packets[parsed_header.ssrc].push_back(
-              TimestampSize(timestamp, total_length));
-        }
-      }
-    }
-  }
-
-  float max_y = 0;
-
-  for (auto& kv : packets) {
-    size_t window_index_begin = 0;
-    size_t window_index_end = 0;
-    size_t bytes_in_window = 0;
-
-    // Calculate a moving average of the bitrate and store in a TimeSeries.
-    plot->series.push_back(TimeSeries());
-    for (uint64_t time = begin_time_; time < end_time_ + step_; time += step_) {
-      while (window_index_end < kv.second.size() &&
-             kv.second[window_index_end].timestamp < time) {
-        bytes_in_window += kv.second[window_index_end].size;
-        window_index_end++;
-      }
-      while (window_index_begin < kv.second.size() &&
-             kv.second[window_index_begin].timestamp <
-                 time - window_duration_) {
-        RTC_DCHECK_LE(kv.second[window_index_begin].size, bytes_in_window);
-        bytes_in_window -= kv.second[window_index_begin].size;
-        window_index_begin++;
-      }
-      float window_duration_in_seconds =
-          static_cast<float>(window_duration_) / 1000000;
-      float x = static_cast<float>(time - begin_time_) / 1000000;
-      float y = bytes_in_window * 8 / window_duration_in_seconds / 1000;
-      max_y = std::max(max_y, y);
-      plot->series.back().points.push_back(TimeSeriesPoint(x, y));
-    }
-
-    // Set labels.
-    plot->series.back().label = SsrcToString(kv.first);
-    plot->series.back().style = LINE_GRAPH;
-  }
-
-  plot->xaxis_min = kDefaultXMin;
-  plot->xaxis_max = (end_time_ - begin_time_) / 1000000 * kXMargin;
-  plot->xaxis_label = "Time (s)";
-  plot->yaxis_min = kDefaultYMin;
-  plot->yaxis_max = max_y * kYMargin;
-  plot->yaxis_label = "Bitrate (kbps)";
-  if (desired_direction == webrtc::PacketDirection::kIncomingPacket) {
-    plot->title = "Incoming bitrate per stream";
-  } else if (desired_direction == webrtc::PacketDirection::kOutgoingPacket) {
-    plot->title = "Outgoing bitrate per stream";
-  }
-}
-
-}  // namespace plotting
-}  // namespace webrtc
diff --git a/webrtc/tools/event_log_visualizer/analyzer.h b/webrtc/tools/event_log_visualizer/analyzer.h
deleted file mode 100644
index 08fcd5c..0000000
--- a/webrtc/tools/event_log_visualizer/analyzer.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- *  Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef WEBRTC_TOOLS_EVENT_LOG_VISUALIZER_ANALYZER_H_
-#define WEBRTC_TOOLS_EVENT_LOG_VISUALIZER_ANALYZER_H_
-
-#include <vector>
-
-#include "webrtc/call/rtc_event_log_parser.h"
-#include "webrtc/tools/event_log_visualizer/plot_base.h"
-
-namespace webrtc {
-namespace plotting {
-
-class EventLogAnalyzer {
- public:
-  // The EventLogAnalyzer keeps a reference to the ParsedRtcEventLog for the
-  // duration of its lifetime. The ParsedRtcEventLog must not be destroyed or
-  // modified while the EventLogAnalyzer is being used.
-  explicit EventLogAnalyzer(const ParsedRtcEventLog& log);
-
-  void CreatePacketGraph(PacketDirection desired_direction, Plot* plot);
-
-  void CreatePlayoutGraph(Plot* plot);
-
-  void CreateSequenceNumberGraph(Plot* plot);
-
-  void CreateDelayChangeGraph(Plot* plot);
-
-  void CreateAccumulatedDelayChangeGraph(Plot* plot);
-
-  void CreateTotalBitrateGraph(PacketDirection desired_direction, Plot* plot);
-
-  void CreateStreamBitrateGraph(PacketDirection desired_direction, Plot* plot);
-
- private:
-  const ParsedRtcEventLog& parsed_log_;
-
-  // A list of SSRCs we are interested in analysing.
-  // If left empty, all SSRCs will be considered relevant.
-  std::vector<uint32_t> desired_ssrc_;
-
-  // Window and step size used for calculating moving averages, e.g. bitrate.
-  // The generated data points will be |step_| microseconds apart.
-  // Only events occuring at most |window_duration_| microseconds before the
-  // current data point will be part of the average.
-  uint64_t window_duration_;
-  uint64_t step_;
-
-  // First and last events of the log.
-  uint64_t begin_time_;
-  uint64_t end_time_;
-};
-
-}  // namespace plotting
-}  // namespace webrtc
-
-#endif  // WEBRTC_TOOLS_EVENT_LOG_VISUALIZER_ANALYZER_H_
diff --git a/webrtc/tools/event_log_visualizer/generate_timeseries.cc b/webrtc/tools/event_log_visualizer/generate_timeseries.cc
deleted file mode 100644
index d213947..0000000
--- a/webrtc/tools/event_log_visualizer/generate_timeseries.cc
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- *  Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <iostream>
-
-#include "gflags/gflags.h"
-#include "webrtc/call/rtc_event_log_parser.h"
-#include "webrtc/tools/event_log_visualizer/analyzer.h"
-#include "webrtc/tools/event_log_visualizer/plot_base.h"
-#include "webrtc/tools/event_log_visualizer/plot_python.h"
-
-DEFINE_bool(incoming, true, "Plot statistics for incoming packets.");
-DEFINE_bool(outgoing, true, "Plot statistics for outgoing packets.");
-DEFINE_bool(plot_all, true, "Plot all different data types.");
-DEFINE_bool(plot_packets,
-            false,
-            "Plot bar graph showing the size of each packet.");
-DEFINE_bool(plot_audio_playout,
-            false,
-            "Plot bar graph showing the time between each audio playout.");
-DEFINE_bool(
-    plot_sequence_number,
-    false,
-    "Plot the difference in sequence number between consecutive packets.");
-DEFINE_bool(
-    plot_delay_change,
-    false,
-    "Plot the difference in 1-way path delay between consecutive packets.");
-DEFINE_bool(plot_accumulated_delay_change,
-            false,
-            "Plot the accumulated 1-way path delay change, or the path delay "
-            "change compared to the first packet.");
-DEFINE_bool(plot_total_bitrate,
-            false,
-            "Plot the total bitrate used by all streams.");
-DEFINE_bool(plot_stream_bitrate,
-            false,
-            "Plot the bitrate used by each stream.");
-
-int main(int argc, char* argv[]) {
-  std::string program_name = argv[0];
-  std::string usage =
-      "A tool for visualizing WebRTC event logs.\n"
-      "Example usage:\n" +
-      program_name + " <logfile> | python\n" + "Run " + program_name +
-      " --help for a list of command line options\n";
-  google::SetUsageMessage(usage);
-  google::ParseCommandLineFlags(&argc, &argv, true);
-
-  if (argc != 2) {
-    // Print usage information.
-    std::cout << google::ProgramUsage();
-    return 0;
-  }
-
-  std::string filename = argv[1];
-
-  webrtc::ParsedRtcEventLog parsed_log;
-
-  if (!parsed_log.ParseFile(filename)) {
-    std::cerr << "Could not parse the entire log file." << std::endl;
-    std::cerr << "Proceeding to analyze the first "
-              << parsed_log.GetNumberOfEvents() << " events in the file."
-              << std::endl;
-  }
-
-  webrtc::plotting::EventLogAnalyzer analyzer(parsed_log);
-  std::unique_ptr<webrtc::plotting::PlotCollection> collection(
-      new webrtc::plotting::PythonPlotCollection());
-
-  if (FLAGS_plot_all || FLAGS_plot_packets) {
-    if (FLAGS_incoming) {
-      analyzer.CreatePacketGraph(webrtc::PacketDirection::kIncomingPacket,
-                                 collection->append_new_plot());
-    }
-    if (FLAGS_outgoing) {
-      analyzer.CreatePacketGraph(webrtc::PacketDirection::kOutgoingPacket,
-                                 collection->append_new_plot());
-    }
-  }
-
-  if (FLAGS_plot_all || FLAGS_plot_audio_playout) {
-    analyzer.CreatePlayoutGraph(collection->append_new_plot());
-  }
-
-  if (FLAGS_plot_all || FLAGS_plot_sequence_number) {
-    if (FLAGS_incoming) {
-      analyzer.CreateSequenceNumberGraph(collection->append_new_plot());
-    }
-  }
-
-  if (FLAGS_plot_all || FLAGS_plot_delay_change) {
-    if (FLAGS_incoming) {
-      analyzer.CreateDelayChangeGraph(collection->append_new_plot());
-    }
-  }
-
-  if (FLAGS_plot_all || FLAGS_plot_accumulated_delay_change) {
-    if (FLAGS_incoming) {
-      analyzer.CreateAccumulatedDelayChangeGraph(collection->append_new_plot());
-    }
-  }
-
-  if (FLAGS_plot_all || FLAGS_plot_total_bitrate) {
-    if (FLAGS_incoming) {
-      analyzer.CreateTotalBitrateGraph(webrtc::PacketDirection::kIncomingPacket,
-                                       collection->append_new_plot());
-    }
-    if (FLAGS_outgoing) {
-      analyzer.CreateTotalBitrateGraph(webrtc::PacketDirection::kOutgoingPacket,
-                                       collection->append_new_plot());
-    }
-  }
-
-  if (FLAGS_plot_all || FLAGS_plot_stream_bitrate) {
-    if (FLAGS_incoming) {
-      analyzer.CreateStreamBitrateGraph(
-          webrtc::PacketDirection::kIncomingPacket,
-          collection->append_new_plot());
-    }
-    if (FLAGS_outgoing) {
-      analyzer.CreateStreamBitrateGraph(
-          webrtc::PacketDirection::kOutgoingPacket,
-          collection->append_new_plot());
-    }
-  }
-
-  collection->draw();
-
-  return 0;
-}
diff --git a/webrtc/tools/event_log_visualizer/plot_base.h b/webrtc/tools/event_log_visualizer/plot_base.h
deleted file mode 100644
index 925dcec..0000000
--- a/webrtc/tools/event_log_visualizer/plot_base.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- *  Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-#ifndef WEBRTC_TOOLS_EVENT_LOG_VISUALIZER_PLOT_BASE_H_
-#define WEBRTC_TOOLS_EVENT_LOG_VISUALIZER_PLOT_BASE_H_
-
-#include <memory>
-#include <string>
-#include <utility>
-#include <vector>
-
-namespace webrtc {
-namespace plotting {
-
-enum PlotStyle { LINE_GRAPH, BAR_GRAPH };
-
-struct TimeSeriesPoint {
-  TimeSeriesPoint(float x, float y) : x(x), y(y) {}
-  float x;
-  float y;
-};
-
-struct TimeSeries {
-  TimeSeries() = default;
-  TimeSeries(TimeSeries&& other)
-      : label(std::move(other.label)),
-        style(other.style),
-        points(std::move(other.points)) {}
-  TimeSeries& operator=(TimeSeries&& other) {
-    label = std::move(other.label);
-    style = other.style;
-    points = std::move(other.points);
-    return *this;
-  }
-
-  std::string label;
-  PlotStyle style;
-  std::vector<TimeSeriesPoint> points;
-};
-
-// This is basically a struct that represents of a general graph, with axes,
-// title and one or more data series. We make it a class only to document that
-// it also specifies an interface for the draw()ing objects.
-class Plot {
- public:
-  virtual ~Plot() {}
-  virtual void draw() = 0;
-
-  float xaxis_min;
-  float xaxis_max;
-  std::string xaxis_label;
-  float yaxis_min;
-  float yaxis_max;
-  std::string yaxis_label;
-  std::vector<TimeSeries> series;
-  std::string title;
-};
-
-class PlotCollection {
- public:
-  virtual ~PlotCollection() {}
-  virtual void draw() = 0;
-  virtual Plot* append_new_plot() = 0;
-
- protected:
-  std::vector<std::unique_ptr<Plot> > plots;
-};
-
-}  // namespace plotting
-}  // namespace webrtc
-
-#endif  // WEBRTC_TOOLS_EVENT_LOG_VISUALIZER_PLOT_BASE_H_
diff --git a/webrtc/tools/event_log_visualizer/plot_python.cc b/webrtc/tools/event_log_visualizer/plot_python.cc
deleted file mode 100644
index 916bc2e..0000000
--- a/webrtc/tools/event_log_visualizer/plot_python.cc
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- *  Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/tools/event_log_visualizer/plot_python.h"
-
-#include <stdio.h>
-
-namespace webrtc {
-namespace plotting {
-
-PythonPlot::PythonPlot() {}
-
-PythonPlot::~PythonPlot() {}
-
-void PythonPlot::draw() {
-  // Write python commands to stdout. Intended program usage is
-  // ./event_log_visualizer event_log160330.dump | python
-
-  if (!series.empty()) {
-    printf("color_count = %zu\n", series.size());
-    printf(
-        "hls_colors = [(i*1.0/color_count, 0.25+i*0.5/color_count, 0.8) for i "
-        "in range(color_count)]\n");
-    printf("rgb_colors = [colorsys.hls_to_rgb(*hls) for hls in hls_colors]\n");
-
-    for (size_t i = 0; i < series.size(); i++) {
-      // List x coordinates
-      printf("x%zu = [", i);
-      if (series[i].points.size() > 0)
-        printf("%G", series[i].points[0].x);
-      for (size_t j = 1; j < series[i].points.size(); j++)
-        printf(", %G", series[i].points[j].x);
-      printf("]\n");
-
-      // List y coordinates
-      printf("y%zu = [", i);
-      if (series[i].points.size() > 0)
-        printf("%G", series[i].points[0].y);
-      for (size_t j = 1; j < series[i].points.size(); j++)
-        printf(", %G", series[i].points[j].y);
-      printf("]\n");
-
-      if (series[i].style == BAR_GRAPH) {
-        // There is a plt.bar function that draws bar plots,
-        // but it is *way* too slow to be useful.
-        printf(
-            "plt.vlines(x%zu, map(lambda t: min(t,0), y%zu), map(lambda t: "
-            "max(t,0), y%zu), color=rgb_colors[%zu], "
-            "label=\'%s\')\n",
-            i, i, i, i, series[i].label.c_str());
-      } else if (series[i].style == LINE_GRAPH) {
-        printf("plt.plot(x%zu, y%zu, color=rgb_colors[%zu], label=\'%s\')\n", i,
-               i, i, series[i].label.c_str());
-      } else {
-        printf("raise Exception(\"Unknown graph type\")\n");
-      }
-    }
-  }
-
-  printf("plt.xlim(%f, %f)\n", xaxis_min, xaxis_max);
-  printf("plt.ylim(%f, %f)\n", yaxis_min, yaxis_max);
-  printf("plt.xlabel(\'%s\')\n", xaxis_label.c_str());
-  printf("plt.ylabel(\'%s\')\n", yaxis_label.c_str());
-  printf("plt.title(\'%s\')\n", title.c_str());
-  if (!series.empty()) {
-    printf("plt.legend(loc=\'best\', fontsize=\'small\')\n");
-  }
-}
-
-PythonPlotCollection::PythonPlotCollection() {}
-
-PythonPlotCollection::~PythonPlotCollection() {}
-
-void PythonPlotCollection::draw() {
-  printf("import matplotlib.pyplot as plt\n");
-  printf("import colorsys\n");
-  for (size_t i = 0; i < plots.size(); i++) {
-    printf("plt.figure(%zu)\n", i);
-    plots[i]->draw();
-  }
-  printf("plt.show()\n");
-}
-
-Plot* PythonPlotCollection::append_new_plot() {
-  Plot* plot = new PythonPlot();
-  plots.push_back(std::unique_ptr<Plot>(plot));
-  return plot;
-}
-
-}  // namespace plotting
-}  // namespace webrtc
diff --git a/webrtc/tools/event_log_visualizer/plot_python.h b/webrtc/tools/event_log_visualizer/plot_python.h
deleted file mode 100644
index 8d63f95..0000000
--- a/webrtc/tools/event_log_visualizer/plot_python.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- *  Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-#ifndef WEBRTC_TOOLS_EVENT_LOG_VISUALIZER_PLOT_PYTHON_H_
-#define WEBRTC_TOOLS_EVENT_LOG_VISUALIZER_PLOT_PYTHON_H_
-
-#include "webrtc/tools/event_log_visualizer/plot_base.h"
-
-namespace webrtc {
-namespace plotting {
-
-class PythonPlot final : public Plot {
- public:
-  PythonPlot();
-  ~PythonPlot() override;
-  void draw() override;
-};
-
-class PythonPlotCollection final : public PlotCollection {
- public:
-  PythonPlotCollection();
-  ~PythonPlotCollection() override;
-  void draw() override;
-  Plot* append_new_plot() override;
-};
-
-}  // namespace plotting
-}  // namespace webrtc
-
-#endif  // WEBRTC_TOOLS_EVENT_LOG_VISUALIZER_PLOT_PYTHON_H_
diff --git a/webrtc/tools/tools.gyp b/webrtc/tools/tools.gyp
index fda6b05..998319e 100644
--- a/webrtc/tools/tools.gyp
+++ b/webrtc/tools/tools.gyp
@@ -99,29 +99,6 @@
     }, # force_mic_volume_max
   ],
   'conditions': [
-    ['enable_protobuf==1', {
-      'targets': [
-        {
-          # This target should only be built if enable_protobuf is set
-          'target_name': 'event_log_visualizer',
-          'type': 'executable',
-          'dependencies': [
-            '<(webrtc_root)/webrtc.gyp:rtc_event_log_parser',
-            '<(webrtc_root)/modules/modules.gyp:rtp_rtcp',
-            '<(webrtc_root)/system_wrappers/system_wrappers.gyp:metrics_default',
-            '<(DEPTH)/third_party/gflags/gflags.gyp:gflags',
-          ],
-          'sources': [
-            'event_log_visualizer/analyzer.cc',
-            'event_log_visualizer/analyzer.h',
-            'event_log_visualizer/generate_timeseries.cc',
-            'event_log_visualizer/plot_base.h',
-            'event_log_visualizer/plot_python.cc',
-            'event_log_visualizer/plot_python.h',
-          ],
-        },
-      ],
-    }],
     ['include_tests==1', {
       'targets' : [
         {