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}
This commit is contained in:
@ -583,7 +583,7 @@ void RtpVideoSender::DeliverRtcp(const uint8_t* packet, size_t length) {
|
||||
|
||||
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 @@ void RtpVideoSender::ConfigureSsrcs() {
|
||||
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 @@ void RtpVideoSender::OnPacketFeedbackVector(
|
||||
|
||||
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 @@ void RtpVideoSender::OnPacketFeedbackVector(
|
||||
|
||||
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;
|
||||
|
||||
@ -203,10 +203,10 @@ class RtpVideoSender : public RtpVideoSenderInterface,
|
||||
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);
|
||||
};
|
||||
|
||||
@ -276,6 +276,9 @@ class RtpRtcp : public Module, public RtcpFeedbackSenderInterface {
|
||||
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;
|
||||
|
||||
|
||||
@ -89,6 +89,7 @@ class MockRtpRtcp : public RtpRtcp {
|
||||
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));
|
||||
|
||||
@ -342,6 +342,12 @@ bool ModuleRtpRtcpImpl::TrySendPacket(RtpPacketToSend* packet,
|
||||
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();
|
||||
}
|
||||
|
||||
@ -133,6 +133,8 @@ class ModuleRtpRtcpImpl : public RtpRtcp, public RTCPReceiver::ModuleRtpRtcp {
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user