| Index: webrtc/media/engine/webrtcvideoengine2.cc
 | 
| diff --git a/webrtc/media/engine/webrtcvideoengine2.cc b/webrtc/media/engine/webrtcvideoengine2.cc
 | 
| index 129eb3288a6a27b03c5806eec76a4f4680d9319a..b0d0fdde138a7bb3261d534d420d6e19e3ae15c3 100644
 | 
| --- a/webrtc/media/engine/webrtcvideoengine2.cc
 | 
| +++ b/webrtc/media/engine/webrtcvideoengine2.cc
 | 
| @@ -1183,15 +1183,11 @@ bool WebRtcVideoChannel2::AddRecvStream(const StreamParams& sp,
 | 
|      receive_ssrcs_.insert(used_ssrc);
 | 
|  
 | 
|    webrtc::VideoReceiveStream::Config config(this);
 | 
| -  webrtc::FlexfecConfig flexfec_config;
 | 
| +  webrtc::FlexfecReceiveStream::Config flexfec_config(this);
 | 
|    ConfigureReceiverRtp(&config, &flexfec_config, sp);
 | 
|  
 | 
|    // Set up A/V sync group based on sync label.
 | 
|    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;
 | 
|    config.disable_prerenderer_smoothing =
 | 
|        video_config_.disable_prerenderer_smoothing;
 | 
|  
 | 
| @@ -1204,7 +1200,7 @@ bool WebRtcVideoChannel2::AddRecvStream(const StreamParams& sp,
 | 
|  
 | 
|  void WebRtcVideoChannel2::ConfigureReceiverRtp(
 | 
|      webrtc::VideoReceiveStream::Config* config,
 | 
| -    webrtc::FlexfecConfig* flexfec_config,
 | 
| +    webrtc::FlexfecReceiveStream::Config* flexfec_config,
 | 
|      const StreamParams& sp) const {
 | 
|    uint32_t ssrc = sp.first_ssrc();
 | 
|  
 | 
| @@ -1233,6 +1229,10 @@ void WebRtcVideoChannel2::ConfigureReceiverRtp(
 | 
|      }
 | 
|    }
 | 
|  
 | 
| +  config->rtp.remb = send_codec_ ? HasRemb(send_codec_->codec) : false;
 | 
| +  config->rtp.transport_cc =
 | 
| +      send_codec_ ? HasTransportCc(send_codec_->codec) : false;
 | 
| +
 | 
|    for (size_t i = 0; i < recv_codecs_.size(); ++i) {
 | 
|      uint32_t rtx_ssrc;
 | 
|      if (recv_codecs_[i].rtx_payload_type != -1 &&
 | 
| @@ -1246,10 +1246,12 @@ void WebRtcVideoChannel2::ConfigureReceiverRtp(
 | 
|  
 | 
|    // TODO(brandtr): This code needs to be generalized when we add support for
 | 
|    // multistream protection.
 | 
| -  uint32_t flexfec_ssrc;
 | 
| -  if (sp.GetFecFrSsrc(ssrc, &flexfec_ssrc)) {
 | 
| -    flexfec_config->flexfec_ssrc = flexfec_ssrc;
 | 
| +  if (sp.GetFecFrSsrc(ssrc, &flexfec_config->remote_ssrc)) {
 | 
|      flexfec_config->protected_media_ssrcs = {ssrc};
 | 
| +    flexfec_config->local_ssrc = config->rtp.local_ssrc;
 | 
| +    flexfec_config->rtcp_mode = config->rtp.rtcp_mode;
 | 
| +    flexfec_config->transport_cc = config->rtp.transport_cc;
 | 
| +    flexfec_config->rtp_header_extensions = config->rtp.extensions;
 | 
|    }
 | 
|  }
 | 
|  
 | 
| @@ -2148,7 +2150,7 @@ WebRtcVideoChannel2::WebRtcVideoReceiveStream::WebRtcVideoReceiveStream(
 | 
|      WebRtcVideoDecoderFactory* external_decoder_factory,
 | 
|      bool default_stream,
 | 
|      const std::vector<VideoCodecSettings>& recv_codecs,
 | 
| -    const webrtc::FlexfecConfig& flexfec_config)
 | 
| +    const webrtc::FlexfecReceiveStream::Config& flexfec_config)
 | 
|      : call_(call),
 | 
|        stream_params_(sp),
 | 
|        stream_(NULL),
 | 
| @@ -2257,7 +2259,7 @@ void WebRtcVideoChannel2::WebRtcVideoReceiveStream::ConfigureCodecs(
 | 
|  
 | 
|    // TODO(pbos): Reconfigure RTX based on incoming recv_codecs.
 | 
|    config_.rtp.ulpfec = recv_codecs.front().ulpfec;
 | 
| -  flexfec_config_.flexfec_payload_type =
 | 
| +  flexfec_config_.payload_type =
 | 
|        recv_codecs.front().flexfec_payload_type;
 | 
|  
 | 
|    config_.rtp.nack.rtp_history_ms =
 | 
| @@ -2341,16 +2343,7 @@ void WebRtcVideoChannel2::WebRtcVideoReceiveStream::RecreateWebRtcStream() {
 | 
|    stream_ = call_->CreateVideoReceiveStream(config_.Copy());
 | 
|    stream_->Start();
 | 
|    if (IsFlexfecFieldTrialEnabled() && flexfec_config_.IsCompleteAndEnabled()) {
 | 
| -    webrtc::FlexfecReceiveStream::Config config;
 | 
| -    // Payload types and SSRCs come from the FlexFEC specific part of the SDP.
 | 
| -    config.payload_type = flexfec_config_.flexfec_payload_type;
 | 
| -    config.remote_ssrc = flexfec_config_.flexfec_ssrc;
 | 
| -    config.protected_media_ssrcs = flexfec_config_.protected_media_ssrcs;
 | 
| -    // RTCP messages and RTP header extensions apply to the entire track
 | 
| -    // in the SDP.
 | 
| -    config.transport_cc = config_.rtp.transport_cc;
 | 
| -    config.rtp_header_extensions = config_.rtp.extensions;
 | 
| -    flexfec_stream_ = call_->CreateFlexfecReceiveStream(config);
 | 
| +    flexfec_stream_ = call_->CreateFlexfecReceiveStream(flexfec_config_);
 | 
|      flexfec_stream_->Start();
 | 
|    }
 | 
|  }
 | 
| 
 |