Index: talk/media/webrtc/webrtcvideoengine2.cc |
diff --git a/talk/media/webrtc/webrtcvideoengine2.cc b/talk/media/webrtc/webrtcvideoengine2.cc |
index 05cd6bbcf1a582380d1c35b5aeb3dbdfb98f2b31..a4d680ef564a8b0ad12889e4bba84ed1956a31ad 100644 |
--- a/talk/media/webrtc/webrtcvideoengine2.cc |
+++ b/talk/media/webrtc/webrtcvideoengine2.cc |
@@ -889,20 +889,30 @@ bool WebRtcVideoChannel2::ReceiveCodecsHaveChanged( |
return false; |
} |
-bool WebRtcVideoChannel2::SetSendParameters(const VideoSendParameters& params) { |
+bool WebRtcVideoChannel2::SetSendParameters( |
+ const VideoSendParameters& send_params) { |
// TODO(pbos): Refactor this to only recreate the send streams once |
// instead of 4 times. |
- return (SetSendCodecs(params.codecs) && |
- SetSendRtpHeaderExtensions(params.extensions) && |
- SetMaxSendBandwidth(params.max_bandwidth_bps) && |
- SetOptions(params.options)); |
+ if (!SetSendCodecs(send_params.codecs) || |
+ !SetSendRtpHeaderExtensions(send_params.extensions) || |
+ !SetMaxSendBandwidth(send_params.max_bandwidth_bps) || |
+ !SetOptions(send_params.options)) { |
+ return false; |
+ } |
+ send_params_ = send_params; |
+ return true; |
} |
-bool WebRtcVideoChannel2::SetRecvParameters(const VideoRecvParameters& params) { |
+bool WebRtcVideoChannel2::SetRecvParameters( |
+ const VideoRecvParameters& recv_params) { |
// TODO(pbos): Refactor this to only recreate the recv streams once |
// instead of twice. |
- return (SetRecvCodecs(params.codecs) && |
- SetRecvRtpHeaderExtensions(params.extensions)); |
+ if (!SetRecvCodecs(recv_params.codecs) || |
+ !SetRecvRtpHeaderExtensions(recv_params.extensions)) { |
+ return false; |
+ } |
+ recv_params_ = recv_params; |
+ return true; |
} |
std::string WebRtcVideoChannel2::CodecSettingsVectorToString( |
@@ -1111,14 +1121,10 @@ bool WebRtcVideoChannel2::AddSendStream(const StreamParams& sp) { |
for (uint32 used_ssrc : sp.ssrcs) |
send_ssrcs_.insert(used_ssrc); |
- WebRtcVideoSendStream* stream = |
- new WebRtcVideoSendStream(call_.get(), |
- external_encoder_factory_, |
- options_, |
- bitrate_config_.max_bitrate_bps, |
- send_codec_, |
- sp, |
- send_rtp_extensions_); |
+ WebRtcVideoSendStream* stream = new WebRtcVideoSendStream( |
+ call_.get(), external_encoder_factory_, options_, |
+ bitrate_config_.max_bitrate_bps, send_codec_, sp, send_rtp_extensions_, |
+ send_params_); |
uint32 ssrc = sp.first_ssrc(); |
DCHECK(ssrc != 0); |
@@ -1249,6 +1255,9 @@ 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 |
+ ? webrtc::newapi::kRtcpReducedSize |
+ : webrtc::newapi::kRtcpCompound; |
// TODO(pbos): This protection is against setting the same local ssrc as |
// remote which is not permitted by the lower-level API. RTCP requires a |
@@ -1731,7 +1740,10 @@ WebRtcVideoChannel2::WebRtcVideoSendStream::WebRtcVideoSendStream( |
int max_bitrate_bps, |
const Settable<VideoCodecSettings>& codec_settings, |
const StreamParams& sp, |
- const std::vector<webrtc::RtpExtension>& rtp_extensions) |
+ const std::vector<webrtc::RtpExtension>& rtp_extensions, |
+ // TODO(pbos): Don't duplicate information between send_params, |
+ // rtp_extensions, options, etc. |
+ const VideoSendParameters& send_params) |
: ssrcs_(sp.ssrcs), |
ssrc_groups_(sp.ssrc_groups), |
call_(call), |
@@ -1755,6 +1767,9 @@ WebRtcVideoChannel2::WebRtcVideoSendStream::WebRtcVideoSendStream( |
¶meters_.config.rtp.rtx.ssrcs); |
parameters_.config.rtp.c_name = sp.cname; |
parameters_.config.rtp.extensions = rtp_extensions; |
+ // TODO(pbos): Add this to send stream when we support it. |
+ // parameters_.config.rtp.rtcp_mode = send_params.rtcp.reduced_size ? |
+ // webrtc::newapi::kRtcpReducedSize : webrtc::newapi::kRtcpCompound; |
VideoCodecSettings params; |
if (codec_settings.Get(¶ms)) { |