diff --git a/logging/rtc_event_log/rtc_event_log_parser.cc b/logging/rtc_event_log/rtc_event_log_parser.cc index 4033a593a1..a67c95aa58 100644 --- a/logging/rtc_event_log/rtc_event_log_parser.cc +++ b/logging/rtc_event_log/rtc_event_log_parser.cc @@ -690,46 +690,40 @@ ParsedRtcEventLog::ParseStatus StoreRtcpBlocks( header.fmt() == rtcp::TransportFeedback::kFeedbackMessageType) { LoggedRtcpPacketTransportFeedback parsed_block; parsed_block.timestamp = timestamp; - if (parsed_block.transport_feedback.Parse(header)) - transport_feedback_list->push_back(std::move(parsed_block)); + RTC_PARSE_CHECK_OR_RETURN(parsed_block.transport_feedback.Parse(header)); + transport_feedback_list->push_back(std::move(parsed_block)); } else if (header.type() == rtcp::SenderReport::kPacketType) { LoggedRtcpPacketSenderReport parsed_block; parsed_block.timestamp = timestamp; - if (parsed_block.sr.Parse(header)) { - sr_list->push_back(std::move(parsed_block)); - } + RTC_PARSE_CHECK_OR_RETURN(parsed_block.sr.Parse(header)); + sr_list->push_back(std::move(parsed_block)); } else if (header.type() == rtcp::ReceiverReport::kPacketType) { LoggedRtcpPacketReceiverReport parsed_block; parsed_block.timestamp = timestamp; - if (parsed_block.rr.Parse(header)) { - rr_list->push_back(std::move(parsed_block)); - } + RTC_PARSE_CHECK_OR_RETURN(parsed_block.rr.Parse(header)); + rr_list->push_back(std::move(parsed_block)); } else if (header.type() == rtcp::ExtendedReports::kPacketType) { LoggedRtcpPacketExtendedReports parsed_block; parsed_block.timestamp = timestamp; - if (parsed_block.xr.Parse(header)) { - xr_list->push_back(std::move(parsed_block)); - } + RTC_PARSE_CHECK_OR_RETURN(parsed_block.xr.Parse(header)); + xr_list->push_back(std::move(parsed_block)); } else if (header.type() == rtcp::Fir::kPacketType && header.fmt() == rtcp::Fir::kFeedbackMessageType) { LoggedRtcpPacketFir parsed_block; parsed_block.timestamp = timestamp; - if (parsed_block.fir.Parse(header)) { - fir_list->push_back(std::move(parsed_block)); - } + RTC_PARSE_CHECK_OR_RETURN(parsed_block.fir.Parse(header)); + fir_list->push_back(std::move(parsed_block)); } else if (header.type() == rtcp::Pli::kPacketType && header.fmt() == rtcp::Pli::kFeedbackMessageType) { LoggedRtcpPacketPli parsed_block; parsed_block.timestamp = timestamp; - if (parsed_block.pli.Parse(header)) { - pli_list->push_back(std::move(parsed_block)); - } + RTC_PARSE_CHECK_OR_RETURN(parsed_block.pli.Parse(header)); + pli_list->push_back(std::move(parsed_block)); } else if (header.type() == rtcp::Bye::kPacketType) { LoggedRtcpPacketBye parsed_block; parsed_block.timestamp = timestamp; - if (parsed_block.bye.Parse(header)) { - bye_list->push_back(std::move(parsed_block)); - } + RTC_PARSE_CHECK_OR_RETURN(parsed_block.bye.Parse(header)); + bye_list->push_back(std::move(parsed_block)); } else if (header.type() == rtcp::Psfb::kPacketType && header.fmt() == rtcp::Psfb::kAfbMessageType) { bool type_found = false; @@ -749,13 +743,13 @@ ParsedRtcEventLog::ParseStatus StoreRtcpBlocks( type_found = true; } } + // We ignore other application-layer feedback types. } else if (header.type() == rtcp::Nack::kPacketType && header.fmt() == rtcp::Nack::kFeedbackMessageType) { LoggedRtcpPacketNack parsed_block; parsed_block.timestamp = timestamp; - if (parsed_block.nack.Parse(header)) { - nack_list->push_back(std::move(parsed_block)); - } + RTC_PARSE_CHECK_OR_RETURN(parsed_block.nack.Parse(header)); + nack_list->push_back(std::move(parsed_block)); } } return ParsedRtcEventLog::ParseStatus::Success(); @@ -2393,8 +2387,11 @@ std::vector ParsedRtcEventLog::GetPacketInfos( last->last_in_feedback = true; for (LoggedPacketInfo* fb : packet_feedbacks) { if (direction == PacketDirection::kOutgoingPacket) { - fb->feedback_hold_duration = - last->reported_recv_time - fb->reported_recv_time; + if (last->reported_recv_time.IsFinite() && + fb->reported_recv_time.IsFinite()) { + fb->feedback_hold_duration = + last->reported_recv_time - fb->reported_recv_time; + } } else { fb->feedback_hold_duration = log_feedback_time - fb->log_packet_time;