From 69dd14279719ad52c99ef04d1e6572b76d8c092b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20Spr=C3=A5ng?= Date: Thu, 12 Aug 2021 16:15:00 +0200 Subject: [PATCH] Register audio send stream in packet router on Start(). MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently, the RtpRtcp module of AudioSendStream is (de)registered in the packet router on calls to (Register|Reset)SenderCongestionControlObjects. This CL changes that to happen on Start/Stop instead, which allows us to safely call (Get|Set)RtpState on suspend/resume without the need for extra locking in the rtp module. See also https://webrtc-review.googlesource.com/c/src/+/228430 Bug: webrtc:11340 Change-Id: I54243a9ace8a7659924269418468b49b967b9465 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/228433 Reviewed-by: Per Åhgren Commit-Queue: Erik Språng Cr-Commit-Position: refs/heads/master@{#34738} --- audio/channel_send.cc | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/audio/channel_send.cc b/audio/channel_send.cc index ee6f0c54cd..37a14b711a 100644 --- a/audio/channel_send.cc +++ b/audio/channel_send.cc @@ -537,9 +537,12 @@ void ChannelSend::StartSend() { RTC_DCHECK(!sending_); sending_ = true; + RTC_DCHECK(packet_router_); + packet_router_->AddSendRtpModule(rtp_rtcp_.get(), /*remb_candidate=*/false); rtp_rtcp_->SetSendingMediaStatus(true); int ret = rtp_rtcp_->SetSendingStatus(true); RTC_DCHECK_EQ(0, ret); + // It is now OK to start processing on the encoder task queue. encoder_queue_.PostTask([this] { RTC_DCHECK_RUN_ON(&encoder_queue_); @@ -568,6 +571,9 @@ void ChannelSend::StopSend() { RTC_DLOG(LS_ERROR) << "StartSend() RTP/RTCP failed to stop sending"; } rtp_rtcp_->SetSendingMediaStatus(false); + + RTC_DCHECK(packet_router_); + packet_router_->RemoveSendRtpModule(rtp_rtcp_.get()); } void ChannelSend::SetEncoder(int payload_type, @@ -723,8 +729,6 @@ void ChannelSend::RegisterSenderCongestionControlObjects( rtcp_observer_->SetBandwidthObserver(bandwidth_observer); rtp_packet_pacer_proxy_->SetPacketPacer(rtp_packet_pacer); rtp_rtcp_->SetStorePacketsStatus(true, 600); - constexpr bool remb_candidate = false; - packet_router->AddSendRtpModule(rtp_rtcp_.get(), remb_candidate); packet_router_ = packet_router; } @@ -733,7 +737,6 @@ void ChannelSend::ResetSenderCongestionControlObjects() { RTC_DCHECK(packet_router_); rtp_rtcp_->SetStorePacketsStatus(false, 600); rtcp_observer_->SetBandwidthObserver(nullptr); - packet_router_->RemoveSendRtpModule(rtp_rtcp_.get()); packet_router_ = nullptr; rtp_packet_pacer_proxy_->SetPacketPacer(nullptr); }