blob: 08fcd5c99f2db410cb5515297651b81faebfb0f3 [file] [log] [blame]
terelius54ce6802016-07-13 06:44:41 -07001/*
2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11#ifndef WEBRTC_TOOLS_EVENT_LOG_VISUALIZER_ANALYZER_H_
12#define WEBRTC_TOOLS_EVENT_LOG_VISUALIZER_ANALYZER_H_
13
14#include <vector>
15
16#include "webrtc/call/rtc_event_log_parser.h"
17#include "webrtc/tools/event_log_visualizer/plot_base.h"
18
19namespace webrtc {
20namespace plotting {
21
22class EventLogAnalyzer {
23 public:
24 // The EventLogAnalyzer keeps a reference to the ParsedRtcEventLog for the
25 // duration of its lifetime. The ParsedRtcEventLog must not be destroyed or
26 // modified while the EventLogAnalyzer is being used.
27 explicit EventLogAnalyzer(const ParsedRtcEventLog& log);
28
29 void CreatePacketGraph(PacketDirection desired_direction, Plot* plot);
30
31 void CreatePlayoutGraph(Plot* plot);
32
33 void CreateSequenceNumberGraph(Plot* plot);
34
35 void CreateDelayChangeGraph(Plot* plot);
36
37 void CreateAccumulatedDelayChangeGraph(Plot* plot);
38
39 void CreateTotalBitrateGraph(PacketDirection desired_direction, Plot* plot);
40
41 void CreateStreamBitrateGraph(PacketDirection desired_direction, Plot* plot);
42
43 private:
44 const ParsedRtcEventLog& parsed_log_;
45
46 // A list of SSRCs we are interested in analysing.
47 // If left empty, all SSRCs will be considered relevant.
48 std::vector<uint32_t> desired_ssrc_;
49
50 // Window and step size used for calculating moving averages, e.g. bitrate.
51 // The generated data points will be |step_| microseconds apart.
52 // Only events occuring at most |window_duration_| microseconds before the
53 // current data point will be part of the average.
54 uint64_t window_duration_;
55 uint64_t step_;
56
57 // First and last events of the log.
58 uint64_t begin_time_;
59 uint64_t end_time_;
60};
61
62} // namespace plotting
63} // namespace webrtc
64
65#endif // WEBRTC_TOOLS_EVENT_LOG_VISUALIZER_ANALYZER_H_