Split LoggedBweProbeResult into -Success and -Failure.
Also change ParsedEventLog::EventType to enum class.
Bug: webrtc:8111
Change-Id: I4747fb9cbcbdb963fa032770078218e5b416b3da
Reviewed-on: https://webrtc-review.googlesource.com/79280
Commit-Queue: Björn Terelius <terelius@webrtc.org>
Reviewed-by: Elad Alon <eladalon@webrtc.org>
Reviewed-by: Minyue Li <minyue@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23432}diff --git a/logging/rtc_event_log/encoder/rtc_event_log_encoder_unittest.cc b/logging/rtc_event_log/encoder/rtc_event_log_encoder_unittest.cc
index 35244d7..1bda6c9 100644
--- a/logging/rtc_event_log/encoder/rtc_event_log_encoder_unittest.cc
+++ b/logging/rtc_event_log/encoder/rtc_event_log_encoder_unittest.cc
@@ -140,7 +140,7 @@
ASSERT_TRUE(parsed_log_.ParseString(encoded));
ASSERT_EQ(parsed_log_.GetNumberOfEvents(), 1u);
ASSERT_EQ(parsed_log_.GetEventType(0),
- ParsedRtcEventLogNew::AUDIO_NETWORK_ADAPTATION_EVENT);
+ ParsedRtcEventLogNew::EventType::AUDIO_NETWORK_ADAPTATION_EVENT);
LoggedAudioNetworkAdaptationEvent parsed_event =
parsed_log_.GetAudioNetworkAdaptation(0);
@@ -232,7 +232,7 @@
ASSERT_TRUE(parsed_log_.ParseString(encoded));
ASSERT_EQ(parsed_log_.GetNumberOfEvents(), 1u);
ASSERT_EQ(parsed_log_.GetEventType(0),
- ParsedRtcEventLogNew::AUDIO_PLAYOUT_EVENT);
+ ParsedRtcEventLogNew::EventType::AUDIO_PLAYOUT_EVENT);
LoggedAudioPlayoutEvent playout_event = parsed_log_.GetAudioPlayout(0);
@@ -261,7 +261,7 @@
ASSERT_TRUE(parsed_log_.ParseString(encoded));
ASSERT_EQ(parsed_log_.GetNumberOfEvents(), 1u);
ASSERT_EQ(parsed_log_.GetEventType(0),
- ParsedRtcEventLogNew::AUDIO_RECEIVER_CONFIG_EVENT);
+ ParsedRtcEventLogNew::EventType::AUDIO_RECEIVER_CONFIG_EVENT);
auto parsed_event = parsed_log_.GetAudioReceiveConfig(0);
EXPECT_EQ(parsed_log_.GetTimestamp(0), timestamp_us);
@@ -286,7 +286,7 @@
ASSERT_TRUE(parsed_log_.ParseString(encoded));
ASSERT_EQ(parsed_log_.GetNumberOfEvents(), 1u);
ASSERT_EQ(parsed_log_.GetEventType(0),
- ParsedRtcEventLogNew::AUDIO_SENDER_CONFIG_EVENT);
+ ParsedRtcEventLogNew::EventType::AUDIO_SENDER_CONFIG_EVENT);
auto parsed_event = parsed_log_.GetAudioSendConfig(0);
EXPECT_EQ(parsed_log_.GetTimestamp(0), timestamp_us);
@@ -306,7 +306,7 @@
ASSERT_TRUE(parsed_log_.ParseString(encoded));
ASSERT_EQ(parsed_log_.GetNumberOfEvents(), 1u);
ASSERT_EQ(parsed_log_.GetEventType(0),
- ParsedRtcEventLogNew::DELAY_BASED_BWE_UPDATE);
+ ParsedRtcEventLogNew::EventType::DELAY_BASED_BWE_UPDATE);
auto parsed_event = parsed_log_.GetDelayBasedBweUpdate(0);
@@ -330,7 +330,7 @@
ASSERT_TRUE(parsed_log_.ParseString(encoded));
ASSERT_EQ(parsed_log_.GetNumberOfEvents(), 1u);
ASSERT_EQ(parsed_log_.GetEventType(0),
- ParsedRtcEventLogNew::LOSS_BASED_BWE_UPDATE);
+ ParsedRtcEventLogNew::EventType::LOSS_BASED_BWE_UPDATE);
LoggedBweLossBasedUpdate bwe_update = parsed_log_.GetLossBasedBweUpdate(0);
@@ -345,7 +345,8 @@
ASSERT_TRUE(parsed_log_.ParseString(encoder_->EncodeLogStart(timestamp_us)));
ASSERT_EQ(parsed_log_.GetNumberOfEvents(), 1u);
- ASSERT_EQ(parsed_log_.GetEventType(0), ParsedRtcEventLogNew::LOG_START);
+ ASSERT_EQ(parsed_log_.GetEventType(0),
+ ParsedRtcEventLogNew::EventType::LOG_START);
EXPECT_EQ(parsed_log_.GetTimestamp(0), timestamp_us);
}
@@ -355,16 +356,17 @@
ASSERT_TRUE(parsed_log_.ParseString(encoder_->EncodeLogEnd(timestamp_us)));
ASSERT_EQ(parsed_log_.GetNumberOfEvents(), 1u);
- ASSERT_EQ(parsed_log_.GetEventType(0), ParsedRtcEventLogNew::LOG_END);
+ ASSERT_EQ(parsed_log_.GetEventType(0),
+ ParsedRtcEventLogNew::EventType::LOG_END);
EXPECT_EQ(parsed_log_.GetTimestamp(0), timestamp_us);
}
TEST_P(RtcEventLogEncoderTest, RtcEventProbeClusterCreated) {
- const int id = RandomPositiveInt();
- const int bitrate_bps = RandomBitrate();
- const int min_probes = RandomPositiveInt();
- const int min_bytes = RandomPositiveInt();
+ const int32_t id = RandomPositiveInt();
+ const int32_t bitrate_bps = RandomBitrate();
+ const uint32_t min_probes = RandomPositiveInt();
+ const uint32_t min_bytes = RandomPositiveInt();
auto event = rtc::MakeUnique<RtcEventProbeClusterCreated>(
id, bitrate_bps, min_probes, min_bytes);
@@ -375,15 +377,15 @@
ASSERT_TRUE(parsed_log_.ParseString(encoded));
ASSERT_EQ(parsed_log_.GetNumberOfEvents(), 1u);
ASSERT_EQ(parsed_log_.GetEventType(0),
- ParsedRtcEventLogNew::BWE_PROBE_CLUSTER_CREATED_EVENT);
+ ParsedRtcEventLogNew::EventType::BWE_PROBE_CLUSTER_CREATED_EVENT);
auto parsed_event = parsed_log_.GetBweProbeClusterCreated(0);
EXPECT_EQ(parsed_log_.GetTimestamp(0), timestamp_us);
- EXPECT_EQ(rtc::dchecked_cast<int>(parsed_event.id), id);
- EXPECT_EQ(rtc::dchecked_cast<int>(parsed_event.bitrate_bps), bitrate_bps);
- EXPECT_EQ(rtc::dchecked_cast<int>(parsed_event.min_packets), min_probes);
- EXPECT_EQ(rtc::dchecked_cast<int>(parsed_event.min_bytes), min_bytes);
+ EXPECT_EQ(parsed_event.id, id);
+ EXPECT_EQ(parsed_event.bitrate_bps, bitrate_bps);
+ EXPECT_EQ(parsed_event.min_packets, min_probes);
+ EXPECT_EQ(parsed_event.min_bytes, min_bytes);
}
TEST_P(RtcEventLogEncoderTest, RtcEventProbeResultFailure) {
@@ -399,20 +401,18 @@
ASSERT_TRUE(parsed_log_.ParseString(encoded));
ASSERT_EQ(parsed_log_.GetNumberOfEvents(), 1u);
ASSERT_EQ(parsed_log_.GetEventType(0),
- ParsedRtcEventLogNew::BWE_PROBE_RESULT_EVENT);
+ ParsedRtcEventLogNew::EventType::BWE_PROBE_FAILURE_EVENT);
- auto parsed_event = parsed_log_.GetBweProbeResult(0);
+ auto parsed_event = parsed_log_.GetBweProbeFailure(0);
EXPECT_EQ(parsed_log_.GetTimestamp(0), timestamp_us);
- EXPECT_EQ(rtc::dchecked_cast<int>(parsed_event.id), id);
- ASSERT_FALSE(parsed_event.bitrate_bps);
- ASSERT_TRUE(parsed_event.failure_reason);
+ EXPECT_EQ(parsed_event.id, id);
EXPECT_EQ(parsed_event.failure_reason, failure_reason);
}
TEST_P(RtcEventLogEncoderTest, RtcEventProbeResultSuccess) {
- const int id = RandomPositiveInt();
- const uint64_t bitrate_bps = rtc::checked_cast<uint64_t>(RandomBitrate());
+ const int32_t id = RandomPositiveInt();
+ const int32_t bitrate_bps = RandomBitrate();
auto event = rtc::MakeUnique<RtcEventProbeResultSuccess>(id, bitrate_bps);
const int64_t timestamp_us = event->timestamp_us_;
@@ -422,14 +422,13 @@
ASSERT_TRUE(parsed_log_.ParseString(encoded));
ASSERT_EQ(parsed_log_.GetNumberOfEvents(), 1u);
ASSERT_EQ(parsed_log_.GetEventType(0),
- ParsedRtcEventLogNew::BWE_PROBE_RESULT_EVENT);
+ ParsedRtcEventLogNew::EventType::BWE_PROBE_SUCCESS_EVENT);
- auto parsed_event = parsed_log_.GetBweProbeResult(0);
+ auto parsed_event = parsed_log_.GetBweProbeSuccess(0);
EXPECT_EQ(parsed_log_.GetTimestamp(0), timestamp_us);
- EXPECT_EQ(rtc::dchecked_cast<int>(parsed_event.id), id);
+ EXPECT_EQ(parsed_event.id, id);
EXPECT_EQ(parsed_event.bitrate_bps, bitrate_bps);
- ASSERT_FALSE(parsed_event.failure_reason);
}
void RtcEventLogEncoderTest::TestRtcEventRtcpPacket(PacketDirection direction) {
@@ -449,7 +448,8 @@
std::string encoded = encoder_->EncodeBatch(history_.begin(), history_.end());
ASSERT_TRUE(parsed_log_.ParseString(encoded));
ASSERT_EQ(parsed_log_.GetNumberOfEvents(), 1u);
- ASSERT_EQ(parsed_log_.GetEventType(0), ParsedRtcEventLogNew::RTCP_EVENT);
+ ASSERT_EQ(parsed_log_.GetEventType(0),
+ ParsedRtcEventLogNew::EventType::RTCP_EVENT);
PacketDirection parsed_direction;
uint8_t parsed_packet[IP_PACKET_SIZE]; // "Parsed" = after event-encoding.
@@ -503,7 +503,8 @@
std::string encoded = encoder_->EncodeBatch(history_.begin(), history_.end());
ASSERT_TRUE(parsed_log_.ParseString(encoded));
ASSERT_EQ(parsed_log_.GetNumberOfEvents(), 1u);
- ASSERT_EQ(parsed_log_.GetEventType(0), ParsedRtcEventLogNew::RTP_EVENT);
+ ASSERT_EQ(parsed_log_.GetEventType(0),
+ ParsedRtcEventLogNew::EventType::RTP_EVENT);
PacketDirection parsed_direction;
uint8_t parsed_rtp_header[IP_PACKET_SIZE];
@@ -554,7 +555,7 @@
ASSERT_TRUE(parsed_log_.ParseString(encoded));
ASSERT_EQ(parsed_log_.GetNumberOfEvents(), 1u);
ASSERT_EQ(parsed_log_.GetEventType(0),
- ParsedRtcEventLogNew::VIDEO_RECEIVER_CONFIG_EVENT);
+ ParsedRtcEventLogNew::EventType::VIDEO_RECEIVER_CONFIG_EVENT);
auto parsed_event = parsed_log_.GetVideoReceiveConfig(0);
EXPECT_EQ(parsed_log_.GetTimestamp(0), timestamp_us);
@@ -580,7 +581,7 @@
ASSERT_TRUE(parsed_log_.ParseString(encoded));
ASSERT_EQ(parsed_log_.GetNumberOfEvents(), 1u);
ASSERT_EQ(parsed_log_.GetEventType(0),
- ParsedRtcEventLogNew::VIDEO_SENDER_CONFIG_EVENT);
+ ParsedRtcEventLogNew::EventType::VIDEO_SENDER_CONFIG_EVENT);
auto parsed_event = parsed_log_.GetVideoSendConfig(0)[0];
EXPECT_EQ(parsed_log_.GetTimestamp(0), timestamp_us);
diff --git a/logging/rtc_event_log/rtc_event_log2rtp_dump.cc b/logging/rtc_event_log/rtc_event_log2rtp_dump.cc
index 3990363..bdb560a 100644
--- a/logging/rtc_event_log/rtc_event_log2rtp_dump.cc
+++ b/logging/rtc_event_log/rtc_event_log2rtp_dump.cc
@@ -128,7 +128,7 @@
// a softer failure option, but it does not seem useful to generate
// RTP dumps based on broken event logs.
if (FLAG_rtp && parsed_stream.GetEventType(i) ==
- webrtc::ParsedRtcEventLogNew::RTP_EVENT) {
+ webrtc::ParsedRtcEventLogNew::EventType::RTP_EVENT) {
webrtc::test::RtpPacket packet;
webrtc::PacketDirection direction;
parsed_stream.GetRtpHeader(i, &direction, packet.data, &packet.length,
@@ -166,7 +166,7 @@
rtp_counter++;
}
if (FLAG_rtcp && parsed_stream.GetEventType(i) ==
- webrtc::ParsedRtcEventLogNew::RTCP_EVENT) {
+ webrtc::ParsedRtcEventLogNew::EventType::RTCP_EVENT) {
webrtc::test::RtpPacket packet;
webrtc::PacketDirection direction;
parsed_stream.GetRtcpPacket(i, &direction, packet.data, &packet.length);
diff --git a/logging/rtc_event_log/rtc_event_log2text.cc b/logging/rtc_event_log/rtc_event_log2text.cc
index cc41525..00092a9 100644
--- a/logging/rtc_event_log/rtc_event_log2text.cc
+++ b/logging/rtc_event_log/rtc_event_log2text.cc
@@ -409,7 +409,7 @@
for (size_t i = 0; i < parsed_stream.GetNumberOfEvents(); i++) {
bool event_recognized = false;
switch (parsed_stream.GetEventType(i)) {
- case webrtc::ParsedRtcEventLogNew::UNKNOWN_EVENT: {
+ case webrtc::ParsedRtcEventLogNew::EventType::UNKNOWN_EVENT: {
if (FLAG_unknown) {
std::cout << parsed_stream.GetTimestamp(i) << "\tUNKNOWN_EVENT"
<< std::endl;
@@ -418,7 +418,7 @@
break;
}
- case webrtc::ParsedRtcEventLogNew::LOG_START: {
+ case webrtc::ParsedRtcEventLogNew::EventType::LOG_START: {
if (FLAG_startstop) {
std::cout << parsed_stream.GetTimestamp(i) << "\tLOG_START"
<< std::endl;
@@ -427,7 +427,7 @@
break;
}
- case webrtc::ParsedRtcEventLogNew::LOG_END: {
+ case webrtc::ParsedRtcEventLogNew::EventType::LOG_END: {
if (FLAG_startstop) {
std::cout << parsed_stream.GetTimestamp(i) << "\tLOG_END"
<< std::endl;
@@ -436,7 +436,7 @@
break;
}
- case webrtc::ParsedRtcEventLogNew::RTP_EVENT: {
+ case webrtc::ParsedRtcEventLogNew::EventType::RTP_EVENT: {
if (FLAG_rtp) {
size_t header_length;
size_t total_length;
@@ -513,7 +513,7 @@
break;
}
- case webrtc::ParsedRtcEventLogNew::RTCP_EVENT: {
+ case webrtc::ParsedRtcEventLogNew::EventType::RTCP_EVENT: {
if (FLAG_rtcp) {
size_t length;
uint8_t packet[IP_PACKET_SIZE];
@@ -580,7 +580,7 @@
break;
}
- case webrtc::ParsedRtcEventLogNew::AUDIO_PLAYOUT_EVENT: {
+ case webrtc::ParsedRtcEventLogNew::EventType::AUDIO_PLAYOUT_EVENT: {
if (FLAG_playout) {
auto audio_playout = parsed_stream.GetAudioPlayout(i);
std::cout << audio_playout.log_time_us() << "\tAUDIO_PLAYOUT"
@@ -590,7 +590,7 @@
break;
}
- case webrtc::ParsedRtcEventLogNew::LOSS_BASED_BWE_UPDATE: {
+ case webrtc::ParsedRtcEventLogNew::EventType::LOSS_BASED_BWE_UPDATE: {
if (FLAG_bwe) {
auto bwe_update = parsed_stream.GetLossBasedBweUpdate(i);
std::cout << bwe_update.log_time_us() << "\tBWE(LOSS_BASED)"
@@ -604,7 +604,7 @@
break;
}
- case webrtc::ParsedRtcEventLogNew::DELAY_BASED_BWE_UPDATE: {
+ case webrtc::ParsedRtcEventLogNew::EventType::DELAY_BASED_BWE_UPDATE: {
if (FLAG_bwe) {
auto bwe_update = parsed_stream.GetDelayBasedBweUpdate(i);
std::cout << bwe_update.log_time_us() << "\tBWE(DELAY_BASED)"
@@ -616,7 +616,8 @@
break;
}
- case webrtc::ParsedRtcEventLogNew::VIDEO_RECEIVER_CONFIG_EVENT: {
+ case webrtc::ParsedRtcEventLogNew::EventType::
+ VIDEO_RECEIVER_CONFIG_EVENT: {
if (FLAG_config && FLAG_video && FLAG_incoming) {
webrtc::rtclog::StreamConfig config =
parsed_stream.GetVideoReceiveConfig(i);
@@ -641,7 +642,7 @@
break;
}
- case webrtc::ParsedRtcEventLogNew::VIDEO_SENDER_CONFIG_EVENT: {
+ case webrtc::ParsedRtcEventLogNew::EventType::VIDEO_SENDER_CONFIG_EVENT: {
if (FLAG_config && FLAG_video && FLAG_outgoing) {
std::vector<webrtc::rtclog::StreamConfig> configs =
parsed_stream.GetVideoSendConfig(i);
@@ -668,7 +669,8 @@
break;
}
- case webrtc::ParsedRtcEventLogNew::AUDIO_RECEIVER_CONFIG_EVENT: {
+ case webrtc::ParsedRtcEventLogNew::EventType::
+ AUDIO_RECEIVER_CONFIG_EVENT: {
if (FLAG_config && FLAG_audio && FLAG_incoming) {
webrtc::rtclog::StreamConfig config =
parsed_stream.GetAudioReceiveConfig(i);
@@ -693,7 +695,7 @@
break;
}
- case webrtc::ParsedRtcEventLogNew::AUDIO_SENDER_CONFIG_EVENT: {
+ case webrtc::ParsedRtcEventLogNew::EventType::AUDIO_SENDER_CONFIG_EVENT: {
if (FLAG_config && FLAG_audio && FLAG_outgoing) {
webrtc::rtclog::StreamConfig config =
parsed_stream.GetAudioSendConfig(i);
@@ -717,7 +719,8 @@
break;
}
- case webrtc::ParsedRtcEventLogNew::AUDIO_NETWORK_ADAPTATION_EVENT: {
+ case webrtc::ParsedRtcEventLogNew::EventType::
+ AUDIO_NETWORK_ADAPTATION_EVENT: {
if (FLAG_ana) {
auto ana_event = parsed_stream.GetAudioNetworkAdaptation(i);
char buffer[300];
@@ -749,7 +752,8 @@
break;
}
- case webrtc::ParsedRtcEventLogNew::BWE_PROBE_CLUSTER_CREATED_EVENT: {
+ case webrtc::ParsedRtcEventLogNew::EventType::
+ BWE_PROBE_CLUSTER_CREATED_EVENT: {
if (FLAG_probe) {
auto probe_event = parsed_stream.GetBweProbeClusterCreated(i);
std::cout << parsed_stream.GetTimestamp(i) << "\tPROBE_CREATED("
@@ -762,28 +766,34 @@
break;
}
- case webrtc::ParsedRtcEventLogNew::BWE_PROBE_RESULT_EVENT: {
+ case webrtc::ParsedRtcEventLogNew::EventType::BWE_PROBE_FAILURE_EVENT: {
if (FLAG_probe) {
- webrtc::LoggedBweProbeResultEvent probe_result =
- parsed_stream.GetBweProbeResult(i);
- if (probe_result.failure_reason) {
- std::cout << parsed_stream.GetTimestamp(i) << "\tPROBE_SUCCESS("
- << probe_result.id << ")"
- << "\tfailure_reason="
- << static_cast<int>(*probe_result.failure_reason)
- << std::endl;
- } else {
- std::cout << parsed_stream.GetTimestamp(i) << "\tPROBE_SUCCESS("
- << probe_result.id << ")"
- << "\tbitrate_bps=" << *probe_result.bitrate_bps
- << std::endl;
- }
+ webrtc::LoggedBweProbeFailureEvent probe_result =
+ parsed_stream.GetBweProbeFailure(i);
+ std::cout << parsed_stream.GetTimestamp(i) << "\tPROBE_FAILURE("
+ << probe_result.id << ")"
+ << "\tfailure_reason="
+ << static_cast<int>(probe_result.failure_reason)
+ << std::endl;
}
event_recognized = true;
break;
}
- case webrtc::ParsedRtcEventLogNew::ALR_STATE_EVENT: {
+ case webrtc::ParsedRtcEventLogNew::EventType::BWE_PROBE_SUCCESS_EVENT: {
+ if (FLAG_probe) {
+ webrtc::LoggedBweProbeSuccessEvent probe_result =
+ parsed_stream.GetBweProbeSuccess(i);
+ std::cout << parsed_stream.GetTimestamp(i) << "\tPROBE_SUCCESS("
+ << probe_result.id << ")"
+ << "\tbitrate_bps=" << probe_result.bitrate_bps
+ << std::endl;
+ }
+ event_recognized = true;
+ break;
+ }
+
+ case webrtc::ParsedRtcEventLogNew::EventType::ALR_STATE_EVENT: {
if (FLAG_bwe) {
webrtc::LoggedAlrStateEvent alr_state = parsed_stream.GetAlrState(i);
std::cout << parsed_stream.GetTimestamp(i) << "\tALR_STATE"
@@ -793,7 +803,7 @@
break;
}
- case webrtc::ParsedRtcEventLogNew::ICE_CANDIDATE_PAIR_CONFIG: {
+ case webrtc::ParsedRtcEventLogNew::EventType::ICE_CANDIDATE_PAIR_CONFIG: {
if (FLAG_ice) {
webrtc::LoggedIceCandidatePairConfig ice_cp_config =
parsed_stream.GetIceCandidatePairConfig(i);
@@ -807,7 +817,7 @@
break;
}
- case webrtc::ParsedRtcEventLogNew::ICE_CANDIDATE_PAIR_EVENT: {
+ case webrtc::ParsedRtcEventLogNew::EventType::ICE_CANDIDATE_PAIR_EVENT: {
if (FLAG_ice) {
webrtc::LoggedIceCandidatePairEvent ice_cp_event =
parsed_stream.GetIceCandidatePairEvent(i);
@@ -823,8 +833,9 @@
}
if (!event_recognized) {
- std::cout << "Unrecognized event (" << parsed_stream.GetEventType(i)
- << ")" << std::endl;
+ std::cout << "Unrecognized event ("
+ << static_cast<int>(parsed_stream.GetEventType(i)) << ")"
+ << std::endl;
}
}
return 0;
diff --git a/logging/rtc_event_log/rtc_event_log_parser_new.cc b/logging/rtc_event_log/rtc_event_log_parser_new.cc
index 810279e..2d6c4cd 100644
--- a/logging/rtc_event_log/rtc_event_log_parser_new.cc
+++ b/logging/rtc_event_log/rtc_event_log_parser_new.cc
@@ -80,7 +80,10 @@
case rtclog::Event::BWE_PROBE_CLUSTER_CREATED_EVENT:
return ParsedRtcEventLogNew::EventType::BWE_PROBE_CLUSTER_CREATED_EVENT;
case rtclog::Event::BWE_PROBE_RESULT_EVENT:
- return ParsedRtcEventLogNew::EventType::BWE_PROBE_RESULT_EVENT;
+ // Probe successes and failures are currently stored in the same proto
+ // message, we are moving towards separate messages. Probe results
+ // therefore need special treatment in the parser.
+ return ParsedRtcEventLogNew::EventType::UNKNOWN_EVENT;
case rtclog::Event::ALR_STATE_EVENT:
return ParsedRtcEventLogNew::EventType::ALR_STATE_EVENT;
case rtclog::Event::ICE_CANDIDATE_PAIR_CONFIG:
@@ -313,7 +316,8 @@
audio_playout_events_.clear();
audio_network_adaptation_events_.clear();
bwe_probe_cluster_created_events_.clear();
- bwe_probe_result_events_.clear();
+ bwe_probe_failure_events_.clear();
+ bwe_probe_success_events_.clear();
bwe_delay_updates_.clear();
bwe_loss_updates_.clear();
alr_state_events_.clear();
@@ -467,8 +471,8 @@
last_timestamp_ = std::max(last_timestamp_, timestamp);
}
- switch (event.type()) {
- case rtclog::Event::VIDEO_RECEIVER_CONFIG_EVENT: {
+ switch (GetEventType(event)) {
+ case ParsedRtcEventLogNew::EventType::VIDEO_RECEIVER_CONFIG_EVENT: {
rtclog::StreamConfig config = GetVideoReceiveConfig(event);
video_recv_configs_.emplace_back(GetTimestamp(event), config);
incoming_rtp_extensions_maps_[config.remote_ssrc] =
@@ -483,7 +487,7 @@
incoming_rtx_ssrcs_.insert(config.rtx_ssrc);
break;
}
- case rtclog::Event::VIDEO_SENDER_CONFIG_EVENT: {
+ case ParsedRtcEventLogNew::EventType::VIDEO_SENDER_CONFIG_EVENT: {
std::vector<rtclog::StreamConfig> configs = GetVideoSendConfig(event);
video_send_configs_.emplace_back(GetTimestamp(event), configs);
for (const auto& config : configs) {
@@ -497,7 +501,7 @@
}
break;
}
- case rtclog::Event::AUDIO_RECEIVER_CONFIG_EVENT: {
+ case ParsedRtcEventLogNew::EventType::AUDIO_RECEIVER_CONFIG_EVENT: {
rtclog::StreamConfig config = GetAudioReceiveConfig(event);
audio_recv_configs_.emplace_back(GetTimestamp(event), config);
incoming_rtp_extensions_maps_[config.remote_ssrc] =
@@ -507,7 +511,7 @@
incoming_audio_ssrcs_.insert(config.remote_ssrc);
break;
}
- case rtclog::Event::AUDIO_SENDER_CONFIG_EVENT: {
+ case ParsedRtcEventLogNew::EventType::AUDIO_SENDER_CONFIG_EVENT: {
rtclog::StreamConfig config = GetAudioSendConfig(event);
audio_send_configs_.emplace_back(GetTimestamp(event), config);
outgoing_rtp_extensions_maps_[config.local_ssrc] =
@@ -515,7 +519,7 @@
outgoing_audio_ssrcs_.insert(config.local_ssrc);
break;
}
- case rtclog::Event::RTP_EVENT: {
+ case ParsedRtcEventLogNew::EventType::RTP_EVENT: {
PacketDirection direction;
uint8_t header[IP_PACKET_SIZE];
size_t header_length;
@@ -546,7 +550,7 @@
}
break;
}
- case rtclog::Event::RTCP_EVENT: {
+ case ParsedRtcEventLogNew::EventType::RTCP_EVENT: {
PacketDirection direction;
uint8_t packet[IP_PACKET_SIZE];
size_t total_length;
@@ -632,55 +636,59 @@
}
break;
}
- case rtclog::Event::LOG_START: {
+ case ParsedRtcEventLogNew::EventType::LOG_START: {
start_log_events_.push_back(LoggedStartEvent(GetTimestamp(event)));
break;
}
- case rtclog::Event::LOG_END: {
+ case ParsedRtcEventLogNew::EventType::LOG_END: {
stop_log_events_.push_back(LoggedStopEvent(GetTimestamp(event)));
break;
}
- case rtclog::Event::AUDIO_PLAYOUT_EVENT: {
+ case ParsedRtcEventLogNew::EventType::AUDIO_PLAYOUT_EVENT: {
LoggedAudioPlayoutEvent playout_event = GetAudioPlayout(event);
audio_playout_events_[playout_event.ssrc].push_back(playout_event);
break;
}
- case rtclog::Event::LOSS_BASED_BWE_UPDATE: {
+ case ParsedRtcEventLogNew::EventType::LOSS_BASED_BWE_UPDATE: {
bwe_loss_updates_.push_back(GetLossBasedBweUpdate(event));
break;
}
- case rtclog::Event::DELAY_BASED_BWE_UPDATE: {
+ case ParsedRtcEventLogNew::EventType::DELAY_BASED_BWE_UPDATE: {
bwe_delay_updates_.push_back(GetDelayBasedBweUpdate(event));
break;
}
- case rtclog::Event::AUDIO_NETWORK_ADAPTATION_EVENT: {
+ case ParsedRtcEventLogNew::EventType::AUDIO_NETWORK_ADAPTATION_EVENT: {
LoggedAudioNetworkAdaptationEvent ana_event =
GetAudioNetworkAdaptation(event);
audio_network_adaptation_events_.push_back(ana_event);
break;
}
- case rtclog::Event::BWE_PROBE_CLUSTER_CREATED_EVENT: {
+ case ParsedRtcEventLogNew::EventType::BWE_PROBE_CLUSTER_CREATED_EVENT: {
bwe_probe_cluster_created_events_.push_back(
GetBweProbeClusterCreated(event));
break;
}
- case rtclog::Event::BWE_PROBE_RESULT_EVENT: {
- bwe_probe_result_events_.push_back(GetBweProbeResult(event));
+ case ParsedRtcEventLogNew::EventType::BWE_PROBE_FAILURE_EVENT: {
+ bwe_probe_failure_events_.push_back(GetBweProbeFailure(event));
break;
}
- case rtclog::Event::ALR_STATE_EVENT: {
+ case ParsedRtcEventLogNew::EventType::BWE_PROBE_SUCCESS_EVENT: {
+ bwe_probe_success_events_.push_back(GetBweProbeSuccess(event));
+ break;
+ }
+ case ParsedRtcEventLogNew::EventType::ALR_STATE_EVENT: {
alr_state_events_.push_back(GetAlrState(event));
break;
}
- case rtclog::Event::ICE_CANDIDATE_PAIR_CONFIG: {
+ case ParsedRtcEventLogNew::EventType::ICE_CANDIDATE_PAIR_CONFIG: {
ice_candidate_pair_configs_.push_back(GetIceCandidatePairConfig(event));
break;
}
- case rtclog::Event::ICE_CANDIDATE_PAIR_EVENT: {
+ case ParsedRtcEventLogNew::EventType::ICE_CANDIDATE_PAIR_EVENT: {
ice_candidate_pair_events_.push_back(GetIceCandidatePairEvent(event));
break;
}
- case rtclog::Event::UNKNOWN_EVENT: {
+ case ParsedRtcEventLogNew::EventType::UNKNOWN_EVENT: {
break;
}
}
@@ -705,7 +713,19 @@
size_t index) const {
RTC_CHECK_LT(index, GetNumberOfEvents());
const rtclog::Event& event = events_[index];
+ return GetEventType(event);
+}
+
+ParsedRtcEventLogNew::EventType ParsedRtcEventLogNew::GetEventType(
+ const rtclog::Event& event) const {
RTC_CHECK(event.has_type());
+ if (event.type() == rtclog::Event::BWE_PROBE_RESULT_EVENT) {
+ RTC_CHECK(event.has_probe_result());
+ RTC_CHECK(event.probe_result().has_result());
+ if (event.probe_result().result() == rtclog::BweProbeResult::SUCCESS)
+ return ParsedRtcEventLogNew::EventType::BWE_PROBE_SUCCESS_EVENT;
+ return ParsedRtcEventLogNew::EventType::BWE_PROBE_FAILURE_EVENT;
+ }
return GetRuntimeEventType(event.type());
}
@@ -1108,30 +1128,29 @@
return res;
}
-LoggedBweProbeResultEvent ParsedRtcEventLogNew::GetBweProbeResult(
+LoggedBweProbeFailureEvent ParsedRtcEventLogNew::GetBweProbeFailure(
size_t index) const {
RTC_CHECK_LT(index, GetNumberOfEvents());
const rtclog::Event& event = events_[index];
- return GetBweProbeResult(event);
+ return GetBweProbeFailure(event);
}
-LoggedBweProbeResultEvent ParsedRtcEventLogNew::GetBweProbeResult(
+LoggedBweProbeFailureEvent ParsedRtcEventLogNew::GetBweProbeFailure(
const rtclog::Event& event) const {
RTC_CHECK(event.has_type());
RTC_CHECK_EQ(event.type(), rtclog::Event::BWE_PROBE_RESULT_EVENT);
RTC_CHECK(event.has_probe_result());
const rtclog::BweProbeResult& pr_event = event.probe_result();
- LoggedBweProbeResultEvent res;
+ RTC_CHECK(pr_event.has_result());
+ RTC_CHECK_NE(pr_event.result(), rtclog::BweProbeResult::SUCCESS);
+
+ LoggedBweProbeFailureEvent res;
res.timestamp_us = GetTimestamp(event);
RTC_CHECK(pr_event.has_id());
res.id = pr_event.id();
-
RTC_CHECK(pr_event.has_result());
- if (pr_event.result() == rtclog::BweProbeResult::SUCCESS) {
- RTC_CHECK(pr_event.has_bitrate_bps());
- res.bitrate_bps = pr_event.bitrate_bps();
- } else if (pr_event.result() ==
- rtclog::BweProbeResult::INVALID_SEND_RECEIVE_INTERVAL) {
+ if (pr_event.result() ==
+ rtclog::BweProbeResult::INVALID_SEND_RECEIVE_INTERVAL) {
res.failure_reason = ProbeFailureReason::kInvalidSendReceiveInterval;
} else if (pr_event.result() ==
rtclog::BweProbeResult::INVALID_SEND_RECEIVE_RATIO) {
@@ -1141,6 +1160,33 @@
} else {
RTC_NOTREACHED();
}
+ RTC_CHECK(!pr_event.has_bitrate_bps());
+
+ return res;
+}
+
+LoggedBweProbeSuccessEvent ParsedRtcEventLogNew::GetBweProbeSuccess(
+ size_t index) const {
+ RTC_CHECK_LT(index, GetNumberOfEvents());
+ const rtclog::Event& event = events_[index];
+ return GetBweProbeSuccess(event);
+}
+
+LoggedBweProbeSuccessEvent ParsedRtcEventLogNew::GetBweProbeSuccess(
+ const rtclog::Event& event) const {
+ RTC_CHECK(event.has_type());
+ RTC_CHECK_EQ(event.type(), rtclog::Event::BWE_PROBE_RESULT_EVENT);
+ RTC_CHECK(event.has_probe_result());
+ const rtclog::BweProbeResult& pr_event = event.probe_result();
+ RTC_CHECK(pr_event.has_result());
+ RTC_CHECK_EQ(pr_event.result(), rtclog::BweProbeResult::SUCCESS);
+
+ LoggedBweProbeSuccessEvent res;
+ res.timestamp_us = GetTimestamp(event);
+ RTC_CHECK(pr_event.has_id());
+ res.id = pr_event.id();
+ RTC_CHECK(pr_event.has_bitrate_bps());
+ res.bitrate_bps = pr_event.bitrate_bps();
return res;
}
diff --git a/logging/rtc_event_log/rtc_event_log_parser_new.h b/logging/rtc_event_log/rtc_event_log_parser_new.h
index c7cbc4b..23c1aee 100644
--- a/logging/rtc_event_log/rtc_event_log_parser_new.h
+++ b/logging/rtc_event_log/rtc_event_log_parser_new.h
@@ -96,11 +96,18 @@
int64_t log_time_ms() const { return timestamp_us / 1000; }
};
-struct LoggedBweProbeResultEvent {
+struct LoggedBweProbeSuccessEvent {
int64_t timestamp_us;
int32_t id;
- rtc::Optional<int32_t> bitrate_bps;
- rtc::Optional<ProbeFailureReason> failure_reason;
+ int32_t bitrate_bps;
+ int64_t log_time_us() const { return timestamp_us; }
+ int64_t log_time_ms() const { return timestamp_us / 1000; }
+};
+
+struct LoggedBweProbeFailureEvent {
+ int64_t timestamp_us;
+ int32_t id;
+ ProbeFailureReason failure_reason;
int64_t log_time_us() const { return timestamp_us; }
int64_t log_time_ms() const { return timestamp_us / 1000; }
};
@@ -463,7 +470,7 @@
friend class RtcEventLogTestHelper;
public:
- enum EventType {
+ enum class EventType {
UNKNOWN_EVENT = 0,
LOG_START = 1,
LOG_END = 2,
@@ -478,10 +485,11 @@
AUDIO_SENDER_CONFIG_EVENT = 11,
AUDIO_NETWORK_ADAPTATION_EVENT = 16,
BWE_PROBE_CLUSTER_CREATED_EVENT = 17,
- BWE_PROBE_RESULT_EVENT = 18,
- ALR_STATE_EVENT = 19,
- ICE_CANDIDATE_PAIR_CONFIG = 20,
- ICE_CANDIDATE_PAIR_EVENT = 21,
+ BWE_PROBE_FAILURE_EVENT = 18,
+ BWE_PROBE_SUCCESS_EVENT = 19,
+ ALR_STATE_EVENT = 20,
+ ICE_CANDIDATE_PAIR_CONFIG = 21,
+ ICE_CANDIDATE_PAIR_EVENT = 22,
};
enum class MediaType { ANY, AUDIO, VIDEO, DATA };
@@ -490,6 +498,37 @@
kAttemptWebrtcDefaultConfig
};
+ struct LoggedRtpStreamIncoming {
+ uint32_t ssrc;
+ std::vector<LoggedRtpPacketIncoming> incoming_packets;
+ };
+
+ struct LoggedRtpStreamOutgoing {
+ uint32_t ssrc;
+ std::vector<LoggedRtpPacketOutgoing> outgoing_packets;
+ };
+
+ struct LoggedRtpStreamView {
+ LoggedRtpStreamView(uint32_t ssrc,
+ const LoggedRtpPacketIncoming* ptr,
+ size_t num_elements)
+ : ssrc(ssrc),
+ packet_view(PacketView<const LoggedRtpPacket>::Create(
+ ptr,
+ num_elements,
+ offsetof(LoggedRtpPacketIncoming, rtp))) {}
+ LoggedRtpStreamView(uint32_t ssrc,
+ const LoggedRtpPacketOutgoing* ptr,
+ size_t num_elements)
+ : ssrc(ssrc),
+ packet_view(PacketView<const LoggedRtpPacket>::Create(
+ ptr,
+ num_elements,
+ offsetof(LoggedRtpPacketOutgoing, rtp))) {}
+ uint32_t ssrc;
+ PacketView<const LoggedRtpPacket> packet_view;
+ };
+
explicit ParsedRtcEventLogNew(
UnconfiguredHeaderExtensions parse_unconfigured_header_extensions =
UnconfiguredHeaderExtensions::kDontParse);
@@ -517,6 +556,7 @@
// Reads the event type of the rtclog::Event at |index|.
EventType GetEventType(size_t index) const;
+ EventType GetEventType(const rtclog::Event& event) const;
// Reads the header, direction, header length and packet length from the RTP
// event at |index|, and stores the values in the corresponding output
@@ -601,7 +641,8 @@
LoggedBweProbeClusterCreatedEvent GetBweProbeClusterCreated(
size_t index) const;
- LoggedBweProbeResultEvent GetBweProbeResult(size_t index) const;
+ LoggedBweProbeFailureEvent GetBweProbeFailure(size_t index) const;
+ LoggedBweProbeSuccessEvent GetBweProbeSuccess(size_t index) const;
MediaType GetMediaType(uint32_t ssrc, PacketDirection direction) const;
@@ -611,96 +652,91 @@
LoggedIceCandidatePairEvent GetIceCandidatePairEvent(size_t index) const;
+ // Configured SSRCs.
const std::set<uint32_t>& incoming_rtx_ssrcs() const {
return incoming_rtx_ssrcs_;
}
+
const std::set<uint32_t>& incoming_video_ssrcs() const {
return incoming_video_ssrcs_;
}
+
const std::set<uint32_t>& incoming_audio_ssrcs() const {
return incoming_audio_ssrcs_;
}
+
const std::set<uint32_t>& outgoing_rtx_ssrcs() const {
return outgoing_rtx_ssrcs_;
}
+
const std::set<uint32_t>& outgoing_video_ssrcs() const {
return outgoing_video_ssrcs_;
}
+
const std::set<uint32_t>& outgoing_audio_ssrcs() const {
return outgoing_audio_ssrcs_;
}
+ // Beginning and end of log segments.
const std::vector<LoggedStartEvent>& start_log_events() const {
return start_log_events_;
}
+
const std::vector<LoggedStopEvent>& stop_log_events() const {
return stop_log_events_;
}
+
+ // Audio
const std::map<uint32_t, std::vector<LoggedAudioPlayoutEvent>>&
audio_playout_events() const {
return audio_playout_events_;
}
+
const std::vector<LoggedAudioNetworkAdaptationEvent>&
audio_network_adaptation_events() const {
return audio_network_adaptation_events_;
}
+
+ // Bandwidth estimation
const std::vector<LoggedBweProbeClusterCreatedEvent>&
bwe_probe_cluster_created_events() const {
return bwe_probe_cluster_created_events_;
}
- const std::vector<LoggedBweProbeResultEvent>& bwe_probe_result_events()
+
+ const std::vector<LoggedBweProbeFailureEvent>& bwe_probe_failure_events()
const {
- return bwe_probe_result_events_;
+ return bwe_probe_failure_events_;
}
+
+ const std::vector<LoggedBweProbeSuccessEvent>& bwe_probe_success_events()
+ const {
+ return bwe_probe_success_events_;
+ }
+
const std::vector<LoggedBweDelayBasedUpdate>& bwe_delay_updates() const {
return bwe_delay_updates_;
}
+
const std::vector<LoggedBweLossBasedUpdate>& bwe_loss_updates() const {
return bwe_loss_updates_;
}
+
const std::vector<LoggedAlrStateEvent>& alr_state_events() const {
return alr_state_events_;
}
+
+ // ICE events
const std::vector<LoggedIceCandidatePairConfig>& ice_candidate_pair_configs()
const {
return ice_candidate_pair_configs_;
}
+
const std::vector<LoggedIceCandidatePairEvent>& ice_candidate_pair_events()
const {
return ice_candidate_pair_events_;
}
- struct LoggedRtpStreamIncoming {
- uint32_t ssrc;
- std::vector<LoggedRtpPacketIncoming> incoming_packets;
- };
-
- struct LoggedRtpStreamOutgoing {
- uint32_t ssrc;
- std::vector<LoggedRtpPacketOutgoing> outgoing_packets;
- };
-
- struct LoggedRtpStreamView {
- LoggedRtpStreamView(uint32_t ssrc,
- const LoggedRtpPacketIncoming* ptr,
- size_t num_elements)
- : ssrc(ssrc),
- packet_view(PacketView<const LoggedRtpPacket>::Create(
- ptr,
- num_elements,
- offsetof(LoggedRtpPacketIncoming, rtp))) {}
- LoggedRtpStreamView(uint32_t ssrc,
- const LoggedRtpPacketOutgoing* ptr,
- size_t num_elements)
- : ssrc(ssrc),
- packet_view(PacketView<const LoggedRtpPacket>::Create(
- ptr,
- num_elements,
- offsetof(LoggedRtpPacketOutgoing, rtp))) {}
- uint32_t ssrc;
- PacketView<const LoggedRtpPacket> packet_view;
- };
-
+ // RTP
const std::vector<LoggedRtpStreamIncoming>& incoming_rtp_packets_by_ssrc()
const {
return incoming_rtp_packets_by_ssrc_;
@@ -711,14 +747,6 @@
return outgoing_rtp_packets_by_ssrc_;
}
- const std::vector<LoggedRtcpPacketIncoming>& incoming_rtcp_packets() const {
- return incoming_rtcp_packets_;
- }
-
- const std::vector<LoggedRtcpPacketOutgoing>& outgoing_rtcp_packets() const {
- return outgoing_rtcp_packets_;
- }
-
const std::vector<LoggedRtpStreamView>& rtp_packets_by_ssrc(
PacketDirection direction) const {
if (direction == kIncomingPacket)
@@ -727,6 +755,15 @@
return outgoing_rtp_packet_views_by_ssrc_;
}
+ // RTCP
+ const std::vector<LoggedRtcpPacketIncoming>& incoming_rtcp_packets() const {
+ return incoming_rtcp_packets_;
+ }
+
+ const std::vector<LoggedRtcpPacketOutgoing>& outgoing_rtcp_packets() const {
+ return outgoing_rtcp_packets_;
+ }
+
const std::vector<LoggedRtcpPacketReceiverReport>& receiver_reports(
PacketDirection direction) const {
if (direction == kIncomingPacket) {
@@ -799,7 +836,10 @@
LoggedBweProbeClusterCreatedEvent GetBweProbeClusterCreated(
const rtclog::Event& event) const;
- LoggedBweProbeResultEvent GetBweProbeResult(const rtclog::Event& event) const;
+ LoggedBweProbeFailureEvent GetBweProbeFailure(
+ const rtclog::Event& event) const;
+ LoggedBweProbeSuccessEvent GetBweProbeSuccess(
+ const rtclog::Event& event) const;
LoggedAlrStateEvent GetAlrState(const rtclog::Event& event) const;
@@ -887,7 +927,8 @@
std::vector<LoggedBweProbeClusterCreatedEvent>
bwe_probe_cluster_created_events_;
- std::vector<LoggedBweProbeResultEvent> bwe_probe_result_events_;
+ std::vector<LoggedBweProbeFailureEvent> bwe_probe_failure_events_;
+ std::vector<LoggedBweProbeSuccessEvent> bwe_probe_success_events_;
std::vector<LoggedBweDelayBasedUpdate> bwe_delay_updates_;
diff --git a/logging/rtc_event_log/rtc_event_log_unittest.cc b/logging/rtc_event_log/rtc_event_log_unittest.cc
index 4ce2f3e..486a744 100644
--- a/logging/rtc_event_log/rtc_event_log_unittest.cc
+++ b/logging/rtc_event_log/rtc_event_log_unittest.cc
@@ -145,8 +145,10 @@
"AUDIO_NETWORK_ADAPTATION"},
{ParsedRtcEventLogNew::EventType::BWE_PROBE_CLUSTER_CREATED_EVENT,
"BWE_PROBE_CREATED"},
- {ParsedRtcEventLogNew::EventType::BWE_PROBE_RESULT_EVENT,
- "BWE_PROBE_RESULT"}});
+ {ParsedRtcEventLogNew::EventType::BWE_PROBE_SUCCESS_EVENT,
+ "BWE_PROBE_SUCCESS"},
+ {ParsedRtcEventLogNew::EventType::BWE_PROBE_FAILURE_EVENT,
+ "BWE_PROBE_FAILURE"}});
} // namespace
void PrintActualEvents(const ParsedRtcEventLogNew& parsed_log,
diff --git a/modules/audio_coding/neteq/tools/rtc_event_log_source.cc b/modules/audio_coding/neteq/tools/rtc_event_log_source.cc
index cf12891..7c97824 100644
--- a/modules/audio_coding/neteq/tools/rtc_event_log_source.cc
+++ b/modules/audio_coding/neteq/tools/rtc_event_log_source.cc
@@ -40,7 +40,7 @@
for (; rtp_packet_index_ < parsed_stream_.GetNumberOfEvents();
rtp_packet_index_++) {
if (parsed_stream_.GetEventType(rtp_packet_index_) ==
- ParsedRtcEventLogNew::RTP_EVENT) {
+ ParsedRtcEventLogNew::EventType::RTP_EVENT) {
PacketDirection direction;
size_t header_length;
size_t packet_length;
@@ -84,7 +84,7 @@
int64_t RtcEventLogSource::NextAudioOutputEventMs() {
while (audio_output_index_ < parsed_stream_.GetNumberOfEvents()) {
if (parsed_stream_.GetEventType(audio_output_index_) ==
- ParsedRtcEventLogNew::AUDIO_PLAYOUT_EVENT) {
+ ParsedRtcEventLogNew::EventType::AUDIO_PLAYOUT_EVENT) {
LoggedAudioPlayoutEvent playout_event =
parsed_stream_.GetAudioPlayout(audio_output_index_);
if (!(use_ssrc_filter_ && playout_event.ssrc != ssrc_)) {
diff --git a/rtc_tools/event_log_visualizer/analyzer.cc b/rtc_tools/event_log_visualizer/analyzer.cc
index 71707a9..3bed18b 100644
--- a/rtc_tools/event_log_visualizer/analyzer.cc
+++ b/rtc_tools/event_log_visualizer/analyzer.cc
@@ -977,12 +977,10 @@
TimeSeries result_series("Probing results.", LineStyle::kNone,
PointStyle::kHighlight);
- for (auto& result : parsed_log_.bwe_probe_result_events()) {
- if (result.bitrate_bps) {
- float x = ToCallTimeSec(result.log_time_us());
- float y = static_cast<float>(*result.bitrate_bps) / 1000;
- result_series.points.emplace_back(x, y);
- }
+ for (auto& result : parsed_log_.bwe_probe_success_events()) {
+ float x = ToCallTimeSec(result.log_time_us());
+ float y = static_cast<float>(result.bitrate_bps) / 1000;
+ result_series.points.emplace_back(x, y);
}
IntervalSeries alr_state("ALR", "#555555", IntervalSeries::kHorizontal);