| Index: webrtc/media/engine/webrtcvideoengine2.cc
|
| diff --git a/webrtc/media/engine/webrtcvideoengine2.cc b/webrtc/media/engine/webrtcvideoengine2.cc
|
| index f09b2541d95d81c8e5ce566b33a6f6c0bf36e69c..cd2b12890d1fbf5ade6670b3e83fd3c5b4a04800 100644
|
| --- a/webrtc/media/engine/webrtcvideoengine2.cc
|
| +++ b/webrtc/media/engine/webrtcvideoengine2.cc
|
| @@ -1184,7 +1184,7 @@ 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);
|
|
|
| config.disable_prerenderer_smoothing =
|
| @@ -1200,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,10 +1233,12 @@ void WebRtcVideoChannel2::ConfigureReceiverRtp(
|
| send_codec_ ? HasTransportCc(send_codec_->codec) : false;
|
|
|
| // TODO(brandtr): Generalize 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;
|
| }
|
|
|
| for (size_t i = 0; i < recv_codecs_.size(); ++i) {
|
| @@ -2160,7 +2162,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),
|
| @@ -2269,8 +2271,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 =
|
| - recv_codecs.front().flexfec_payload_type;
|
| + flexfec_config_.payload_type = recv_codecs.front().flexfec_payload_type;
|
|
|
| config_.rtp.nack.rtp_history_ms =
|
| HasNack(recv_codecs.begin()->codec) ? kNackHistoryMs : 0;
|
| @@ -2353,16 +2354,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();
|
| }
|
| }
|
|
|