Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(364)

Unified Diff: webrtc/rtc_tools/event_log_visualizer/main.cc

Issue 2983983002: Improved UI for event_log_analyzer tool (Closed)
Patch Set: Rebase Created 3 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/rtc_tools/event_log_visualizer/analyzer.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/rtc_tools/event_log_visualizer/main.cc
diff --git a/webrtc/rtc_tools/event_log_visualizer/main.cc b/webrtc/rtc_tools/event_log_visualizer/main.cc
index 7df0374484aec628b85e76f2884ab14054c189e7..12b55e6d24481bfde83d9dc32a2b12e8e210e416 100644
--- a/webrtc/rtc_tools/event_log_visualizer/main.cc
+++ b/webrtc/rtc_tools/event_log_visualizer/main.cc
@@ -18,64 +18,87 @@
#include "webrtc/test/field_trial.h"
#include "webrtc/test/testsupport/fileutils.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,
+DEFINE_string(plot_profile,
+ "default",
+ "A profile that selects a certain subset of the plots. Currently "
+ "defined profiles are \"all\", \"none\" and \"default\"");
+
+DEFINE_bool(plot_incoming_packet_sizes,
+ false,
+ "Plot bar graph showing the size of each incoming packet.");
+DEFINE_bool(plot_outgoing_packet_sizes,
+ false,
+ "Plot bar graph showing the size of each outgoing packet.");
+DEFINE_bool(plot_incoming_packet_count,
+ false,
+ "Plot the accumulated number of packets for each incoming stream.");
+DEFINE_bool(plot_outgoing_packet_count,
false,
- "Plot bar graph showing the size of each packet.");
+ "Plot the accumulated number of packets for each outgoing stream.");
DEFINE_bool(plot_audio_playout,
false,
"Plot bar graph showing the time between each audio playout.");
DEFINE_bool(plot_audio_level,
false,
- "Plot line graph showing the audio level.");
-DEFINE_bool(
- plot_sequence_number,
- false,
- "Plot the difference in sequence number between consecutive packets.");
+ "Plot line graph showing the audio level of incoming audio.");
+DEFINE_bool(plot_incoming_sequence_number_delta,
+ false,
+ "Plot the sequence number difference between consecutive incoming "
+ "packets.");
DEFINE_bool(
- plot_delay_change,
+ plot_incoming_delay_delta,
false,
"Plot the difference in 1-way path delay between consecutive packets.");
-DEFINE_bool(plot_accumulated_delay_change,
+DEFINE_bool(plot_incoming_delay,
+ true,
+ "Plot the 1-way path delay for incoming packets, normalized so "
+ "that the first packet has delay 0.");
+DEFINE_bool(plot_incoming_loss_rate,
+ true,
+ "Compute the loss rate for incoming packets using a method that's "
+ "similar to the one used for RTCP SR and RR fraction lost. Note "
+ "that the loss rate can be negative if packets are duplicated or "
+ "reordered.");
+DEFINE_bool(plot_incoming_bitrate,
+ true,
+ "Plot the total bitrate used by all incoming streams.");
+DEFINE_bool(plot_outgoing_bitrate,
+ true,
+ "Plot the total bitrate used by all outgoing streams.");
+DEFINE_bool(plot_incoming_stream_bitrate,
+ true,
+ "Plot the bitrate used by each incoming stream.");
+DEFINE_bool(plot_outgoing_stream_bitrate,
+ true,
+ "Plot the bitrate used by each outgoing stream.");
+DEFINE_bool(plot_simulated_sendside_bwe,
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.");
-DEFINE_bool(plot_bwe,
- false,
- "Run the bandwidth estimator with the logged rtp and rtcp and plot "
- "the output.");
+ "Run the send-side bandwidth estimator with the outgoing rtp and "
+ "incoming rtcp and plot the resulting estimate.");
DEFINE_bool(plot_network_delay_feedback,
- false,
+ true,
"Compute network delay based on sent packets and the received "
"transport feedback.");
-DEFINE_bool(plot_fraction_loss,
- false,
+DEFINE_bool(plot_fraction_loss_feedback,
+ true,
"Plot packet loss in percent for outgoing packets (as perceived by "
"the send-side bandwidth estimator).");
DEFINE_bool(plot_timestamps,
false,
"Plot the rtp timestamps of all rtp and rtcp packets over time.");
-DEFINE_bool(audio_encoder_bitrate_bps,
+DEFINE_bool(plot_audio_encoder_bitrate_bps,
false,
"Plot the audio encoder target bitrate.");
-DEFINE_bool(audio_encoder_frame_length_ms,
+DEFINE_bool(plot_audio_encoder_frame_length_ms,
false,
"Plot the audio encoder frame length.");
DEFINE_bool(
- audio_encoder_uplink_packet_loss_fraction,
+ plot_audio_encoder_packet_loss,
false,
- "Plot the uplink packet loss fraction which is send to the audio encoder.");
-DEFINE_bool(audio_encoder_fec, false, "Plot the audio encoder FEC.");
-DEFINE_bool(audio_encoder_dtx, false, "Plot the audio encoder DTX.");
-DEFINE_bool(audio_encoder_num_channels,
+ "Plot the uplink packet loss fraction which is sent to the audio encoder.");
+DEFINE_bool(plot_audio_encoder_fec, false, "Plot the audio encoder FEC.");
+DEFINE_bool(plot_audio_encoder_dtx, false, "Plot the audio encoder DTX.");
+DEFINE_bool(plot_audio_encoder_num_channels,
false,
"Plot the audio encoder number of channels.");
DEFINE_bool(plot_audio_jitter_buffer,
@@ -90,10 +113,13 @@ DEFINE_string(
"trials are separated by \"/\"");
DEFINE_bool(help, false, "prints this message");
-DEFINE_bool(
- show_detector_state,
- false,
- "Mark the delay based bwe detector state on the total bitrate graph");
+DEFINE_bool(show_detector_state,
+ false,
+ "Show the state of the delay based BWE detector on the total "
+ "bitrate graph");
+
+void SetAllPlotFlags(bool setting);
+
int main(int argc, char* argv[]) {
std::string program_name = argv[0];
@@ -102,7 +128,24 @@ int main(int argc, char* argv[]) {
"Example usage:\n" +
program_name + " <logfile> | python\n" + "Run " + program_name +
" --help for a list of command line options\n";
+
+ // Parse command line flags without removing them. We're only interested in
+ // the |plot_profile| flag.
+ rtc::FlagList::SetFlagsFromCommandLine(&argc, argv, false);
+ if (strcmp(FLAG_plot_profile, "all") == 0) {
+ SetAllPlotFlags(true);
+ } else if (strcmp(FLAG_plot_profile, "none") == 0) {
+ SetAllPlotFlags(false);
+ } else if (strcmp(FLAG_plot_profile, "default") == 0) {
+ // Do nothing.
+ } else {
+ rtc::Flag* plot_profile_flag = rtc::FlagList::Lookup("plot_profile");
+ RTC_CHECK(plot_profile_flag);
+ plot_profile_flag->Print(false);
+ }
+ // Parse the remaining flags. They are applied relative to the chosen profile.
rtc::FlagList::SetFlagsFromCommandLine(&argc, argv, true);
+
if (argc != 2 || FLAG_help) {
// Print usage information.
std::cout << usage;
@@ -129,118 +172,89 @@ int main(int argc, char* argv[]) {
std::unique_ptr<webrtc::plotting::PlotCollection> collection(
new webrtc::plotting::PythonPlotCollection());
- if (FLAG_plot_all || FLAG_plot_packets) {
- if (FLAG_incoming) {
- analyzer.CreatePacketGraph(webrtc::PacketDirection::kIncomingPacket,
- collection->AppendNewPlot());
- analyzer.CreateAccumulatedPacketsGraph(
- webrtc::PacketDirection::kIncomingPacket,
- collection->AppendNewPlot());
- }
- if (FLAG_outgoing) {
- analyzer.CreatePacketGraph(webrtc::PacketDirection::kOutgoingPacket,
- collection->AppendNewPlot());
- analyzer.CreateAccumulatedPacketsGraph(
- webrtc::PacketDirection::kOutgoingPacket,
- collection->AppendNewPlot());
- }
- }
-
- if (FLAG_plot_all || FLAG_plot_audio_playout) {
+ if (FLAG_plot_incoming_packet_sizes) {
+ analyzer.CreatePacketGraph(webrtc::PacketDirection::kIncomingPacket,
+ collection->AppendNewPlot());
+ }
+ if (FLAG_plot_outgoing_packet_sizes) {
+ analyzer.CreatePacketGraph(webrtc::PacketDirection::kOutgoingPacket,
+ collection->AppendNewPlot());
+ }
+ if (FLAG_plot_incoming_packet_count) {
+ analyzer.CreateAccumulatedPacketsGraph(
+ webrtc::PacketDirection::kIncomingPacket, collection->AppendNewPlot());
+ }
+ if (FLAG_plot_outgoing_packet_count) {
+ analyzer.CreateAccumulatedPacketsGraph(
+ webrtc::PacketDirection::kOutgoingPacket, collection->AppendNewPlot());
+ }
+ if (FLAG_plot_audio_playout) {
analyzer.CreatePlayoutGraph(collection->AppendNewPlot());
}
-
- if (FLAG_plot_all || FLAG_plot_audio_level) {
+ if (FLAG_plot_audio_level) {
analyzer.CreateAudioLevelGraph(collection->AppendNewPlot());
}
-
- if (FLAG_plot_all || FLAG_plot_sequence_number) {
- if (FLAG_incoming) {
- analyzer.CreateSequenceNumberGraph(collection->AppendNewPlot());
- }
+ if (FLAG_plot_incoming_sequence_number_delta) {
+ analyzer.CreateSequenceNumberGraph(collection->AppendNewPlot());
}
-
- if (FLAG_plot_all || FLAG_plot_delay_change) {
- if (FLAG_incoming) {
- analyzer.CreateDelayChangeGraph(collection->AppendNewPlot());
- }
+ if (FLAG_plot_incoming_delay_delta) {
+ analyzer.CreateIncomingDelayDeltaGraph(collection->AppendNewPlot());
}
-
- if (FLAG_plot_all || FLAG_plot_accumulated_delay_change) {
- if (FLAG_incoming) {
- analyzer.CreateAccumulatedDelayChangeGraph(collection->AppendNewPlot());
- }
+ if (FLAG_plot_incoming_delay) {
+ analyzer.CreateIncomingDelayGraph(collection->AppendNewPlot());
}
-
- if (FLAG_plot_all || FLAG_plot_fraction_loss) {
- analyzer.CreateFractionLossGraph(collection->AppendNewPlot());
+ if (FLAG_plot_incoming_loss_rate) {
analyzer.CreateIncomingPacketLossGraph(collection->AppendNewPlot());
}
-
- if (FLAG_plot_all || FLAG_plot_total_bitrate) {
- if (FLAG_incoming) {
- analyzer.CreateTotalBitrateGraph(webrtc::PacketDirection::kIncomingPacket,
- collection->AppendNewPlot(),
- FLAG_show_detector_state);
- }
- if (FLAG_outgoing) {
- analyzer.CreateTotalBitrateGraph(webrtc::PacketDirection::kOutgoingPacket,
- collection->AppendNewPlot(),
- FLAG_show_detector_state);
- }
- }
-
- if (FLAG_plot_all || FLAG_plot_stream_bitrate) {
- if (FLAG_incoming) {
- analyzer.CreateStreamBitrateGraph(
- webrtc::PacketDirection::kIncomingPacket,
- collection->AppendNewPlot());
- }
- if (FLAG_outgoing) {
- analyzer.CreateStreamBitrateGraph(
- webrtc::PacketDirection::kOutgoingPacket,
- collection->AppendNewPlot());
- }
- }
-
- if (FLAG_plot_all || FLAG_plot_bwe) {
+ if (FLAG_plot_incoming_bitrate) {
+ analyzer.CreateTotalBitrateGraph(webrtc::PacketDirection::kIncomingPacket,
+ collection->AppendNewPlot(),
+ FLAG_show_detector_state);
+ }
+ if (FLAG_plot_outgoing_bitrate) {
+ analyzer.CreateTotalBitrateGraph(webrtc::PacketDirection::kOutgoingPacket,
+ collection->AppendNewPlot(),
+ FLAG_show_detector_state);
+ }
+ if (FLAG_plot_incoming_stream_bitrate) {
+ analyzer.CreateStreamBitrateGraph(webrtc::PacketDirection::kIncomingPacket,
+ collection->AppendNewPlot());
+ }
+ if (FLAG_plot_outgoing_stream_bitrate) {
+ analyzer.CreateStreamBitrateGraph(webrtc::PacketDirection::kOutgoingPacket,
+ collection->AppendNewPlot());
+ }
+ if (FLAG_plot_simulated_sendside_bwe) {
analyzer.CreateBweSimulationGraph(collection->AppendNewPlot());
}
-
- if (FLAG_plot_all || FLAG_plot_network_delay_feedback) {
+ if (FLAG_plot_network_delay_feedback) {
analyzer.CreateNetworkDelayFeedbackGraph(collection->AppendNewPlot());
}
-
- if (FLAG_plot_all || FLAG_plot_timestamps) {
+ if (FLAG_plot_fraction_loss_feedback) {
+ analyzer.CreateFractionLossGraph(collection->AppendNewPlot());
+ }
+ if (FLAG_plot_timestamps) {
analyzer.CreateTimestampGraph(collection->AppendNewPlot());
}
-
- if (FLAG_plot_all || FLAG_audio_encoder_bitrate_bps) {
+ if (FLAG_plot_audio_encoder_bitrate_bps) {
analyzer.CreateAudioEncoderTargetBitrateGraph(collection->AppendNewPlot());
}
-
- if (FLAG_plot_all || FLAG_audio_encoder_frame_length_ms) {
+ if (FLAG_plot_audio_encoder_frame_length_ms) {
analyzer.CreateAudioEncoderFrameLengthGraph(collection->AppendNewPlot());
}
-
- if (FLAG_plot_all || FLAG_audio_encoder_uplink_packet_loss_fraction) {
- analyzer.CreateAudioEncoderUplinkPacketLossFractionGraph(
- collection->AppendNewPlot());
+ if (FLAG_plot_audio_encoder_packet_loss) {
+ analyzer.CreateAudioEncoderPacketLossGraph(collection->AppendNewPlot());
}
-
- if (FLAG_plot_all || FLAG_audio_encoder_fec) {
+ if (FLAG_plot_audio_encoder_fec) {
analyzer.CreateAudioEncoderEnableFecGraph(collection->AppendNewPlot());
}
-
- if (FLAG_plot_all || FLAG_audio_encoder_dtx) {
+ if (FLAG_plot_audio_encoder_dtx) {
analyzer.CreateAudioEncoderEnableDtxGraph(collection->AppendNewPlot());
}
-
- if (FLAG_plot_all || FLAG_audio_encoder_num_channels) {
+ if (FLAG_plot_audio_encoder_num_channels) {
analyzer.CreateAudioEncoderNumChannelsGraph(collection->AppendNewPlot());
}
-
- if (FLAG_plot_all || FLAG_plot_audio_jitter_buffer) {
+ if (FLAG_plot_audio_jitter_buffer) {
analyzer.CreateAudioJitterBufferGraph(
webrtc::test::ResourcePath(
"audio_processing/conversational_speech/EN_script2_F_sp2_B1",
@@ -252,3 +266,32 @@ int main(int argc, char* argv[]) {
return 0;
}
+
+
+void SetAllPlotFlags(bool setting) {
+ FLAG_plot_incoming_packet_sizes = setting;
+ FLAG_plot_outgoing_packet_sizes = setting;
+ FLAG_plot_incoming_packet_count = setting;
+ FLAG_plot_outgoing_packet_count = setting;
+ FLAG_plot_audio_playout = setting;
+ FLAG_plot_audio_level = setting;
+ FLAG_plot_incoming_sequence_number_delta = setting;
+ FLAG_plot_incoming_delay_delta = setting;
+ FLAG_plot_incoming_delay = setting;
+ FLAG_plot_incoming_loss_rate = setting;
+ FLAG_plot_incoming_bitrate = setting;
+ FLAG_plot_outgoing_bitrate = setting;
+ FLAG_plot_incoming_stream_bitrate = setting;
+ FLAG_plot_outgoing_stream_bitrate = setting;
+ FLAG_plot_simulated_sendside_bwe = setting;
+ FLAG_plot_network_delay_feedback = setting;
+ FLAG_plot_fraction_loss_feedback = setting;
+ FLAG_plot_timestamps = setting;
+ FLAG_plot_audio_encoder_bitrate_bps = setting;
+ FLAG_plot_audio_encoder_frame_length_ms = setting;
+ FLAG_plot_audio_encoder_packet_loss = setting;
+ FLAG_plot_audio_encoder_fec = setting;
+ FLAG_plot_audio_encoder_dtx = setting;
+ FLAG_plot_audio_encoder_num_channels = setting;
+ FLAG_plot_audio_jitter_buffer = setting;
+}
« no previous file with comments | « webrtc/rtc_tools/event_log_visualizer/analyzer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698