Add RTP sequence number to TransportFeedbackObserver::AddPacket()
With this change, both the normal RTP and the transport-wide sequence
numbers are propagated with with AddPacket() call via a new
RtpPacketSendInfo struct, replacing the previous set of parameters.
The intent with this is that SendTimeHistory can hold a mapping from
transport-wide to rtp sequence numbers, and then via callbacks let the
RTP modules know when packets have been received by the remote end.
Bug: webrtc:8975
Change-Id: I6a24fc6282cbb041393752d39593c2867b242192
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133021
Commit-Queue: Erik Språng <sprang@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27708}
diff --git a/audio/channel_send.cc b/audio/channel_send.cc
index 99e3f90..63d61cf 100644
--- a/audio/channel_send.cc
+++ b/audio/channel_send.cc
@@ -314,14 +314,11 @@
}
// Implements TransportFeedbackObserver.
- void AddPacket(uint32_t ssrc,
- uint16_t sequence_number,
- size_t length,
- const PacedPacketInfo& pacing_info) override {
+ void OnAddPacket(const RtpPacketSendInfo& packet_info) override {
RTC_DCHECK(pacer_thread_.IsCurrent());
rtc::CritScope lock(&crit_);
if (feedback_observer_)
- feedback_observer_->AddPacket(ssrc, sequence_number, length, pacing_info);
+ feedback_observer_->OnAddPacket(packet_info);
}
void OnTransportFeedback(const rtcp::TransportFeedback& feedback) override {
diff --git a/call/rtp_transport_controller_send.cc b/call/rtp_transport_controller_send.cc
index 203d41e..7c8c4c3 100644
--- a/call/rtp_transport_controller_send.cc
+++ b/call/rtp_transport_controller_send.cc
@@ -408,15 +408,12 @@
});
}
-void RtpTransportControllerSend::AddPacket(uint32_t ssrc,
- uint16_t sequence_number,
- size_t length,
- const PacedPacketInfo& pacing_info) {
- if (send_side_bwe_with_overhead_) {
- length += transport_overhead_bytes_per_packet_;
- }
+void RtpTransportControllerSend::OnAddPacket(
+ const RtpPacketSendInfo& packet_info) {
transport_feedback_adapter_.AddPacket(
- ssrc, sequence_number, length, pacing_info,
+ packet_info,
+ send_side_bwe_with_overhead_ ? transport_overhead_bytes_per_packet_.load()
+ : 0,
Timestamp::ms(clock_->TimeInMilliseconds()));
}
diff --git a/call/rtp_transport_controller_send.h b/call/rtp_transport_controller_send.h
index df4892c..78617af 100644
--- a/call/rtp_transport_controller_send.h
+++ b/call/rtp_transport_controller_send.h
@@ -110,10 +110,7 @@
int64_t now_ms) override;
// Implements TransportFeedbackObserver interface
- void AddPacket(uint32_t ssrc,
- uint16_t sequence_number,
- size_t length,
- const PacedPacketInfo& pacing_info) override;
+ void OnAddPacket(const RtpPacketSendInfo& packet_info) override;
void OnTransportFeedback(const rtcp::TransportFeedback& feedback) override;
private:
diff --git a/logging/rtc_event_log/rtc_event_log_parser.cc b/logging/rtc_event_log/rtc_event_log_parser.cc
index 5a3d1ae..289744d 100644
--- a/logging/rtc_event_log/rtc_event_log_parser.cc
+++ b/logging/rtc_event_log/rtc_event_log_parser.cc
@@ -1961,14 +1961,23 @@
logged.overhead = current_overhead;
if (rtp.header.extension.hasTransportSequenceNumber) {
logged.log_feedback_time = Timestamp::PlusInfinity();
+
+ RtpPacketSendInfo packet_info;
+ packet_info.ssrc = rtp.header.ssrc;
+ packet_info.transport_sequence_number =
+ rtp.header.extension.transportSequenceNumber;
+ packet_info.rtp_sequence_number = rtp.header.sequenceNumber;
+ packet_info.has_rtp_sequence_number = true;
+ packet_info.length = rtp.total_length;
+ feedback_adapter.AddPacket(packet_info,
+ 0u, // Should this be current_overhead?
+ Timestamp::ms(rtp.log_time_ms()));
+
rtc::SentPacket sent_packet;
sent_packet.send_time_ms = rtp.log_time_ms();
sent_packet.info.packet_size_bytes = rtp.total_length;
sent_packet.info.included_in_feedback = true;
sent_packet.packet_id = rtp.header.extension.transportSequenceNumber;
- feedback_adapter.AddPacket(rtp.header.ssrc, sent_packet.packet_id,
- rtp.total_length, PacedPacketInfo(),
- Timestamp::ms(rtp.log_time_ms()));
auto sent_packet_msg = feedback_adapter.ProcessSentPacket(sent_packet);
RTC_CHECK(sent_packet_msg);
indices[sent_packet_msg->sequence_number] = packets.size();
diff --git a/modules/congestion_controller/include/send_side_congestion_controller.h b/modules/congestion_controller/include/send_side_congestion_controller.h
index d1222a2..f78763a 100644
--- a/modules/congestion_controller/include/send_side_congestion_controller.h
+++ b/modules/congestion_controller/include/send_side_congestion_controller.h
@@ -43,7 +43,7 @@
class RtcEventLog;
class CongestionWindowPushbackController;
-// Deprecated, for somewhat similar funtionality GoogCcNetworkController can be
+// Deprecated, for somewhat similar functionality GoogCcNetworkController can be
// used via GoogCcNetworkControllerFactory.
class DEPRECATED_SendSideCongestionController
: public SendSideCongestionControllerInterface {
@@ -107,10 +107,7 @@
void Process() override;
// Implements TransportFeedbackObserver.
- void AddPacket(uint32_t ssrc,
- uint16_t sequence_number,
- size_t length,
- const PacedPacketInfo& pacing_info) override;
+ void OnAddPacket(const RtpPacketSendInfo& packet_info) override;
void OnTransportFeedback(const rtcp::TransportFeedback& feedback) override;
std::vector<PacketFeedback> GetTransportFeedbackVector() const;
diff --git a/modules/congestion_controller/rtp/transport_feedback_adapter.cc b/modules/congestion_controller/rtp/transport_feedback_adapter.cc
index b1699b4..b99702b 100644
--- a/modules/congestion_controller/rtp/transport_feedback_adapter.cc
+++ b/modules/congestion_controller/rtp/transport_feedback_adapter.cc
@@ -83,18 +83,35 @@
size_t length,
const PacedPacketInfo& pacing_info,
Timestamp creation_time) {
+ RtpPacketSendInfo packet_info;
+ packet_info.ssrc = ssrc;
+ packet_info.transport_sequence_number = sequence_number;
+ packet_info.length = length;
+ packet_info.pacing_info = pacing_info;
+ AddPacket(packet_info, 0u, creation_time);
+}
+
+void TransportFeedbackAdapter::AddPacket(const RtpPacketSendInfo& packet_info,
+ size_t overhead_bytes,
+ Timestamp creation_time) {
{
rtc::CritScope cs(&lock_);
- send_time_history_.AddAndRemoveOld(
- PacketFeedback(creation_time.ms(), sequence_number, length,
- local_net_id_, remote_net_id_, pacing_info),
- creation_time.ms());
+ PacketFeedback packet_feedback(
+ creation_time.ms(), packet_info.transport_sequence_number,
+ packet_info.length + overhead_bytes, local_net_id_, remote_net_id_,
+ packet_info.pacing_info);
+ if (packet_info.has_rtp_sequence_number) {
+ packet_feedback.ssrc = packet_info.ssrc;
+ packet_feedback.rtp_sequence_number = packet_info.rtp_sequence_number;
+ }
+ send_time_history_.AddAndRemoveOld(packet_feedback, creation_time.ms());
}
{
rtc::CritScope cs(&observers_lock_);
for (auto* observer : observers_) {
- observer->OnPacketAdded(ssrc, sequence_number);
+ observer->OnPacketAdded(packet_info.ssrc,
+ packet_info.transport_sequence_number);
}
}
}
diff --git a/modules/congestion_controller/rtp/transport_feedback_adapter.h b/modules/congestion_controller/rtp/transport_feedback_adapter.h
index 3fb4fdd..7c9884a 100644
--- a/modules/congestion_controller/rtp/transport_feedback_adapter.h
+++ b/modules/congestion_controller/rtp/transport_feedback_adapter.h
@@ -24,6 +24,7 @@
namespace webrtc {
class PacketFeedbackObserver;
+struct RtpPacketSendInfo;
namespace rtcp {
class TransportFeedback;
@@ -37,12 +38,16 @@
void RegisterPacketFeedbackObserver(PacketFeedbackObserver* observer);
void DeRegisterPacketFeedbackObserver(PacketFeedbackObserver* observer);
+ // TODO(webrtc:8975): Remove when downstream projects have been updated.
void AddPacket(uint32_t ssrc,
uint16_t sequence_number,
size_t length,
const PacedPacketInfo& pacing_info,
Timestamp creation_time);
+ void AddPacket(const RtpPacketSendInfo& packet_info,
+ size_t overhead_bytes,
+ Timestamp creation_time);
absl::optional<SentPacket> ProcessSentPacket(
const rtc::SentPacket& sent_packet);
diff --git a/modules/congestion_controller/rtp/transport_feedback_adapter_unittest.cc b/modules/congestion_controller/rtp/transport_feedback_adapter_unittest.cc
index c9ec37b..fbd02dd 100644
--- a/modules/congestion_controller/rtp/transport_feedback_adapter_unittest.cc
+++ b/modules/congestion_controller/rtp/transport_feedback_adapter_unittest.cc
@@ -64,9 +64,14 @@
int64_t now_ms) {}
void OnSentPacket(const PacketFeedback& packet_feedback) {
- adapter_->AddPacket(kSsrc, packet_feedback.sequence_number,
- packet_feedback.payload_size,
- packet_feedback.pacing_info,
+ RtpPacketSendInfo packet_info;
+ packet_info.ssrc = kSsrc;
+ packet_info.transport_sequence_number = packet_feedback.sequence_number;
+ packet_info.rtp_sequence_number = 0;
+ packet_info.has_rtp_sequence_number = true;
+ packet_info.length = packet_feedback.payload_size;
+ packet_info.pacing_info = packet_feedback.pacing_info;
+ adapter_->AddPacket(RtpPacketSendInfo(packet_info), 0u,
Timestamp::ms(clock_.TimeInMilliseconds()));
adapter_->ProcessSentPacket(rtc::SentPacket(packet_feedback.sequence_number,
packet_feedback.send_time_ms,
diff --git a/modules/congestion_controller/send_side_congestion_controller.cc b/modules/congestion_controller/send_side_congestion_controller.cc
index 1fbc63d..5a9d3d8 100644
--- a/modules/congestion_controller/send_side_congestion_controller.cc
+++ b/modules/congestion_controller/send_side_congestion_controller.cc
@@ -365,17 +365,16 @@
MaybeTriggerOnNetworkChanged();
}
-void DEPRECATED_SendSideCongestionController::AddPacket(
- uint32_t ssrc,
- uint16_t sequence_number,
- size_t length,
- const PacedPacketInfo& pacing_info) {
+void DEPRECATED_SendSideCongestionController::OnAddPacket(
+ const RtpPacketSendInfo& packet_info) {
+ size_t overhead_bytes = 0;
if (send_side_bwe_with_overhead_) {
rtc::CritScope cs(&bwe_lock_);
- length += transport_overhead_bytes_per_packet_;
+ overhead_bytes = transport_overhead_bytes_per_packet_;
}
- transport_feedback_adapter_.AddPacket(ssrc, sequence_number, length,
- pacing_info);
+ transport_feedback_adapter_.AddPacket(
+ packet_info.ssrc, packet_info.transport_sequence_number,
+ packet_info.length + overhead_bytes, packet_info.pacing_info);
}
void DEPRECATED_SendSideCongestionController::OnTransportFeedback(
diff --git a/modules/congestion_controller/send_side_congestion_controller_unittest.cc b/modules/congestion_controller/send_side_congestion_controller_unittest.cc
index f617e56..bb4cb7d 100644
--- a/modules/congestion_controller/send_side_congestion_controller_unittest.cc
+++ b/modules/congestion_controller/send_side_congestion_controller_unittest.cc
@@ -77,10 +77,15 @@
}
void OnSentPacket(const PacketFeedback& packet_feedback) {
- constexpr uint32_t ssrc = 0;
- controller_->AddPacket(ssrc, packet_feedback.sequence_number,
- packet_feedback.payload_size,
- packet_feedback.pacing_info);
+ RtpPacketSendInfo packet_info;
+ packet_info.ssrc = 0;
+ packet_info.transport_sequence_number = packet_feedback.sequence_number;
+ packet_info.rtp_sequence_number = 0;
+ packet_info.has_rtp_sequence_number = true;
+ packet_info.length = packet_feedback.payload_size;
+ packet_info.pacing_info = packet_feedback.pacing_info;
+
+ controller_->OnAddPacket(packet_info);
controller_->OnSentPacket(rtc::SentPacket(packet_feedback.sequence_number,
packet_feedback.send_time_ms));
}
diff --git a/modules/rtp_rtcp/include/rtp_rtcp_defines.cc b/modules/rtp_rtcp/include/rtp_rtcp_defines.cc
index 0711b41..19dafb3 100644
--- a/modules/rtp_rtcp/include/rtp_rtcp_defines.cc
+++ b/modules/rtp_rtcp/include/rtp_rtcp_defines.cc
@@ -95,11 +95,14 @@
arrival_time_ms(arrival_time_ms),
send_time_ms(send_time_ms),
sequence_number(sequence_number),
+ long_sequence_number(0),
payload_size(payload_size),
unacknowledged_data(0),
local_net_id(local_net_id),
remote_net_id(remote_net_id),
- pacing_info(pacing_info) {}
+ pacing_info(pacing_info),
+ ssrc(0),
+ rtp_sequence_number(0) {}
PacketFeedback::PacketFeedback(const PacketFeedback&) = default;
PacketFeedback& PacketFeedback::operator=(const PacketFeedback&) = default;
diff --git a/modules/rtp_rtcp/include/rtp_rtcp_defines.h b/modules/rtp_rtcp/include/rtp_rtcp_defines.h
index 41ab1cf..ac492f6 100644
--- a/modules/rtp_rtcp/include/rtp_rtcp_defines.h
+++ b/modules/rtp_rtcp/include/rtp_rtcp_defines.h
@@ -274,6 +274,10 @@
uint16_t remote_net_id;
// Pacing information about this packet.
PacedPacketInfo pacing_info;
+
+ // The SSRC and RTP sequence number of the packet this feedback refers to.
+ uint32_t ssrc;
+ uint16_t rtp_sequence_number;
};
class PacketFeedbackComparator {
@@ -287,16 +291,42 @@
}
};
+struct RtpPacketSendInfo {
+ public:
+ RtpPacketSendInfo() = default;
+
+ uint16_t transport_sequence_number = 0;
+ uint32_t ssrc = 0;
+ uint16_t rtp_sequence_number = 0;
+ // Get rid of this flag when all code paths populate |rtp_sequence_number|.
+ bool has_rtp_sequence_number = false;
+ size_t length = 0;
+ PacedPacketInfo pacing_info;
+};
+
class TransportFeedbackObserver {
public:
TransportFeedbackObserver() {}
virtual ~TransportFeedbackObserver() {}
- // Note: Transport-wide sequence number as sequence number.
+ // TODO(webrtc:8975): Remove when downstream projects have been updated.
virtual void AddPacket(uint32_t ssrc,
- uint16_t sequence_number,
+ uint16_t sequence_number, // Transport-wide.
size_t length,
- const PacedPacketInfo& pacing_info) = 0;
+ const PacedPacketInfo& pacing_info) {
+ RtpPacketSendInfo packet_info;
+ packet_info.ssrc = ssrc;
+ packet_info.transport_sequence_number = sequence_number;
+ packet_info.length = length;
+ packet_info.pacing_info = pacing_info;
+ OnAddPacket(packet_info);
+ }
+
+ virtual void OnAddPacket(const RtpPacketSendInfo& packet_info) {
+ // TODO(webrtc:8975): Remove when downstream projects have been updated.
+ AddPacket(packet_info.ssrc, packet_info.transport_sequence_number,
+ packet_info.length, packet_info.pacing_info);
+ }
virtual void OnTransportFeedback(const rtcp::TransportFeedback& feedback) = 0;
};
diff --git a/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc b/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc
index e1483a4..332495d 100644
--- a/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc
+++ b/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc
@@ -84,9 +84,7 @@
class MockTransportFeedbackObserver : public TransportFeedbackObserver {
public:
- MOCK_METHOD3(AddPacket, void(uint32_t, uint16_t, size_t));
- MOCK_METHOD4(AddPacket,
- void(uint32_t, uint16_t, size_t, const PacedPacketInfo&));
+ MOCK_METHOD1(OnAddPacket, void(const RtpPacketSendInfo&));
MOCK_METHOD1(OnTransportFeedback, void(const rtcp::TransportFeedback&));
MOCK_CONST_METHOD0(GetTransportFeedbackVector, std::vector<PacketFeedback>());
};
diff --git a/modules/rtp_rtcp/source/rtp_sender.cc b/modules/rtp_rtcp/source/rtp_sender.cc
index 9f3cefc..2e198fc 100644
--- a/modules/rtp_rtcp/source/rtp_sender.cc
+++ b/modules/rtp_rtcp/source/rtp_sender.cc
@@ -1198,14 +1198,19 @@
uint16_t packet_id,
const RtpPacketToSend& packet,
const PacedPacketInfo& pacing_info) {
- size_t packet_size = packet.payload_size() + packet.padding_size();
- if (send_side_bwe_with_overhead_) {
- packet_size = packet.size();
- }
-
if (transport_feedback_observer_) {
- transport_feedback_observer_->AddPacket(SSRC(), packet_id, packet_size,
- pacing_info);
+ size_t packet_size = packet.payload_size() + packet.padding_size();
+ if (send_side_bwe_with_overhead_) {
+ packet_size = packet.size();
+ }
+
+ RtpPacketSendInfo packet_info;
+ packet_info.ssrc = SSRC();
+ packet_info.transport_sequence_number = packet_id;
+ packet_info.rtp_sequence_number = packet.SequenceNumber();
+ packet_info.length = packet_size;
+ packet_info.pacing_info = pacing_info;
+ transport_feedback_observer_->OnAddPacket(packet_info);
}
}
diff --git a/modules/rtp_rtcp/source/rtp_sender_unittest.cc b/modules/rtp_rtcp/source/rtp_sender_unittest.cc
index 3d9550b..ba841c2 100644
--- a/modules/rtp_rtcp/source/rtp_sender_unittest.cc
+++ b/modules/rtp_rtcp/source/rtp_sender_unittest.cc
@@ -69,8 +69,10 @@
const char kNoMid[] = "";
using ::testing::_;
+using ::testing::AllOf;
using ::testing::ElementsAre;
using ::testing::ElementsAreArray;
+using ::testing::Field;
using ::testing::Invoke;
using ::testing::SizeIs;
@@ -162,8 +164,7 @@
class MockTransportFeedbackObserver : public TransportFeedbackObserver {
public:
- MOCK_METHOD4(AddPacket,
- void(uint32_t, uint16_t, size_t, const PacedPacketInfo&));
+ MOCK_METHOD1(OnAddPacket, void(const RtpPacketSendInfo&));
MOCK_METHOD1(OnTransportFeedback, void(const rtcp::TransportFeedback&));
MOCK_CONST_METHOD0(GetTransportFeedbackVector, std::vector<PacketFeedback>());
};
@@ -396,8 +397,14 @@
: sizeof(kPayloadData);
EXPECT_CALL(feedback_observer_,
- AddPacket(rtp_sender_->SSRC(), kTransportSequenceNumber,
- expected_bytes, PacedPacketInfo()))
+ OnAddPacket(AllOf(
+ Field(&RtpPacketSendInfo::ssrc, rtp_sender_->SSRC()),
+ Field(&RtpPacketSendInfo::transport_sequence_number,
+ kTransportSequenceNumber),
+ Field(&RtpPacketSendInfo::rtp_sequence_number,
+ rtp_sender_->SequenceNumber()),
+ Field(&RtpPacketSendInfo::length, expected_bytes),
+ Field(&RtpPacketSendInfo::pacing_info, PacedPacketInfo()))))
.Times(1);
EXPECT_CALL(mock_overhead_observer,
OnOverheadChanged(kRtpOverheadBytesPerPacket))
@@ -424,8 +431,13 @@
.Times(1);
EXPECT_CALL(feedback_observer_,
- AddPacket(rtp_sender_->SSRC(), kTransportSequenceNumber, _,
- PacedPacketInfo()))
+ OnAddPacket(AllOf(
+ Field(&RtpPacketSendInfo::ssrc, rtp_sender_->SSRC()),
+ Field(&RtpPacketSendInfo::transport_sequence_number,
+ kTransportSequenceNumber),
+ Field(&RtpPacketSendInfo::rtp_sequence_number,
+ rtp_sender_->SequenceNumber()),
+ Field(&RtpPacketSendInfo::pacing_info, PacedPacketInfo()))))
.Times(1);
SendGenericPacket();
@@ -597,8 +609,13 @@
OnSendPacket(kTransportSequenceNumber, _, _))
.Times(1);
EXPECT_CALL(feedback_observer_,
- AddPacket(rtp_sender_->SSRC(), kTransportSequenceNumber, _,
- PacedPacketInfo()))
+ OnAddPacket(AllOf(
+ Field(&RtpPacketSendInfo::ssrc, rtp_sender_->SSRC()),
+ Field(&RtpPacketSendInfo::transport_sequence_number,
+ kTransportSequenceNumber),
+ Field(&RtpPacketSendInfo::rtp_sequence_number,
+ rtp_sender_->SequenceNumber()),
+ Field(&RtpPacketSendInfo::pacing_info, PacedPacketInfo()))))
.Times(1);
SendGenericPacket();
diff --git a/rtc_tools/event_log_visualizer/analyzer.cc b/rtc_tools/event_log_visualizer/analyzer.cc
index bb662d0..00369e8 100644
--- a/rtc_tools/event_log_visualizer/analyzer.cc
+++ b/rtc_tools/event_log_visualizer/analyzer.cc
@@ -1286,10 +1286,16 @@
const RtpPacketType& rtp_packet = *rtp_iterator->second;
if (rtp_packet.rtp.header.extension.hasTransportSequenceNumber) {
RTC_DCHECK(rtp_packet.rtp.header.extension.hasTransportSequenceNumber);
+ RtpPacketSendInfo packet_info;
+ packet_info.ssrc = rtp_packet.rtp.header.ssrc;
+ packet_info.rtp_sequence_number =
+ rtp_packet.rtp.header.extension.transportSequenceNumber;
+ packet_info.rtp_sequence_number = rtp_packet.rtp.header.sequenceNumber;
+ packet_info.has_rtp_sequence_number = true;
+ packet_info.length = rtp_packet.rtp.total_length;
transport_feedback.AddPacket(
- rtp_packet.rtp.header.ssrc,
- rtp_packet.rtp.header.extension.transportSequenceNumber,
- rtp_packet.rtp.total_length, PacedPacketInfo(),
+ packet_info,
+ 0u, // Per packet overhead bytes.
Timestamp::us(rtp_packet.rtp.log_time_us()));
rtc::SentPacket sent_packet(
rtp_packet.rtp.header.extension.transportSequenceNumber,
diff --git a/rtc_tools/event_log_visualizer/log_simulation.cc b/rtc_tools/event_log_visualizer/log_simulation.cc
index 4778cc5..1595e35 100644
--- a/rtc_tools/event_log_visualizer/log_simulation.cc
+++ b/rtc_tools/event_log_visualizer/log_simulation.cc
@@ -80,8 +80,15 @@
pending_probes_.pop_front();
}
}
- transport_feedback_.AddPacket(packet.ssrc, packet.transport_seq_no,
- packet.size + packet.overhead, probe_info,
+
+ RtpPacketSendInfo packet_info;
+ packet_info.ssrc = packet.ssrc;
+ packet_info.transport_sequence_number = packet.transport_seq_no;
+ packet_info.rtp_sequence_number = packet.stream_seq_no;
+ packet_info.has_rtp_sequence_number = true;
+ packet_info.length = packet.size;
+ packet_info.pacing_info = probe_info;
+ transport_feedback_.AddPacket(packet_info, packet.overhead,
packet.log_packet_time);
}
rtc::SentPacket sent_packet;