Cleanup TransportFeedbackObserver from RtpSenderEgress
TransportFeedbackObserver is thus unused from WebRTC except from
DEPRECATED_RtpSender
Change-Id: Ib308f5331a342a4ec4f7c7cfdf6f76c3c4c1807c
Bug: webrtc:15368
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/344721
Commit-Queue: Per Kjellander <perkj@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42012}
diff --git a/modules/rtp_rtcp/source/rtp_rtcp_interface.h b/modules/rtp_rtcp/source/rtp_rtcp_interface.h
index e41a3fd..9fbe93f 100644
--- a/modules/rtp_rtcp/source/rtp_rtcp_interface.h
+++ b/modules/rtp_rtcp/source/rtp_rtcp_interface.h
@@ -75,6 +75,11 @@
NetworkLinkRtcpObserver* network_link_rtcp_observer = nullptr;
NetworkStateEstimateObserver* network_state_estimate_observer = nullptr;
+
+ // DEPRECATED, transport_feedback_callback is no longer invoked by the RTP
+ // module except from DEPRECATED_RtpSenderEgress.
+ // TODO: bugs.webrtc.org/15368 - Delete once DEPRECATED_RtpSenderEgress is
+ // deleted.
TransportFeedbackObserver* transport_feedback_callback = nullptr;
VideoBitrateAllocationObserver* bitrate_allocation_observer = nullptr;
RtcpRttStats* rtt_stats = nullptr;
diff --git a/modules/rtp_rtcp/source/rtp_sender_egress.cc b/modules/rtp_rtcp/source/rtp_sender_egress.cc
index 705e9d5..665c7ce 100644
--- a/modules/rtp_rtcp/source/rtp_sender_egress.cc
+++ b/modules/rtp_rtcp/source/rtp_sender_egress.cc
@@ -94,7 +94,6 @@
is_audio_(config.audio),
need_rtp_packet_infos_(config.need_rtp_packet_infos),
fec_generator_(config.fec_generator),
- transport_feedback_observer_(config.transport_feedback_callback),
send_packet_observer_(config.send_packet_observer),
rtp_stats_callback_(config.rtp_stats_callback),
bitrate_callback_(config.send_bitrate_observer),
@@ -107,6 +106,9 @@
kRtpSequenceNumberMapMaxEntries)
: nullptr) {
RTC_DCHECK(worker_queue_);
+ RTC_DCHECK(config.transport_feedback_callback == nullptr)
+ << "transport_feedback_callback is no longer used and will soon be "
+ "deleted.";
if (bitrate_callback_) {
update_task_ = RepeatingTaskHandle::DelayedStart(worker_queue_,
kUpdateInterval, [this]() {
@@ -269,10 +271,6 @@
} else if (packet->transport_sequence_number()) {
options.packet_id = *packet->transport_sequence_number();
}
- if (options.packet_id >= 0 && transport_feedback_observer_) {
- transport_feedback_observer_->OnAddPacket(
- RtpPacketSendInfo::From(*packet, pacing_info));
- }
if (packet->packet_type() != RtpPacketMediaType::kPadding &&
packet->packet_type() != RtpPacketMediaType::kRetransmission &&
diff --git a/modules/rtp_rtcp/source/rtp_sender_egress.h b/modules/rtp_rtcp/source/rtp_sender_egress.h
index 7f038f6..cb8a4dc 100644
--- a/modules/rtp_rtcp/source/rtp_sender_egress.h
+++ b/modules/rtp_rtcp/source/rtp_sender_egress.h
@@ -143,7 +143,6 @@
absl::optional<uint16_t> last_sent_seq_ RTC_GUARDED_BY(worker_queue_);
absl::optional<uint16_t> last_sent_rtx_seq_ RTC_GUARDED_BY(worker_queue_);
- TransportFeedbackObserver* const transport_feedback_observer_;
SendPacketObserver* const send_packet_observer_;
StreamDataCountersCallback* const rtp_stats_callback_;
BitrateStatisticsObserver* const bitrate_callback_;
diff --git a/modules/rtp_rtcp/source/rtp_sender_egress_unittest.cc b/modules/rtp_rtcp/source/rtp_sender_egress_unittest.cc
index 908df95..be79601 100644
--- a/modules/rtp_rtcp/source/rtp_sender_egress_unittest.cc
+++ b/modules/rtp_rtcp/source/rtp_sender_egress_unittest.cc
@@ -65,11 +65,6 @@
(override));
};
-class MockTransportFeedbackObserver : public TransportFeedbackObserver {
- public:
- MOCK_METHOD(void, OnAddPacket, (const RtpPacketSendInfo&), (override));
-};
-
class MockStreamDataCountersCallback : public StreamDataCountersCallback {
public:
MOCK_METHOD(void,
@@ -141,7 +136,6 @@
config.event_log = &mock_rtc_event_log_;
config.send_packet_observer = &send_packet_observer_;
config.rtp_stats_callback = &mock_rtp_stats_callback_;
- config.transport_feedback_callback = &feedback_observer_;
config.populate_network2_timestamp = false;
config.field_trials = &trials_;
return config;
@@ -173,7 +167,6 @@
NiceMock<MockRtcEventLog> mock_rtc_event_log_;
NiceMock<MockStreamDataCountersCallback> mock_rtp_stats_callback_;
NiceMock<MockSendPacketObserver> send_packet_observer_;
- NiceMock<MockTransportFeedbackObserver> feedback_observer_;
RtpHeaderExtensionMap header_extensions_;
NiceMock<TestTransport> transport_;
RtpPacketHistory packet_history_;
@@ -181,34 +174,6 @@
uint16_t sequence_number_;
};
-TEST_F(RtpSenderEgressTest, TransportFeedbackObserverGetsCorrectByteCount) {
- constexpr size_t kRtpOverheadBytesPerPacket = 12 + 8;
- constexpr size_t kPayloadSize = 1400;
- const uint16_t kTransportSequenceNumber = 17;
-
- header_extensions_.RegisterByUri(kTransportSequenceNumberExtensionId,
- TransportSequenceNumber::Uri());
-
- const size_t expected_bytes = kPayloadSize + kRtpOverheadBytesPerPacket;
-
- EXPECT_CALL(
- feedback_observer_,
- OnAddPacket(AllOf(
- Field(&RtpPacketSendInfo::media_ssrc, kSsrc),
- Field(&RtpPacketSendInfo::transport_sequence_number,
- kTransportSequenceNumber),
- Field(&RtpPacketSendInfo::rtp_sequence_number, kStartSequenceNumber),
- Field(&RtpPacketSendInfo::length, expected_bytes),
- Field(&RtpPacketSendInfo::pacing_info, PacedPacketInfo()))));
-
- std::unique_ptr<RtpPacketToSend> packet = BuildRtpPacket();
- packet->set_transport_sequence_number(kTransportSequenceNumber);
- packet->AllocatePayload(kPayloadSize);
-
- std::unique_ptr<RtpSenderEgress> sender = CreateRtpSenderEgress();
- sender->SendPacket(std::move(packet), PacedPacketInfo());
-}
-
TEST_F(RtpSenderEgressTest, SendsPacketsOneByOneWhenNotBatching) {
std::unique_ptr<RtpSenderEgress> sender = CreateRtpSenderEgress();
EXPECT_CALL(transport_,
@@ -926,115 +891,6 @@
EXPECT_EQ(rtx_stats.retransmitted.packets, 1u);
}
-TEST_F(RtpSenderEgressTest, TransportFeedbackObserverWithRetransmission) {
- const uint16_t kTransportSequenceNumber = 17;
- header_extensions_.RegisterByUri(kTransportSequenceNumberExtensionId,
- TransportSequenceNumber::Uri());
- std::unique_ptr<RtpPacketToSend> retransmission = BuildRtpPacket();
- retransmission->set_packet_type(RtpPacketMediaType::kRetransmission);
- retransmission->set_transport_sequence_number(kTransportSequenceNumber);
- retransmission->set_original_ssrc(kSsrc);
- uint16_t retransmitted_seq = retransmission->SequenceNumber() - 2;
- retransmission->set_retransmitted_sequence_number(retransmitted_seq);
-
- std::unique_ptr<RtpSenderEgress> sender = CreateRtpSenderEgress();
- EXPECT_CALL(
- feedback_observer_,
- OnAddPacket(AllOf(
- Field(&RtpPacketSendInfo::media_ssrc, kSsrc),
- Field(&RtpPacketSendInfo::rtp_sequence_number, retransmitted_seq),
- Field(&RtpPacketSendInfo::transport_sequence_number,
- kTransportSequenceNumber))));
- sender->SendPacket(std::move(retransmission), PacedPacketInfo());
-}
-
-TEST_F(RtpSenderEgressTest, TransportFeedbackObserverWithRtxRetransmission) {
- const uint16_t kTransportSequenceNumber = 17;
- header_extensions_.RegisterByUri(kTransportSequenceNumberExtensionId,
- TransportSequenceNumber::Uri());
-
- std::unique_ptr<RtpPacketToSend> rtx_retransmission = BuildRtpPacket();
- rtx_retransmission->SetSsrc(kRtxSsrc);
- rtx_retransmission->set_transport_sequence_number(kTransportSequenceNumber);
- rtx_retransmission->set_original_ssrc(kSsrc);
- rtx_retransmission->set_packet_type(RtpPacketMediaType::kRetransmission);
- uint16_t rtx_retransmitted_seq = rtx_retransmission->SequenceNumber() - 2;
- rtx_retransmission->set_retransmitted_sequence_number(rtx_retransmitted_seq);
-
- std::unique_ptr<RtpSenderEgress> sender = CreateRtpSenderEgress();
- EXPECT_CALL(
- feedback_observer_,
- OnAddPacket(AllOf(
- Field(&RtpPacketSendInfo::media_ssrc, kSsrc),
- Field(&RtpPacketSendInfo::rtp_sequence_number, rtx_retransmitted_seq),
- Field(&RtpPacketSendInfo::transport_sequence_number,
- kTransportSequenceNumber))));
- sender->SendPacket(std::move(rtx_retransmission), PacedPacketInfo());
-}
-
-TEST_F(RtpSenderEgressTest, TransportFeedbackObserverPadding) {
- const uint16_t kTransportSequenceNumber = 17;
- header_extensions_.RegisterByUri(kTransportSequenceNumberExtensionId,
- TransportSequenceNumber::Uri());
- std::unique_ptr<RtpPacketToSend> padding = BuildRtpPacket();
- padding->SetPadding(224);
- padding->set_packet_type(RtpPacketMediaType::kPadding);
- padding->set_transport_sequence_number(kTransportSequenceNumber);
-
- std::unique_ptr<RtpSenderEgress> sender = CreateRtpSenderEgress();
- EXPECT_CALL(
- feedback_observer_,
- OnAddPacket(AllOf(Field(&RtpPacketSendInfo::media_ssrc, absl::nullopt),
- Field(&RtpPacketSendInfo::transport_sequence_number,
- kTransportSequenceNumber))));
- sender->SendPacket(std::move(padding), PacedPacketInfo());
-}
-
-TEST_F(RtpSenderEgressTest, TransportFeedbackObserverRtxPadding) {
- const uint16_t kTransportSequenceNumber = 17;
- header_extensions_.RegisterByUri(kTransportSequenceNumberExtensionId,
- TransportSequenceNumber::Uri());
-
- std::unique_ptr<RtpPacketToSend> rtx_padding = BuildRtpPacket();
- rtx_padding->SetPadding(224);
- rtx_padding->SetSsrc(kRtxSsrc);
- rtx_padding->set_packet_type(RtpPacketMediaType::kPadding);
- rtx_padding->set_transport_sequence_number(kTransportSequenceNumber);
-
- std::unique_ptr<RtpSenderEgress> sender = CreateRtpSenderEgress();
- EXPECT_CALL(
- feedback_observer_,
- OnAddPacket(AllOf(Field(&RtpPacketSendInfo::media_ssrc, absl::nullopt),
- Field(&RtpPacketSendInfo::transport_sequence_number,
- kTransportSequenceNumber))));
- sender->SendPacket(std::move(rtx_padding), PacedPacketInfo());
-}
-
-TEST_F(RtpSenderEgressTest, TransportFeedbackObserverFec) {
- const uint16_t kTransportSequenceNumber = 17;
- header_extensions_.RegisterByUri(kTransportSequenceNumberExtensionId,
- TransportSequenceNumber::Uri());
-
- std::unique_ptr<RtpPacketToSend> fec_packet = BuildRtpPacket();
- fec_packet->SetSsrc(kFlexFecSsrc);
- fec_packet->set_packet_type(RtpPacketMediaType::kForwardErrorCorrection);
- fec_packet->set_transport_sequence_number(kTransportSequenceNumber);
-
- const rtc::ArrayView<const RtpExtensionSize> kNoRtpHeaderExtensionSizes;
- FlexfecSender flexfec(kFlexfectPayloadType, kFlexFecSsrc, kSsrc, /*mid=*/"",
- /*header_extensions=*/{}, kNoRtpHeaderExtensionSizes,
- /*rtp_state=*/nullptr, time_controller_.GetClock());
- RtpRtcpInterface::Configuration config = DefaultConfig();
- config.fec_generator = &flexfec;
- auto sender = std::make_unique<RtpSenderEgress>(config, &packet_history_);
- EXPECT_CALL(
- feedback_observer_,
- OnAddPacket(AllOf(Field(&RtpPacketSendInfo::media_ssrc, absl::nullopt),
- Field(&RtpPacketSendInfo::transport_sequence_number,
- kTransportSequenceNumber))));
- sender->SendPacket(std::move(fec_packet), PacedPacketInfo());
-}
-
TEST_F(RtpSenderEgressTest, SupportsAbortingRetransmissions) {
std::unique_ptr<RtpSenderEgress> sender = CreateRtpSenderEgress();
packet_history_.SetStorePacketsStatus(