Index: webrtc/media/engine/webrtcvideoengine2.cc |
diff --git a/webrtc/media/engine/webrtcvideoengine2.cc b/webrtc/media/engine/webrtcvideoengine2.cc |
index f747da997b84ccc13b3122bbbd69f560680b5bde..509c8a69abb287f0afb6d7c7144e993a24efa9e0 100644 |
--- a/webrtc/media/engine/webrtcvideoengine2.cc |
+++ b/webrtc/media/engine/webrtcvideoengine2.cc |
@@ -509,11 +509,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 { |
@@ -602,19 +604,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; |
@@ -622,13 +625,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; |
@@ -757,6 +753,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(); |
@@ -801,18 +801,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_); |
@@ -1138,7 +1128,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; |
} |
@@ -1767,9 +1757,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); |
@@ -1835,9 +1824,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); |
encoder_config.content_type = |
webrtc::VideoEncoderConfig::ContentType::kScreen; |
} else { |