Chromium Code Reviews| Index: webrtc/media/webrtc/webrtcvideoengine2.cc |
| diff --git a/webrtc/media/webrtc/webrtcvideoengine2.cc b/webrtc/media/webrtc/webrtcvideoengine2.cc |
| index b968322ee3db9d31998bbf513cd9a209bad86ab3..55b13e20770884c692b1d9bfdba4b14510c9e956 100644 |
| --- a/webrtc/media/webrtc/webrtcvideoengine2.cc |
| +++ b/webrtc/media/webrtc/webrtcvideoengine2.cc |
| @@ -508,11 +508,13 @@ void WebRtcVideoEngine2::Init() { |
| WebRtcVideoChannel2* WebRtcVideoEngine2::CreateChannel( |
| webrtc::Call* call, |
| + const MediaConfig& config, |
| const VideoOptions& options) { |
| RTC_DCHECK(initialized_); |
| LOG(LS_INFO) << "CreateChannel. Options: " << options.ToString(); |
| - return new WebRtcVideoChannel2(call, options, video_codecs_, |
| - external_encoder_factory_, external_decoder_factory_); |
| + return new WebRtcVideoChannel2(call, config, options, video_codecs_, |
| + external_encoder_factory_, |
| + external_decoder_factory_); |
| } |
| const std::vector<VideoCodec>& WebRtcVideoEngine2::codecs() const { |
| @@ -601,19 +603,20 @@ std::vector<VideoCodec> WebRtcVideoEngine2::GetSupportedCodecs() const { |
| WebRtcVideoChannel2::WebRtcVideoChannel2( |
| webrtc::Call* call, |
| + const MediaConfig& config, |
| const VideoOptions& options, |
| const std::vector<VideoCodec>& recv_codecs, |
| WebRtcVideoEncoderFactory* external_encoder_factory, |
| WebRtcVideoDecoderFactory* external_decoder_factory) |
| - : call_(call), |
| + : VideoMediaChannel(config), |
| + call_(call), |
| unsignalled_ssrc_handler_(&default_unsignalled_ssrc_handler_), |
| + signal_cpu_adaptation_(config.enable_cpu_overuse_detection), |
| + disable_prerenderer_smoothing_(config.disable_prerenderer_smoothing), |
| external_encoder_factory_(external_encoder_factory), |
| external_decoder_factory_(external_decoder_factory) { |
| RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
| - SetDefaultOptions(); |
| options_.SetAll(options); |
| - if (options_.cpu_overuse_detection) |
| - signal_cpu_adaptation_ = *options_.cpu_overuse_detection; |
| rtcp_receiver_report_ssrc_ = kDefaultRtcpReceiverReportSsrc; |
| sending_ = false; |
| default_send_ssrc_ = 0; |
| @@ -621,13 +624,6 @@ WebRtcVideoChannel2::WebRtcVideoChannel2( |
| recv_codecs_ = FilterSupportedCodecs(MapCodecs(recv_codecs)); |
| } |
| -void WebRtcVideoChannel2::SetDefaultOptions() { |
| - options_.cpu_overuse_detection = rtc::Optional<bool>(true); |
| - options_.dscp = rtc::Optional<bool>(false); |
| - options_.suspend_below_min_bitrate = rtc::Optional<bool>(false); |
| - options_.screencast_min_bitrate_kbps = rtc::Optional<int>(0); |
| -} |
| - |
| WebRtcVideoChannel2::~WebRtcVideoChannel2() { |
| for (auto& kv : send_streams_) |
| delete kv.second; |
| @@ -756,6 +752,10 @@ bool WebRtcVideoChannel2::GetChangedSendParameters( |
| return true; |
| } |
| +rtc::DiffServCodePoint WebRtcVideoChannel2::PreferredDscp() const { |
| + return rtc::DSCP_AF41; |
| +} |
| + |
| bool WebRtcVideoChannel2::SetSendParameters(const VideoSendParameters& params) { |
| TRACE_EVENT0("webrtc", "WebRtcVideoChannel2::SetSendParameters"); |
| LOG(LS_INFO) << "SetSendParameters: " << params.ToString(); |
| @@ -800,18 +800,8 @@ bool WebRtcVideoChannel2::SetSendParameters(const VideoSendParameters& params) { |
| call_->SetBitrateConfig(bitrate_config_); |
| } |
| - if (changed_params.options) { |
| + if (changed_params.options) |
| options_.SetAll(*changed_params.options); |
| - { |
| - rtc::CritScope lock(&capturer_crit_); |
| - if (options_.cpu_overuse_detection) { |
| - signal_cpu_adaptation_ = *options_.cpu_overuse_detection; |
| - } |
| - } |
| - rtc::DiffServCodePoint dscp = |
| - options_.dscp.value_or(false) ? rtc::DSCP_AF41 : rtc::DSCP_DEFAULT; |
| - MediaChannel::SetDscp(dscp); |
| - } |
| { |
| rtc::CritScope stream_lock(&stream_crit_); |
| @@ -1137,7 +1127,7 @@ bool WebRtcVideoChannel2::AddRecvStream(const StreamParams& sp, |
| receive_streams_[ssrc] = new WebRtcVideoReceiveStream( |
| call_, sp, config, external_decoder_factory_, default_stream, |
| - recv_codecs_, options_.disable_prerenderer_smoothing.value_or(false)); |
| + recv_codecs_, disable_prerenderer_smoothing_); |
| return true; |
| } |
| @@ -1755,9 +1745,8 @@ void WebRtcVideoChannel2::WebRtcVideoSendStream::SetCodecAndOptions( |
| parameters_.config.rtp.nack.rtp_history_ms = |
| HasNack(codec_settings.codec) ? kNackHistoryMs : 0; |
| - RTC_CHECK(options.suspend_below_min_bitrate); |
| parameters_.config.suspend_below_min_bitrate = |
| - *options.suspend_below_min_bitrate; |
| + options.suspend_below_min_bitrate.value_or(false); |
| parameters_.codec_settings = |
| rtc::Optional<WebRtcVideoChannel2::VideoCodecSettings>(codec_settings); |
| @@ -1824,9 +1813,8 @@ WebRtcVideoChannel2::WebRtcVideoSendStream::CreateVideoEncoderConfig( |
| const VideoCodec& codec) const { |
| webrtc::VideoEncoderConfig encoder_config; |
| if (dimensions.is_screencast) { |
| - RTC_CHECK(parameters_.options.screencast_min_bitrate_kbps); |
| encoder_config.min_transmit_bitrate_bps = |
| - *parameters_.options.screencast_min_bitrate_kbps * 1000; |
| + 1000 * parameters_.options.screencast_min_bitrate_kbps.value_or(0); |
|
perkj_webrtc
2016/02/11 12:32:08
is this intentional? This looks like a change in
pbos-webrtc
2016/02/11 12:50:29
Looks fine, the default value was:
options_.scree
nisse-webrtc
2016/02/11 13:45:08
There are two changes here, the factor 1000 moved
|
| encoder_config.content_type = |
| webrtc::VideoEncoderConfig::ContentType::kScreen; |
| } else { |