Index: webrtc/media/engine/webrtcvideoengine2.cc |
diff --git a/webrtc/media/engine/webrtcvideoengine2.cc b/webrtc/media/engine/webrtcvideoengine2.cc |
index e34056d905257371b6f9c0db015f38a3bdcf3a85..83f81f0f427e2135f2ffce6a51c84aa575ccd79e 100644 |
--- a/webrtc/media/engine/webrtcvideoengine2.cc |
+++ b/webrtc/media/engine/webrtcvideoengine2.cc |
@@ -802,16 +802,18 @@ bool WebRtcVideoChannel2::SetSendParameters(const VideoSendParameters& params) { |
for (auto& kv : send_streams_) { |
kv.second->SetSendParameters(changed_params); |
} |
- if (changed_params.codec) { |
- // Update receive feedback parameters from new codec. |
+ if (changed_params.codec || changed_params.rtcp_mode) { |
+ // Update receive feedback parameters from new codec or RTCP mode. |
LOG(LS_INFO) |
<< "SetFeedbackOptions on all the receive streams because the send " |
- "codec has changed."; |
+ "codec or RTCP mode has changed."; |
for (auto& kv : receive_streams_) { |
RTC_DCHECK(kv.second != nullptr); |
- kv.second->SetFeedbackParameters(HasNack(send_codec_->codec), |
- HasRemb(send_codec_->codec), |
- HasTransportCc(send_codec_->codec)); |
+ kv.second->SetFeedbackParameters( |
+ HasNack(send_codec_->codec), HasRemb(send_codec_->codec), |
+ HasTransportCc(send_codec_->codec), |
+ params.rtcp.reduced_size ? webrtc::RtcpMode::kReducedSize |
+ : webrtc::RtcpMode::kCompound); |
} |
} |
} |
@@ -882,13 +884,6 @@ bool WebRtcVideoChannel2::GetChangedRecvParameters( |
rtc::Optional<std::vector<webrtc::RtpExtension>>(filtered_extensions); |
} |
- // Handle RTCP mode. |
- if (params.rtcp.reduced_size != recv_params_.rtcp.reduced_size) { |
- changed_params->rtcp_mode = rtc::Optional<webrtc::RtcpMode>( |
- params.rtcp.reduced_size ? webrtc::RtcpMode::kReducedSize |
- : webrtc::RtcpMode::kCompound); |
- } |
- |
return true; |
} |
@@ -1159,7 +1154,12 @@ void WebRtcVideoChannel2::ConfigureReceiverRtp( |
config->rtp.local_ssrc = rtcp_receiver_report_ssrc_; |
config->rtp.extensions = recv_rtp_extensions_; |
- config->rtp.rtcp_mode = recv_params_.rtcp.reduced_size |
+ // Whether or not the receive stream sends reduced size RTCP is determined |
+ // by the send params. |
+ // TODO(deadbeef): Once we change "send_params" to "sender_params" and |
+ // "recv_params" to "receiver_params", we should get this out of |
+ // receiver_params_. |
+ config->rtp.rtcp_mode = send_params_.rtcp.reduced_size |
? webrtc::RtcpMode::kReducedSize |
: webrtc::RtcpMode::kCompound; |
@@ -2294,11 +2294,13 @@ void WebRtcVideoChannel2::WebRtcVideoReceiveStream::SetLocalSsrc( |
void WebRtcVideoChannel2::WebRtcVideoReceiveStream::SetFeedbackParameters( |
bool nack_enabled, |
bool remb_enabled, |
- bool transport_cc_enabled) { |
+ bool transport_cc_enabled, |
+ webrtc::RtcpMode rtcp_mode) { |
int nack_history_ms = nack_enabled ? kNackHistoryMs : 0; |
if (config_.rtp.nack.rtp_history_ms == nack_history_ms && |
config_.rtp.remb == remb_enabled && |
- config_.rtp.transport_cc == transport_cc_enabled) { |
+ config_.rtp.transport_cc == transport_cc_enabled && |
+ config_.rtp.rtcp_mode == rtcp_mode) { |
LOG(LS_INFO) |
<< "Ignoring call to SetFeedbackParameters because parameters are " |
"unchanged; nack=" |
@@ -2309,6 +2311,7 @@ void WebRtcVideoChannel2::WebRtcVideoReceiveStream::SetFeedbackParameters( |
config_.rtp.remb = remb_enabled; |
config_.rtp.nack.rtp_history_ms = nack_history_ms; |
config_.rtp.transport_cc = transport_cc_enabled; |
+ config_.rtp.rtcp_mode = rtcp_mode; |
LOG(LS_INFO) |
<< "RecreateWebRtcStream (recv) because of SetFeedbackParameters; nack=" |
<< nack_enabled << ", remb=" << remb_enabled |
@@ -2328,10 +2331,6 @@ void WebRtcVideoChannel2::WebRtcVideoReceiveStream::SetRecvParameters( |
config_.rtp.extensions = *params.rtp_header_extensions; |
needs_recreation = true; |
} |
- if (params.rtcp_mode) { |
- config_.rtp.rtcp_mode = *params.rtcp_mode; |
- needs_recreation = true; |
- } |
if (needs_recreation) { |
LOG(LS_INFO) << "RecreateWebRtcStream (recv) because of SetRecvParameters"; |
RecreateWebRtcStream(); |