Do not register receiver for REMB until it starts receiving

which avoids associating a REMB sender with a inactive m-line.

BUG=webrtc:15759,webrtc:11013

Change-Id: I391614856323637522720b5022ca176077f14ec7
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/335281
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Philipp Hancke <phancke@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#41641}
This commit is contained in:
Philipp Hancke 2024-01-19 09:53:12 +01:00 committed by WebRTC LUCI CQ
parent c4dd03dfcb
commit 3cbe63eac1

View File

@ -296,9 +296,12 @@ RtpVideoStreamReceiver2::RtpVideoStreamReceiver2(
frames_decryptable_(false),
absolute_capture_time_interpolator_(clock) {
packet_sequence_checker_.Detach();
constexpr bool remb_candidate = true;
if (packet_router_)
packet_router_->AddReceiveRtpModule(rtp_rtcp_.get(), remb_candidate);
if (packet_router_) {
// Do not register as REMB candidate, this is only done when starting to
// receive.
packet_router_->AddReceiveRtpModule(rtp_rtcp_.get(),
/*remb_candidate=*/false);
}
RTC_DCHECK(config_.rtp.rtcp_mode != RtcpMode::kOff)
<< "A stream should not be configured with RTCP disabled. This value is "
@ -1251,11 +1254,23 @@ void RtpVideoStreamReceiver2::SignalNetworkState(NetworkState state) {
void RtpVideoStreamReceiver2::StartReceive() {
RTC_DCHECK_RUN_ON(&packet_sequence_checker_);
if (!receiving_ && packet_router_) {
// Change REMB candidate egibility.
packet_router_->RemoveReceiveRtpModule(rtp_rtcp_.get());
packet_router_->AddReceiveRtpModule(rtp_rtcp_.get(),
/*remb_candidate=*/true);
}
receiving_ = true;
}
void RtpVideoStreamReceiver2::StopReceive() {
RTC_DCHECK_RUN_ON(&packet_sequence_checker_);
if (receiving_ && packet_router_) {
// Change REMB candidate egibility.
packet_router_->RemoveReceiveRtpModule(rtp_rtcp_.get());
packet_router_->AddReceiveRtpModule(rtp_rtcp_.get(),
/*remb_candidate=*/false);
}
receiving_ = false;
}