/* * 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 RTC_TOOLS_RTC_EVENT_LOG_VISUALIZER_ANALYZER_H_ #define RTC_TOOLS_RTC_EVENT_LOG_VISUALIZER_ANALYZER_H_ #include #include #include #include #include #include #include "logging/rtc_event_log/rtc_event_log_parser.h" #include "modules/audio_coding/neteq/tools/neteq_stats_getter.h" #include "rtc_base/strings/string_builder.h" #include "rtc_tools/rtc_event_log_visualizer/analyzer_common.h" #include "rtc_tools/rtc_event_log_visualizer/plot_base.h" namespace webrtc { class EventLogAnalyzer { public: // The EventLogAnalyzer keeps a reference to the ParsedRtcEventLogNew for the // duration of its lifetime. The ParsedRtcEventLogNew must not be destroyed or // modified while the EventLogAnalyzer is being used. EventLogAnalyzer(const ParsedRtcEventLog& log, bool normalize_time); EventLogAnalyzer(const ParsedRtcEventLog& log, const AnalyzerConfig& config); void CreatePacketGraph(PacketDirection direction, Plot* plot); void CreateRtcpTypeGraph(PacketDirection direction, Plot* plot); void CreateAccumulatedPacketsGraph(PacketDirection direction, Plot* plot); void CreatePacketRateGraph(PacketDirection direction, Plot* plot); void CreateTotalPacketRateGraph(PacketDirection direction, Plot* plot); void CreatePlayoutGraph(Plot* plot); void CreateNetEqSetMinimumDelay(Plot* plot); void CreateAudioLevelGraph(PacketDirection direction, Plot* plot); void CreateSequenceNumberGraph(Plot* plot); void CreateIncomingPacketLossGraph(Plot* plot); void CreateIncomingDelayGraph(Plot* plot); void CreateFractionLossGraph(Plot* plot); void CreateTotalIncomingBitrateGraph(Plot* plot); void CreateTotalOutgoingBitrateGraph(Plot* plot, bool show_detector_state = false, bool show_alr_state = false, bool show_link_capacity = false); void CreateStreamBitrateGraph(PacketDirection direction, Plot* plot); void CreateBitrateAllocationGraph(PacketDirection direction, Plot* plot); void CreateGoogCcSimulationGraph(Plot* plot); void CreateSendSideBweSimulationGraph(Plot* plot); void CreateReceiveSideBweSimulationGraph(Plot* plot); void CreateNetworkDelayFeedbackGraph(Plot* plot); void CreatePacerDelayGraph(Plot* plot); void CreateTimestampGraph(PacketDirection direction, Plot* plot); void CreateSenderAndReceiverReportPlot( PacketDirection direction, rtc::FunctionView fy, std::string title, std::string yaxis_label, Plot* plot); void CreateIceCandidatePairConfigGraph(Plot* plot); void CreateIceConnectivityCheckGraph(Plot* plot); void CreateDtlsTransportStateGraph(Plot* plot); void CreateDtlsWritableStateGraph(Plot* plot); void CreateTriageNotifications(); void PrintNotifications(FILE* file); private: template void CreateAccumulatedPacketsTimeSeries(Plot* plot, const IterableType& packets, const std::string& label); std::string GetCandidatePairLogDescriptionFromId(uint32_t candidate_pair_id); const ParsedRtcEventLog& parsed_log_; // A list of SSRCs we are interested in analysing. // If left empty, all SSRCs will be considered relevant. std::vector desired_ssrc_; std::map candidate_pair_desc_by_id_; AnalyzerConfig config_; }; } // namespace webrtc #endif // RTC_TOOLS_RTC_EVENT_LOG_VISUALIZER_ANALYZER_H_