In RtcEventLogParser use strict time types to access rtcp::TransportFeedback

Bug: webrtc:13757
Change-Id: I0aa6e1134acd8ff53eadb24ac051203d74b5050f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/265380
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Björn Terelius <terelius@webrtc.org>
Auto-Submit: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#37152}
This commit is contained in:
Danil Chapovalov 2022-06-08 12:27:51 +02:00 committed by WebRTC LUCI CQ
parent 5b298ab9dd
commit 640b51eeae
3 changed files with 17 additions and 14 deletions

View file

@ -503,6 +503,8 @@ if (rtc_enable_protobuf) {
"../api/rtc_event_log", "../api/rtc_event_log",
"../api/rtc_event_log:rtc_event_log_factory", "../api/rtc_event_log:rtc_event_log_factory",
"../api/task_queue:default_task_queue_factory", "../api/task_queue:default_task_queue_factory",
"../api/units:time_delta",
"../api/units:timestamp",
"../call", "../call",
"../call:call_interfaces", "../call:call_interfaces",
"../modules/audio_coding:audio_network_adaptor", "../modules/audio_coding:audio_network_adaptor",

View file

@ -2324,7 +2324,7 @@ std::vector<LoggedPacketInfo> ParsedRtcEventLog::GetPacketInfos(
}; };
Timestamp feedback_base_time = Timestamp::MinusInfinity(); Timestamp feedback_base_time = Timestamp::MinusInfinity();
absl::optional<int64_t> last_feedback_base_time_us; Timestamp last_feedback_base_time = Timestamp::MinusInfinity();
auto feedback_handler = auto feedback_handler =
[&](const LoggedRtcpPacketTransportFeedback& logged_rtcp) { [&](const LoggedRtcpPacketTransportFeedback& logged_rtcp) {
@ -2334,13 +2334,12 @@ std::vector<LoggedPacketInfo> ParsedRtcEventLog::GetPacketInfos(
// Add timestamp deltas to a local time base selected on first packet // Add timestamp deltas to a local time base selected on first packet
// arrival. This won't be the true time base, but makes it easier to // arrival. This won't be the true time base, but makes it easier to
// manually inspect time stamps. // manually inspect time stamps.
if (!last_feedback_base_time_us) { if (!last_feedback_base_time.IsFinite()) {
feedback_base_time = log_feedback_time; feedback_base_time = log_feedback_time;
} else { } else {
feedback_base_time += TimeDelta::Micros( feedback_base_time += feedback.GetBaseDelta(last_feedback_base_time);
feedback.GetBaseDeltaUs(*last_feedback_base_time_us));
} }
last_feedback_base_time_us = feedback.GetBaseTimeUs(); last_feedback_base_time = feedback.BaseTime();
std::vector<LoggedPacketInfo*> packet_feedbacks; std::vector<LoggedPacketInfo*> packet_feedbacks;
packet_feedbacks.reserve(feedback.GetAllPackets().size()); packet_feedbacks.reserve(feedback.GetAllPackets().size());
@ -2362,7 +2361,7 @@ std::vector<LoggedPacketInfo> ParsedRtcEventLog::GetPacketInfos(
continue; continue;
} }
if (packet.received()) { if (packet.received()) {
receive_timestamp += TimeDelta::Micros(packet.delta_us()); receive_timestamp += packet.delta();
if (sent->reported_recv_time.IsInfinite()) { if (sent->reported_recv_time.IsInfinite()) {
sent->reported_recv_time = receive_timestamp; sent->reported_recv_time = receive_timestamp;
sent->log_feedback_time = log_feedback_time; sent->log_feedback_time = log_feedback_time;

View file

@ -26,6 +26,8 @@
#include "api/network_state_predictor.h" #include "api/network_state_predictor.h"
#include "api/rtp_headers.h" #include "api/rtp_headers.h"
#include "api/rtp_parameters.h" #include "api/rtp_parameters.h"
#include "api/units/time_delta.h"
#include "api/units/timestamp.h"
#include "modules/audio_coding/audio_network_adaptor/include/audio_network_adaptor_config.h" #include "modules/audio_coding/audio_network_adaptor/include/audio_network_adaptor_config.h"
#include "modules/rtp_rtcp/include/rtp_cvo.h" #include "modules/rtp_rtcp/include/rtp_cvo.h"
#include "modules/rtp_rtcp/include/rtp_rtcp_defines.h" #include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
@ -354,14 +356,14 @@ rtcp::Bye EventGenerator::NewBye() {
rtcp::TransportFeedback EventGenerator::NewTransportFeedback() { rtcp::TransportFeedback EventGenerator::NewTransportFeedback() {
rtcp::TransportFeedback transport_feedback; rtcp::TransportFeedback transport_feedback;
uint16_t base_seq_no = prng_.Rand<uint16_t>(); uint16_t base_seq_no = prng_.Rand<uint16_t>();
int64_t base_time_us = prng_.Rand<uint32_t>(); Timestamp base_time = Timestamp::Micros(prng_.Rand<uint32_t>());
transport_feedback.SetBase(base_seq_no, base_time_us); transport_feedback.SetBase(base_seq_no, base_time);
transport_feedback.AddReceivedPacket(base_seq_no, base_time_us); transport_feedback.AddReceivedPacket(base_seq_no, base_time);
int64_t time_us = base_time_us; Timestamp time = base_time;
for (uint16_t i = 1u; i < 10u; i++) { for (uint16_t i = 1u; i < 10u; i++) {
time_us += prng_.Rand(0, 100000); time += TimeDelta::Micros(prng_.Rand(0, 100'000));
if (prng_.Rand<bool>()) { if (prng_.Rand<bool>()) {
transport_feedback.AddReceivedPacket(base_seq_no + i, time_us); transport_feedback.AddReceivedPacket(base_seq_no + i, time);
} }
} }
return transport_feedback; return transport_feedback;
@ -1252,9 +1254,9 @@ void EventVerifier::VerifyLoggedTransportFeedback(
logged_transport_feedback.transport_feedback.GetReceivedPackets()[i] logged_transport_feedback.transport_feedback.GetReceivedPackets()[i]
.sequence_number()); .sequence_number());
EXPECT_EQ( EXPECT_EQ(
original_transport_feedback.GetReceivedPackets()[i].delta_us(), original_transport_feedback.GetReceivedPackets()[i].delta(),
logged_transport_feedback.transport_feedback.GetReceivedPackets()[i] logged_transport_feedback.transport_feedback.GetReceivedPackets()[i]
.delta_us()); .delta());
} }
} }