| Index: webrtc/video/video_receive_stream.cc
 | 
| diff --git a/webrtc/video/video_receive_stream.cc b/webrtc/video/video_receive_stream.cc
 | 
| index 246a0d4a67fc7dc69ac5f4f3d45cc8827391c3ea..e48b5f3006092845dec9cb242fa93176e4deca41 100644
 | 
| --- a/webrtc/video/video_receive_stream.cc
 | 
| +++ b/webrtc/video/video_receive_stream.cc
 | 
| @@ -23,6 +23,7 @@
 | 
|  #include "webrtc/system_wrappers/include/clock.h"
 | 
|  #include "webrtc/video/call_stats.h"
 | 
|  #include "webrtc/video/receive_statistics_proxy.h"
 | 
| +#include "webrtc/video/vie_remb.h"
 | 
|  #include "webrtc/video_receive_stream.h"
 | 
|  
 | 
|  namespace webrtc {
 | 
| @@ -147,7 +148,8 @@ VideoReceiveStream::VideoReceiveStream(
 | 
|      const VideoReceiveStream::Config& config,
 | 
|      webrtc::VoiceEngine* voice_engine,
 | 
|      ProcessThread* process_thread,
 | 
| -    CallStats* call_stats)
 | 
| +    CallStats* call_stats,
 | 
| +    VieRemb* remb)
 | 
|      : transport_adapter_(config.rtcp_send_transport),
 | 
|        encoded_frame_proxy_(config.pre_decode_callback),
 | 
|        config_(config),
 | 
| @@ -155,6 +157,7 @@ VideoReceiveStream::VideoReceiveStream(
 | 
|        clock_(Clock::GetRealTimeClock()),
 | 
|        congestion_controller_(congestion_controller),
 | 
|        call_stats_(call_stats),
 | 
| +      remb_(remb),
 | 
|        vcm_(VideoCodingModule::Create(clock_, nullptr, nullptr)),
 | 
|        incoming_video_stream_(
 | 
|            0,
 | 
| @@ -178,6 +181,10 @@ VideoReceiveStream::VideoReceiveStream(
 | 
|        rtp_rtcp_(vie_channel_.rtp_rtcp()) {
 | 
|    LOG(LS_INFO) << "VideoReceiveStream: " << config_.ToString();
 | 
|  
 | 
| +  RTC_DCHECK(process_thread_);
 | 
| +  RTC_DCHECK(congestion_controller_);
 | 
| +  RTC_DCHECK(call_stats_);
 | 
| +  RTC_DCHECK(remb_);
 | 
|    RTC_CHECK(vie_channel_.Init() == 0);
 | 
|  
 | 
|    // Register the channel to receive stats updates.
 | 
| @@ -210,8 +217,10 @@ VideoReceiveStream::VideoReceiveStream(
 | 
|    vie_receiver_->SetUseRtxPayloadMappingOnRestore(
 | 
|        config_.rtp.use_rtx_payload_mapping_on_restore);
 | 
|  
 | 
| -  congestion_controller_->SetChannelRembStatus(false, config_.rtp.remb,
 | 
| -                                               rtp_rtcp_);
 | 
| +  if (config_.rtp.remb) {
 | 
| +    rtp_rtcp_->SetREMBStatus(true);
 | 
| +    remb_->AddReceiveChannel(rtp_rtcp_);
 | 
| +  }
 | 
|  
 | 
|    for (size_t i = 0; i < config_.rtp.extensions.size(); ++i) {
 | 
|      const std::string& extension = config_.rtp.extensions[i].name;
 | 
| @@ -304,7 +313,8 @@ VideoReceiveStream::~VideoReceiveStream() {
 | 
|    vcm_->RegisterPreDecodeImageCallback(nullptr);
 | 
|  
 | 
|    call_stats_->DeregisterStatsObserver(vie_channel_.GetStatsObserver());
 | 
| -  congestion_controller_->SetChannelRembStatus(false, false, rtp_rtcp_);
 | 
| +  rtp_rtcp_->SetREMBStatus(false);
 | 
| +  remb_->RemoveReceiveChannel(rtp_rtcp_);
 | 
|  
 | 
|    congestion_controller_->GetRemoteBitrateEstimator(UseSendSideBwe(config_))
 | 
|        ->RemoveStream(vie_receiver_->GetRemoteSsrc());
 | 
| 
 |