Index: webrtc/media/webrtc/webrtcvideoengine2.cc |
diff --git a/webrtc/media/webrtc/webrtcvideoengine2.cc b/webrtc/media/webrtc/webrtcvideoengine2.cc |
index 265aa12108fb8a48df1605228ad8f09da0137eb5..a4348989a44017f4ef9032c3db5be34114a2769b 100644 |
--- a/webrtc/media/webrtc/webrtcvideoengine2.cc |
+++ b/webrtc/media/webrtc/webrtcvideoengine2.cc |
@@ -52,6 +52,9 @@ |
#include "webrtc/video_decoder.h" |
#include "webrtc/video_encoder.h" |
+// TODO(nisse): Improper include? Move declaration of MediaConfig elsewhere? |
+#include "talk/app/webrtc/mediacontroller.h" |
+ |
namespace cricket { |
namespace { |
@@ -526,10 +529,11 @@ void WebRtcVideoEngine2::Init() { |
WebRtcVideoChannel2* WebRtcVideoEngine2::CreateChannel( |
webrtc::Call* call, |
+ const webrtc::MediaConfig& config, |
const VideoOptions& options) { |
RTC_DCHECK(initialized_); |
LOG(LS_INFO) << "CreateChannel. Options: " << options.ToString(); |
- return new WebRtcVideoChannel2(call, options, video_codecs_, |
+ return new WebRtcVideoChannel2(call, config, options, video_codecs_, |
external_encoder_factory_, external_decoder_factory_); |
} |
@@ -619,19 +623,19 @@ std::vector<VideoCodec> WebRtcVideoEngine2::GetSupportedCodecs() const { |
WebRtcVideoChannel2::WebRtcVideoChannel2( |
webrtc::Call* call, |
+ const webrtc::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_), |
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; |
+ signal_cpu_adaptation_ = config.cpu_overuse_detection; |
+ disable_prerenderer_smoothing_ = config.disable_prerenderer_smoothing; |
rtcp_receiver_report_ssrc_ = kDefaultRtcpReceiverReportSsrc; |
sending_ = false; |
default_send_ssrc_ = 0; |
@@ -639,13 +643,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; |
@@ -774,6 +771,10 @@ bool WebRtcVideoChannel2::GetChangedSendParameters( |
return true; |
} |
+rtc::DiffServCodePoint WebRtcVideoChannel2::MediaTypeDscpValue() const { |
+ return rtc::DSCP_AF41; |
+} |
+ |
bool WebRtcVideoChannel2::SetSendParameters(const VideoSendParameters& params) { |
TRACE_EVENT0("webrtc", "WebRtcVideoChannel2::SetSendParameters"); |
LOG(LS_INFO) << "SetSendParameters: " << params.ToString(); |
@@ -818,18 +819,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_); |
@@ -1155,7 +1146,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; |
} |
@@ -1791,9 +1782,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); |
@@ -1859,9 +1849,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 { |