Calls OnPacketsAcknowledged on RtpRtcp instead of RTPSender directly.
This prepares for splitting RtpSenderEgress out of RTPSender.
For context, see:
https://webrtc-review.googlesource.com/c/src/+/158020
Bug: webrtc:11036
Change-Id: I6d385ba255ce23f4c6685a3737eeb243ce2ec6ff
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/158201
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29601}
diff --git a/call/rtp_video_sender.cc b/call/rtp_video_sender.cc
index 4f62061..8b34048 100644
--- a/call/rtp_video_sender.cc
+++ b/call/rtp_video_sender.cc
@@ -583,7 +583,7 @@
void RtpVideoSender::ConfigureSsrcs() {
// Configure regular SSRCs.
- RTC_CHECK(ssrc_to_rtp_sender_.empty());
+ RTC_CHECK(ssrc_to_rtp_module_.empty());
for (size_t i = 0; i < rtp_config_.ssrcs.size(); ++i) {
uint32_t ssrc = rtp_config_.ssrcs[i];
RtpRtcp* const rtp_rtcp = rtp_streams_[i].rtp_rtcp.get();
@@ -593,9 +593,7 @@
if (it != suspended_ssrcs_.end())
rtp_rtcp->SetRtpState(it->second);
- RTPSender* rtp_sender = rtp_rtcp->RtpSender();
- RTC_DCHECK(rtp_sender != nullptr);
- ssrc_to_rtp_sender_[ssrc] = rtp_sender;
+ ssrc_to_rtp_module_[ssrc] = rtp_rtcp;
}
// Set up RTX if available.
@@ -868,9 +866,9 @@
for (const auto& kv : early_loss_detected_per_ssrc) {
const uint32_t ssrc = kv.first;
- auto it = ssrc_to_rtp_sender_.find(ssrc);
- RTC_DCHECK(it != ssrc_to_rtp_sender_.end());
- RTPSender* rtp_sender = it->second;
+ auto it = ssrc_to_rtp_module_.find(ssrc);
+ RTC_DCHECK(it != ssrc_to_rtp_module_.end());
+ RTPSender* rtp_sender = it->second->RtpSender();
for (uint16_t sequence_number : kv.second) {
rtp_sender->ReSendPacket(sequence_number);
}
@@ -879,8 +877,8 @@
for (const auto& kv : acked_packets_per_ssrc) {
const uint32_t ssrc = kv.first;
- auto it = ssrc_to_rtp_sender_.find(ssrc);
- if (it == ssrc_to_rtp_sender_.end()) {
+ auto it = ssrc_to_rtp_module_.find(ssrc);
+ if (it == ssrc_to_rtp_module_.end()) {
// Packets not for a media SSRC, so likely RTX or FEC. If so, ignore
// since there's no RTP history to clean up anyway.
continue;
diff --git a/call/rtp_video_sender.h b/call/rtp_video_sender.h
index 9458f13..88d7ab8 100644
--- a/call/rtp_video_sender.h
+++ b/call/rtp_video_sender.h
@@ -203,10 +203,10 @@
std::vector<FrameCounts> frame_counts_ RTC_GUARDED_BY(crit_);
FrameCountObserver* const frame_count_observer_;
- // Effectively const map from ssrc to RTPSender, for all media ssrcs.
+ // Effectively const map from SSRC to RtpRtcp, for all media SSRCs.
// This map is set at construction time and never changed, but it's
// non-trivial to make it properly const.
- std::map<uint32_t, RTPSender*> ssrc_to_rtp_sender_;
+ std::map<uint32_t, RtpRtcp*> ssrc_to_rtp_module_;
RTC_DISALLOW_COPY_AND_ASSIGN(RtpVideoSender);
};
diff --git a/modules/rtp_rtcp/include/rtp_rtcp.h b/modules/rtp_rtcp/include/rtp_rtcp.h
index adce964..2fea235 100644
--- a/modules/rtp_rtcp/include/rtp_rtcp.h
+++ b/modules/rtp_rtcp/include/rtp_rtcp.h
@@ -276,6 +276,9 @@
virtual bool TrySendPacket(RtpPacketToSend* packet,
const PacedPacketInfo& pacing_info) = 0;
+ virtual void OnPacketsAcknowledged(
+ rtc::ArrayView<const uint16_t> sequence_numbers) = 0;
+
virtual std::vector<std::unique_ptr<RtpPacketToSend>> GeneratePadding(
size_t target_size_bytes) = 0;
diff --git a/modules/rtp_rtcp/mocks/mock_rtp_rtcp.h b/modules/rtp_rtcp/mocks/mock_rtp_rtcp.h
index 332f243..6102e0a 100644
--- a/modules/rtp_rtcp/mocks/mock_rtp_rtcp.h
+++ b/modules/rtp_rtcp/mocks/mock_rtp_rtcp.h
@@ -89,6 +89,7 @@
MOCK_METHOD2(TrySendPacket,
bool(RtpPacketToSend* packet,
const PacedPacketInfo& pacing_info));
+ MOCK_METHOD1(OnPacketsAcknowledged, void(rtc::ArrayView<const uint16_t>));
MOCK_METHOD1(
GeneratePadding,
std::vector<std::unique_ptr<RtpPacketToSend>>(size_t target_size_bytes));
diff --git a/modules/rtp_rtcp/source/rtp_rtcp_impl.cc b/modules/rtp_rtcp/source/rtp_rtcp_impl.cc
index c7cbf50..f490439 100644
--- a/modules/rtp_rtcp/source/rtp_rtcp_impl.cc
+++ b/modules/rtp_rtcp/source/rtp_rtcp_impl.cc
@@ -342,6 +342,12 @@
return rtp_sender_->TrySendPacket(packet, pacing_info);
}
+void ModuleRtpRtcpImpl::OnPacketsAcknowledged(
+ rtc::ArrayView<const uint16_t> sequence_numbers) {
+ RTC_DCHECK(rtp_sender_);
+ rtp_sender_->OnPacketsAcknowledged(sequence_numbers);
+}
+
bool ModuleRtpRtcpImpl::SupportsPadding() const {
return rtp_sender_->SupportsPadding();
}
diff --git a/modules/rtp_rtcp/source/rtp_rtcp_impl.h b/modules/rtp_rtcp/source/rtp_rtcp_impl.h
index 03dd81c..01ef03a 100644
--- a/modules/rtp_rtcp/source/rtp_rtcp_impl.h
+++ b/modules/rtp_rtcp/source/rtp_rtcp_impl.h
@@ -133,6 +133,8 @@
bool TrySendPacket(RtpPacketToSend* packet,
const PacedPacketInfo& pacing_info) override;
+ void OnPacketsAcknowledged(
+ rtc::ArrayView<const uint16_t> sequence_numbers) override;
std::vector<std::unique_ptr<RtpPacketToSend>> GeneratePadding(
size_t target_size_bytes) override;