Index: webrtc/tools/event_log_visualizer/analyzer.h |
diff --git a/webrtc/tools/event_log_visualizer/analyzer.h b/webrtc/tools/event_log_visualizer/analyzer.h |
index 08fcd5c99f2db410cb5515297651b81faebfb0f3..9b69ff12630d9186ef8c964fc5fb00b3d670a5f2 100644 |
--- a/webrtc/tools/event_log_visualizer/analyzer.h |
+++ b/webrtc/tools/event_log_visualizer/analyzer.h |
@@ -12,6 +12,7 @@ |
#define WEBRTC_TOOLS_EVENT_LOG_VISUALIZER_ANALYZER_H_ |
#include <vector> |
+#include <map> |
#include "webrtc/call/rtc_event_log_parser.h" |
#include "webrtc/tools/event_log_visualizer/plot_base.h" |
@@ -41,12 +42,42 @@ class EventLogAnalyzer { |
void CreateStreamBitrateGraph(PacketDirection desired_direction, Plot* plot); |
private: |
+ 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; |
+ bool operator==(const StreamId& other) const; |
+ uint32_t GetSsrc() const { return ssrc_; } |
+ webrtc::PacketDirection GetDirection() const { return direction_; } |
+ webrtc::MediaType GetMediaType() const { return media_type_; } |
+ |
+ private: |
+ uint32_t ssrc_; |
+ webrtc::PacketDirection direction_; |
+ webrtc::MediaType media_type_; |
+ }; |
+ |
+ struct LoggedRtpPacket { |
+ LoggedRtpPacket(uint64_t timestamp, RTPHeader header) |
+ : timestamp(timestamp), header(header) {} |
+ uint64_t timestamp; |
+ RTPHeader header; |
+ }; |
+ |
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_; |
+ // Maps a stream identifier consisting of ssrc, direction and MediaType |
+ // to the parsed RTP headers in that stream. Header extensions are parsed |
+ // if the stream has been configured. |
+ std::map<StreamId, std::vector<LoggedRtpPacket>> rtp_packets_; |
+ |
// 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 |