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..69e730c6426952881852f0b95287a1f3052b1e13 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,60 @@ class EventLogAnalyzer { |
void CreateStreamBitrateGraph(PacketDirection desired_direction, Plot* plot); |
private: |
+ class StreamId { |
philipel
2016/07/14 14:36:14
Keep the implementation of StreamId in the .cc fil
terelius
2016/07/18 15:48:14
Done.
|
+ 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_; } |
+ 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 |