Fixes parsing of logs where receive time info is missing.

Bug: None
Change-Id: I42165d3d9fa218f06013e964065a336e04f9f837
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/125522
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26962}
This commit is contained in:
Sebastian Jansson 2019-03-05 08:43:05 +01:00 committed by Commit Bot
parent 07316a6120
commit c8eeb18d41

View File

@ -1988,6 +1988,11 @@ std::vector<LoggedPacketInfo> ParsedRtcEventLog::GetPacketInfos(
auto& last_fb = msg->packet_feedbacks.back();
Timestamp last_recv_time = last_fb.receive_time;
// This can happen if send time info is missing for the real last packet in
// the feedback, allowing the reported last packet to med indicated as lost.
if (last_recv_time.IsInfinite())
RTC_LOG(LS_WARNING) << "No receive time for last packet in feedback.";
for (auto& fb : msg->packet_feedbacks) {
if (indices.find(fb.sent_packet.sequence_number) == indices.end()) {
RTC_LOG(LS_ERROR) << "Received feedback for unknown packet: "
@ -1997,17 +2002,19 @@ std::vector<LoggedPacketInfo> ParsedRtcEventLog::GetPacketInfos(
LoggedPacketInfo* sent =
&packets[indices[fb.sent_packet.sequence_number]];
sent->reported_recv_time = fb.receive_time;
// Is we have received feedback with a valid receive time for this packet
// If we have received feedback with a valid receive time for this packet
// before, we keep the previous values.
if (sent->log_feedback_time.IsFinite() &&
sent->reported_recv_time.IsFinite())
continue;
sent->log_feedback_time = msg->feedback_time;
if (direction == PacketDirection::kOutgoingPacket) {
sent->feedback_hold_duration = last_recv_time - fb.receive_time;
} else {
sent->feedback_hold_duration =
Timestamp::ms(logged.log_time_ms()) - sent->log_packet_time;
if (last_recv_time.IsFinite()) {
if (direction == PacketDirection::kOutgoingPacket) {
sent->feedback_hold_duration = last_recv_time - fb.receive_time;
} else {
sent->feedback_hold_duration =
Timestamp::ms(logged.log_time_ms()) - sent->log_packet_time;
}
}
sent->last_in_feedback = (&fb == &last_fb);
}