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

Side by Side Diff: webrtc/tools/event_log_visualizer/analyzer.cc

Issue 2207453003: Track SSRCs configured for each media type in event log visualization tool. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 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 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 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 } 93 }
94 } 94 }
95 95
96 constexpr float kLeftMargin = 0.01f; 96 constexpr float kLeftMargin = 0.01f;
97 constexpr float kRightMargin = 0.02f; 97 constexpr float kRightMargin = 0.02f;
98 constexpr float kBottomMargin = 0.02f; 98 constexpr float kBottomMargin = 0.02f;
99 constexpr float kTopMargin = 0.05f; 99 constexpr float kTopMargin = 0.05f;
100 100
101 } // namespace 101 } // namespace
102 102
103 bool EventLogAnalyzer::StreamId::operator<(const StreamId& other) const { 103 bool StreamId::operator<(const StreamId& other) const {
104 if (ssrc_ < other.ssrc_) { 104 if (ssrc_ < other.ssrc_) {
105 return true; 105 return true;
106 } 106 }
107 if (ssrc_ == other.ssrc_) { 107 if (ssrc_ == other.ssrc_) {
108 if (direction_ < other.direction_) { 108 if (direction_ < other.direction_) {
109 return true; 109 return true;
110 } 110 }
111 } 111 }
112 return false; 112 return false;
113 } 113 }
114 114
115 bool EventLogAnalyzer::StreamId::operator==(const StreamId& other) const { 115 bool StreamId::operator==(const StreamId& other) const {
116 return ssrc_ == other.ssrc_ && direction_ == other.direction_; 116 return ssrc_ == other.ssrc_ && direction_ == other.direction_;
117 } 117 }
118 118
119 119
120 EventLogAnalyzer::EventLogAnalyzer(const ParsedRtcEventLog& log) 120 EventLogAnalyzer::EventLogAnalyzer(const ParsedRtcEventLog& log)
121 : parsed_log_(log), window_duration_(250000), step_(10000) { 121 : parsed_log_(log), window_duration_(250000), step_(10000) {
122 uint64_t first_timestamp = std::numeric_limits<uint64_t>::max(); 122 uint64_t first_timestamp = std::numeric_limits<uint64_t>::max();
123 uint64_t last_timestamp = std::numeric_limits<uint64_t>::min(); 123 uint64_t last_timestamp = std::numeric_limits<uint64_t>::min();
124 124
125 // Maps a stream identifier consisting of ssrc and direction 125 // Maps a stream identifier consisting of ssrc and direction
(...skipping 18 matching lines...) Expand all
144 last_timestamp = std::max(last_timestamp, timestamp); 144 last_timestamp = std::max(last_timestamp, timestamp);
145 } 145 }
146 146
147 switch (parsed_log_.GetEventType(i)) { 147 switch (parsed_log_.GetEventType(i)) {
148 case ParsedRtcEventLog::VIDEO_RECEIVER_CONFIG_EVENT: { 148 case ParsedRtcEventLog::VIDEO_RECEIVER_CONFIG_EVENT: {
149 VideoReceiveStream::Config config(nullptr); 149 VideoReceiveStream::Config config(nullptr);
150 parsed_log_.GetVideoReceiveConfig(i, &config); 150 parsed_log_.GetVideoReceiveConfig(i, &config);
151 StreamId stream(config.rtp.remote_ssrc, kIncomingPacket); 151 StreamId stream(config.rtp.remote_ssrc, kIncomingPacket);
152 RegisterHeaderExtensions(config.rtp.extensions, 152 RegisterHeaderExtensions(config.rtp.extensions,
153 &extension_maps[stream]); 153 &extension_maps[stream]);
154 video_ssrcs_.insert(stream);
154 for (auto kv : config.rtp.rtx) { 155 for (auto kv : config.rtp.rtx) {
155 StreamId rtx_stream(kv.second.ssrc, kIncomingPacket); 156 StreamId rtx_stream(kv.second.ssrc, kIncomingPacket);
156 RegisterHeaderExtensions(config.rtp.extensions, 157 RegisterHeaderExtensions(config.rtp.extensions,
157 &extension_maps[rtx_stream]); 158 &extension_maps[rtx_stream]);
159 video_ssrcs_.insert(rtx_stream);
160 rtx_ssrcs_.insert(rtx_stream);
158 } 161 }
159 break; 162 break;
160 } 163 }
161 case ParsedRtcEventLog::VIDEO_SENDER_CONFIG_EVENT: { 164 case ParsedRtcEventLog::VIDEO_SENDER_CONFIG_EVENT: {
162 VideoSendStream::Config config(nullptr); 165 VideoSendStream::Config config(nullptr);
163 parsed_log_.GetVideoSendConfig(i, &config); 166 parsed_log_.GetVideoSendConfig(i, &config);
164 for (auto ssrc : config.rtp.ssrcs) { 167 for (auto ssrc : config.rtp.ssrcs) {
165 StreamId stream(ssrc, kOutgoingPacket); 168 StreamId stream(ssrc, kOutgoingPacket);
166 RegisterHeaderExtensions(config.rtp.extensions, 169 RegisterHeaderExtensions(config.rtp.extensions,
167 &extension_maps[stream]); 170 &extension_maps[stream]);
171 video_ssrcs_.insert(stream);
168 } 172 }
169 for (auto ssrc : config.rtp.rtx.ssrcs) { 173 for (auto ssrc : config.rtp.rtx.ssrcs) {
170 StreamId stream(ssrc, kOutgoingPacket); 174 StreamId rtx_stream(ssrc, kOutgoingPacket);
171 RegisterHeaderExtensions(config.rtp.extensions, 175 RegisterHeaderExtensions(config.rtp.extensions,
172 &extension_maps[stream]); 176 &extension_maps[rtx_stream]);
177 video_ssrcs_.insert(rtx_stream);
178 rtx_ssrcs_.insert(rtx_stream);
173 } 179 }
174 break; 180 break;
175 } 181 }
176 case ParsedRtcEventLog::AUDIO_RECEIVER_CONFIG_EVENT: { 182 case ParsedRtcEventLog::AUDIO_RECEIVER_CONFIG_EVENT: {
177 AudioReceiveStream::Config config; 183 AudioReceiveStream::Config config;
178 // TODO(terelius): Parse the audio configs once we have them. 184 // TODO(terelius): Parse the audio configs once we have them.
179 break; 185 break;
180 } 186 }
181 case ParsedRtcEventLog::AUDIO_SENDER_CONFIG_EVENT: { 187 case ParsedRtcEventLog::AUDIO_SENDER_CONFIG_EVENT: {
182 AudioSendStream::Config config(nullptr); 188 AudioSendStream::Config config(nullptr);
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
296 bool bitrate_updated = bitrate_updated_; 302 bool bitrate_updated = bitrate_updated_;
297 bitrate_updated_ = false; 303 bitrate_updated_ = false;
298 return bitrate_updated; 304 return bitrate_updated;
299 } 305 }
300 306
301 private: 307 private:
302 uint32_t last_bitrate_bps_; 308 uint32_t last_bitrate_bps_;
303 bool bitrate_updated_; 309 bool bitrate_updated_;
304 }; 310 };
305 311
312 bool EventLogAnalyzer::IsRtxSsrc(StreamId stream_id) {
313 return (rtx_ssrcs_.count(stream_id) == 1);
stefan-webrtc 2016/08/04 14:22:55 I think you can remove (). I'd also prefer using
terelius 2016/08/05 12:24:57 Removed the parenthesis. I prefer count() since th
314 }
315
316 bool EventLogAnalyzer::IsVideoSsrc(StreamId stream_id) {
317 return (video_ssrcs_.count(stream_id) == 1);
318 }
319
320 bool EventLogAnalyzer::IsAudioSsrc(StreamId stream_id) {
321 return (audio_ssrcs_.count(stream_id) == 1);
322 }
323
306 void EventLogAnalyzer::CreatePacketGraph(PacketDirection desired_direction, 324 void EventLogAnalyzer::CreatePacketGraph(PacketDirection desired_direction,
307 Plot* plot) { 325 Plot* plot) {
308 std::map<uint32_t, TimeSeries> time_series; 326 std::map<uint32_t, TimeSeries> time_series;
309 327
310 PacketDirection direction; 328 PacketDirection direction;
311 MediaType media_type; 329 MediaType media_type;
312 uint8_t header[IP_PACKET_SIZE]; 330 uint8_t header[IP_PACKET_SIZE];
313 size_t header_length, total_length; 331 size_t header_length, total_length;
314 332
315 for (size_t i = 0; i < parsed_log_.GetNumberOfEvents(); i++) { 333 for (size_t i = 0; i < parsed_log_.GetNumberOfEvents(); i++) {
(...skipping 477 matching lines...) Expand 10 before | Expand all | Expand 10 after
793 // Add the data set to the plot. 811 // Add the data set to the plot.
794 plot->series_list_.push_back(std::move(time_series)); 812 plot->series_list_.push_back(std::move(time_series));
795 813
796 plot->SetXAxis(0, call_duration_s_, "Time (s)", kLeftMargin, kRightMargin); 814 plot->SetXAxis(0, call_duration_s_, "Time (s)", kLeftMargin, kRightMargin);
797 plot->SetSuggestedYAxis(0, 10, "Bitrate (kbps)", kBottomMargin, kTopMargin); 815 plot->SetSuggestedYAxis(0, 10, "Bitrate (kbps)", kBottomMargin, kTopMargin);
798 plot->SetTitle("Simulated BWE behavior"); 816 plot->SetTitle("Simulated BWE behavior");
799 } 817 }
800 818
801 } // namespace plotting 819 } // namespace plotting
802 } // namespace webrtc 820 } // namespace webrtc
OLDNEW
« webrtc/tools/event_log_visualizer/analyzer.h ('K') | « webrtc/tools/event_log_visualizer/analyzer.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698