| Index: talk/media/webrtc/webrtcvideoengine2.cc
|
| diff --git a/talk/media/webrtc/webrtcvideoengine2.cc b/talk/media/webrtc/webrtcvideoengine2.cc
|
| index 101ed15bddd996d4e51d462d537f4d50ee613dd4..4f5436f7c6a7d7974f8dda9e053df63970690743 100644
|
| --- a/talk/media/webrtc/webrtcvideoengine2.cc
|
| +++ b/talk/media/webrtc/webrtcvideoengine2.cc
|
| @@ -166,6 +166,8 @@ void AddDefaultFeedbackParams(VideoCodec* codec) {
|
| codec->AddFeedbackParam(FeedbackParam(kRtcpFbParamNack, kParamValueEmpty));
|
| codec->AddFeedbackParam(FeedbackParam(kRtcpFbParamNack, kRtcpFbNackParamPli));
|
| codec->AddFeedbackParam(FeedbackParam(kRtcpFbParamRemb, kParamValueEmpty));
|
| + codec->AddFeedbackParam(
|
| + FeedbackParam(kRtcpFbParamTransportCc, kParamValueEmpty));
|
| }
|
|
|
| static VideoCodec MakeVideoCodecWithDefaultFeedbackParams(int payload_type,
|
| @@ -970,12 +972,15 @@ bool WebRtcVideoChannel2::SetSendCodecs(const std::vector<VideoCodec>& codecs) {
|
| RTC_DCHECK(kv.second != nullptr);
|
| kv.second->SetCodec(supported_codecs.front());
|
| }
|
| - LOG(LS_INFO) << "SetNackAndRemb on all the receive streams because the send "
|
| - "codec has changed.";
|
| + LOG(LS_INFO)
|
| + << "SetFeedbackOptions on all the receive streams because the send "
|
| + "codec has changed.";
|
| for (auto& kv : receive_streams_) {
|
| RTC_DCHECK(kv.second != nullptr);
|
| - kv.second->SetNackAndRemb(HasNack(supported_codecs.front().codec),
|
| - HasRemb(supported_codecs.front().codec));
|
| + kv.second->SetFeedbackParameters(
|
| + HasNack(supported_codecs.front().codec),
|
| + HasRemb(supported_codecs.front().codec),
|
| + HasTransportCc(supported_codecs.front().codec));
|
| }
|
|
|
| // TODO(holmer): Changing the codec parameters shouldn't necessarily mean that
|
| @@ -1225,6 +1230,8 @@ bool WebRtcVideoChannel2::AddRecvStream(const StreamParams& sp,
|
| config.sync_group = sp.sync_label;
|
|
|
| config.rtp.remb = send_codec_ ? HasRemb(send_codec_->codec) : false;
|
| + config.rtp.transport_cc =
|
| + send_codec_ ? HasTransportCc(send_codec_->codec) : false;
|
|
|
| receive_streams_[ssrc] = new WebRtcVideoReceiveStream(
|
| call_, sp, config, external_decoder_factory_, default_stream,
|
| @@ -2473,20 +2480,28 @@ void WebRtcVideoChannel2::WebRtcVideoReceiveStream::SetLocalSsrc(
|
| RecreateWebRtcStream();
|
| }
|
|
|
| -void WebRtcVideoChannel2::WebRtcVideoReceiveStream::SetNackAndRemb(
|
| - bool nack_enabled, bool remb_enabled) {
|
| +void WebRtcVideoChannel2::WebRtcVideoReceiveStream::SetFeedbackParameters(
|
| + bool nack_enabled,
|
| + bool remb_enabled,
|
| + bool transport_cc_enabled) {
|
| int nack_history_ms = nack_enabled ? kNackHistoryMs : 0;
|
| if (config_.rtp.nack.rtp_history_ms == nack_history_ms &&
|
| - config_.rtp.remb == remb_enabled) {
|
| - LOG(LS_INFO) << "Ignoring call to SetNackAndRemb because parameters are "
|
| - "unchanged; nack=" << nack_enabled
|
| - << ", remb=" << remb_enabled;
|
| + config_.rtp.remb == remb_enabled &&
|
| + config_.rtp.transport_cc == transport_cc_enabled) {
|
| + LOG(LS_INFO)
|
| + << "Ignoring call to SetFeedbackParameters because parameters are "
|
| + "unchanged; nack="
|
| + << nack_enabled << ", remb=" << remb_enabled
|
| + << ", transport_cc=" << transport_cc_enabled;
|
| return;
|
| }
|
| config_.rtp.remb = remb_enabled;
|
| config_.rtp.nack.rtp_history_ms = nack_history_ms;
|
| - LOG(LS_INFO) << "RecreateWebRtcStream (recv) because of SetNackAndRemb; nack="
|
| - << nack_enabled << ", remb=" << remb_enabled;
|
| + config_.rtp.transport_cc = transport_cc_enabled;
|
| + LOG(LS_INFO)
|
| + << "RecreateWebRtcStream (recv) because of SetFeedbackParameters; nack="
|
| + << nack_enabled << ", remb=" << remb_enabled
|
| + << ", transport_cc=" << transport_cc_enabled;
|
| RecreateWebRtcStream();
|
| }
|
|
|
|
|