Chromium Code Reviews| Index: webrtc/media/engine/webrtcvideoengine2.cc |
| diff --git a/webrtc/media/engine/webrtcvideoengine2.cc b/webrtc/media/engine/webrtcvideoengine2.cc |
| index 0dd8938dc3451758fb0441cb4df457baa6832abe..57cbdfe44a3706e0face4be89f54e414867e4074 100644 |
| --- a/webrtc/media/engine/webrtcvideoengine2.cc |
| +++ b/webrtc/media/engine/webrtcvideoengine2.cc |
| @@ -616,7 +616,9 @@ WebRtcVideoChannel2::WebRtcVideoChannel2( |
| external_encoder_factory_(external_encoder_factory), |
| external_decoder_factory_(external_decoder_factory) { |
| RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
| - options_.SetAll(options); |
| + |
| + send_params_.options = options; |
| + |
| rtcp_receiver_report_ssrc_ = kDefaultRtcpReceiverReportSsrc; |
| sending_ = false; |
| default_send_ssrc_ = 0; |
| @@ -736,9 +738,9 @@ bool WebRtcVideoChannel2::GetChangedSendParameters( |
| // Handle options. |
| // TODO(pbos): Require VideoSendParameters to contain a full set of options |
| // and check if params.options != options_ instead of applying a delta. |
| - VideoOptions new_options = options_; |
| + VideoOptions new_options = send_params_.options; |
| new_options.SetAll(params.options); |
| - if (!(new_options == options_)) { |
| + if (!(new_options == send_params_.options)) { |
| changed_params->options = rtc::Optional<VideoOptions>(new_options); |
| } |
| @@ -801,7 +803,7 @@ bool WebRtcVideoChannel2::SetSendParameters(const VideoSendParameters& params) { |
| } |
| if (changed_params.options) |
| - options_.SetAll(*changed_params.options); |
| + send_params_.options.SetAll(*changed_params.options); |
| { |
| rtc::CritScope stream_lock(&stream_crit_); |
| @@ -950,9 +952,7 @@ bool WebRtcVideoChannel2::SetVideoSend(uint32_t ssrc, bool enable, |
| return false; |
| } |
| if (enable && options) { |
| - VideoSendParameters new_params = send_params_; |
| - new_params.options.SetAll(*options); |
| - SetSendParameters(send_params_); |
| + SetOptions(ssrc, *options); |
| } |
| return true; |
| } |
| @@ -996,10 +996,10 @@ bool WebRtcVideoChannel2::AddSendStream(const StreamParams& sp) { |
| webrtc::VideoSendStream::Config config(this); |
| config.overuse_callback = this; |
| - WebRtcVideoSendStream* stream = new WebRtcVideoSendStream( |
| - call_, sp, config, external_encoder_factory_, options_, |
| - bitrate_config_.max_bitrate_bps, send_codec_, send_rtp_extensions_, |
| - send_params_); |
| + WebRtcVideoSendStream* stream = |
| + new WebRtcVideoSendStream(call_, sp, config, external_encoder_factory_, |
| + bitrate_config_.max_bitrate_bps, send_codec_, |
| + send_rtp_extensions_, send_params_); |
| uint32_t ssrc = sp.first_ssrc(); |
| RTC_DCHECK(ssrc != 0); |
| @@ -1268,11 +1268,12 @@ bool WebRtcVideoChannel2::SetCapturer(uint32_t ssrc, VideoCapturer* capturer) { |
| RTC_DCHECK(ssrc != 0); |
| { |
| rtc::CritScope stream_lock(&stream_crit_); |
| - if (send_streams_.find(ssrc) == send_streams_.end()) { |
| + auto kv = send_streams_.find(ssrc); |
|
pbos-webrtc
2016/02/17 12:09:47
auto& kv
|
| + if (kv == send_streams_.end()) { |
| LOG(LS_ERROR) << "No sending stream on ssrc " << ssrc; |
| return false; |
| } |
| - if (!send_streams_[ssrc]->SetCapturer(capturer)) { |
| + if (!kv->second->SetCapturer(capturer)) { |
| return false; |
| } |
| } |
| @@ -1366,20 +1367,27 @@ bool WebRtcVideoChannel2::MuteStream(uint32_t ssrc, bool mute) { |
| << (mute ? "mute" : "unmute"); |
| RTC_DCHECK(ssrc != 0); |
| rtc::CritScope stream_lock(&stream_crit_); |
| - if (send_streams_.find(ssrc) == send_streams_.end()) { |
| + auto kv = send_streams_.find(ssrc); |
|
pbos-webrtc
2016/02/17 12:09:47
auto& kv
nisse-webrtc
2016/02/17 12:27:49
Done. const auto& was needed to make the compiler
|
| + if (kv == send_streams_.end()) { |
| LOG(LS_ERROR) << "No sending stream on ssrc " << ssrc; |
| return false; |
| } |
| - send_streams_[ssrc]->MuteStream(mute); |
| + kv->second->MuteStream(mute); |
| return true; |
| } |
| // TODO(pbos): Remove SetOptions in favor of SetSendParameters. |
| -void WebRtcVideoChannel2::SetOptions(const VideoOptions& options) { |
| - VideoSendParameters new_params = send_params_; |
| - new_params.options.SetAll(options); |
| - SetSendParameters(send_params_); |
| +void WebRtcVideoChannel2::SetOptions(uint32_t ssrc, |
| + const VideoOptions& options) { |
| + LOG(LS_INFO) << "SetOptions: ssrc " << ssrc << ": " << options.ToString(); |
| + |
| + rtc::CritScope stream_lock(&stream_crit_); |
| + auto kv = send_streams_.find(ssrc); |
|
pbos-webrtc
2016/02/17 12:09:47
auto& kv
|
| + if (kv == send_streams_.end()) { |
| + return; |
| + } |
| + kv->second->SetOptions(options); |
| } |
| void WebRtcVideoChannel2::SetInterface(NetworkInterface* iface) { |
| @@ -1481,7 +1489,6 @@ WebRtcVideoChannel2::WebRtcVideoSendStream::WebRtcVideoSendStream( |
| const StreamParams& sp, |
| const webrtc::VideoSendStream::Config& config, |
| WebRtcVideoEncoderFactory* external_encoder_factory, |
| - const VideoOptions& options, |
| int max_bitrate_bps, |
| const rtc::Optional<VideoCodecSettings>& codec_settings, |
| const std::vector<webrtc::RtpExtension>& rtp_extensions, |
| @@ -1493,7 +1500,7 @@ WebRtcVideoChannel2::WebRtcVideoSendStream::WebRtcVideoSendStream( |
| call_(call), |
| external_encoder_factory_(external_encoder_factory), |
| stream_(NULL), |
| - parameters_(config, options, max_bitrate_bps, codec_settings), |
| + parameters_(config, send_params.options, max_bitrate_bps, codec_settings), |
| pending_encoder_reconfiguration_(false), |
| allocated_encoder_(NULL, webrtc::kVideoCodecUnknown, false), |
| capturer_(NULL), |