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

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

Issue 2422063002: Use bayesian estimate of acked bitrate. (Closed)
Patch Set: Tests for both with and w/o experiment. Created 4 years, 1 month 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
« no previous file with comments | « webrtc/modules/congestion_controller/delay_based_bwe_unittest_helper.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 972 matching lines...) Expand 10 before | Expand all | Expand 10 after
983 983
984 auto NextProcessTime = [&]() { 984 auto NextProcessTime = [&]() {
985 if (rtcp_iterator != incoming_rtcp.end() || 985 if (rtcp_iterator != incoming_rtcp.end() ||
986 rtp_iterator != outgoing_rtp.end()) { 986 rtp_iterator != outgoing_rtp.end()) {
987 return clock.TimeInMicroseconds() + 987 return clock.TimeInMicroseconds() +
988 std::max<int64_t>(cc.TimeUntilNextProcess() * 1000, 0); 988 std::max<int64_t>(cc.TimeUntilNextProcess() * 1000, 0);
989 } 989 }
990 return std::numeric_limits<int64_t>::max(); 990 return std::numeric_limits<int64_t>::max();
991 }; 991 };
992 992
993 RateStatistics acked_bitrate(1000, 8000); 993 RateStatistics acked_bitrate(250, 8000);
994 994
995 int64_t time_us = std::min(NextRtpTime(), NextRtcpTime()); 995 int64_t time_us = std::min(NextRtpTime(), NextRtcpTime());
996 int64_t last_update_us = 0;
996 while (time_us != std::numeric_limits<int64_t>::max()) { 997 while (time_us != std::numeric_limits<int64_t>::max()) {
997 clock.AdvanceTimeMicroseconds(time_us - clock.TimeInMicroseconds()); 998 clock.AdvanceTimeMicroseconds(time_us - clock.TimeInMicroseconds());
998 if (clock.TimeInMicroseconds() >= NextRtcpTime()) { 999 if (clock.TimeInMicroseconds() >= NextRtcpTime()) {
999 RTC_DCHECK_EQ(clock.TimeInMicroseconds(), NextRtcpTime()); 1000 RTC_DCHECK_EQ(clock.TimeInMicroseconds(), NextRtcpTime());
1000 const LoggedRtcpPacket& rtcp = *rtcp_iterator->second; 1001 const LoggedRtcpPacket& rtcp = *rtcp_iterator->second;
1001 if (rtcp.type == kRtcpTransportFeedback) { 1002 if (rtcp.type == kRtcpTransportFeedback) {
1002 TransportFeedbackObserver* observer = cc.GetTransportFeedbackObserver(); 1003 TransportFeedbackObserver* observer = cc.GetTransportFeedbackObserver();
1003 observer->OnTransportFeedback(*static_cast<rtcp::TransportFeedback*>( 1004 observer->OnTransportFeedback(*static_cast<rtcp::TransportFeedback*>(
1004 rtcp.packet.get())); 1005 rtcp.packet.get()));
1005 std::vector<PacketInfo> feedback = 1006 std::vector<PacketInfo> feedback =
(...skipping 24 matching lines...) Expand all
1030 rtc::SentPacket sent_packet( 1031 rtc::SentPacket sent_packet(
1031 rtp.header.extension.transportSequenceNumber, rtp.timestamp / 1000); 1032 rtp.header.extension.transportSequenceNumber, rtp.timestamp / 1000);
1032 cc.OnSentPacket(sent_packet); 1033 cc.OnSentPacket(sent_packet);
1033 } 1034 }
1034 ++rtp_iterator; 1035 ++rtp_iterator;
1035 } 1036 }
1036 if (clock.TimeInMicroseconds() >= NextProcessTime()) { 1037 if (clock.TimeInMicroseconds() >= NextProcessTime()) {
1037 RTC_DCHECK_EQ(clock.TimeInMicroseconds(), NextProcessTime()); 1038 RTC_DCHECK_EQ(clock.TimeInMicroseconds(), NextProcessTime());
1038 cc.Process(); 1039 cc.Process();
1039 } 1040 }
1040 if (observer.GetAndResetBitrateUpdated()) { 1041 if (observer.GetAndResetBitrateUpdated() ||
1042 time_us - last_update_us >= 1e6) {
1041 uint32_t y = observer.last_bitrate_bps() / 1000; 1043 uint32_t y = observer.last_bitrate_bps() / 1000;
1042 float x = static_cast<float>(clock.TimeInMicroseconds() - begin_time_) / 1044 float x = static_cast<float>(clock.TimeInMicroseconds() - begin_time_) /
1043 1000000; 1045 1000000;
1044 time_series.points.emplace_back(x, y); 1046 time_series.points.emplace_back(x, y);
1047 last_update_us = time_us;
1045 } 1048 }
1046 time_us = std::min({NextRtpTime(), NextRtcpTime(), NextProcessTime()}); 1049 time_us = std::min({NextRtpTime(), NextRtcpTime(), NextProcessTime()});
1047 } 1050 }
1048 // Add the data set to the plot. 1051 // Add the data set to the plot.
1049 plot->series_list_.push_back(std::move(time_series)); 1052 plot->series_list_.push_back(std::move(time_series));
1050 plot->series_list_.push_back(std::move(acked_time_series)); 1053 plot->series_list_.push_back(std::move(acked_time_series));
1051 1054
1052 plot->SetXAxis(0, call_duration_s_, "Time (s)", kLeftMargin, kRightMargin); 1055 plot->SetXAxis(0, call_duration_s_, "Time (s)", kLeftMargin, kRightMargin);
1053 plot->SetSuggestedYAxis(0, 10, "Bitrate (kbps)", kBottomMargin, kTopMargin); 1056 plot->SetSuggestedYAxis(0, 10, "Bitrate (kbps)", kBottomMargin, kTopMargin);
1054 plot->SetTitle("Simulated BWE behavior"); 1057 plot->SetTitle("Simulated BWE behavior");
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
1168 point.y -= estimated_base_delay_ms; 1171 point.y -= estimated_base_delay_ms;
1169 // Add the data set to the plot. 1172 // Add the data set to the plot.
1170 plot->series_list_.push_back(std::move(time_series)); 1173 plot->series_list_.push_back(std::move(time_series));
1171 1174
1172 plot->SetXAxis(0, call_duration_s_, "Time (s)", kLeftMargin, kRightMargin); 1175 plot->SetXAxis(0, call_duration_s_, "Time (s)", kLeftMargin, kRightMargin);
1173 plot->SetSuggestedYAxis(0, 10, "Delay (ms)", kBottomMargin, kTopMargin); 1176 plot->SetSuggestedYAxis(0, 10, "Delay (ms)", kBottomMargin, kTopMargin);
1174 plot->SetTitle("Network Delay Change."); 1177 plot->SetTitle("Network Delay Change.");
1175 } 1178 }
1176 } // namespace plotting 1179 } // namespace plotting
1177 } // namespace webrtc 1180 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/congestion_controller/delay_based_bwe_unittest_helper.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698