| Index: webrtc/pc/channelmanager.cc
|
| diff --git a/webrtc/pc/channelmanager.cc b/webrtc/pc/channelmanager.cc
|
| index f59a3df9c72f7059e0c1a66aed639a66e2dbe518..86b6d31f55307235fe0b6be5e2b8420dd8130691 100644
|
| --- a/webrtc/pc/channelmanager.cc
|
| +++ b/webrtc/pc/channelmanager.cc
|
| @@ -66,6 +66,7 @@ void ChannelManager::Construct(MediaEngineInterface* me,
|
| audio_output_volume_ = kNotSetOutputVolume;
|
| capturing_ = false;
|
| enable_rtx_ = false;
|
| + crypto_options_ = rtc::CryptoOptions::NoGcm();
|
| }
|
|
|
| ChannelManager::~ChannelManager() {
|
| @@ -99,6 +100,22 @@ bool ChannelManager::SetVideoRtxEnabled(bool enable) {
|
| }
|
| }
|
|
|
| +bool ChannelManager::SetCryptoOptions(
|
| + const rtc::CryptoOptions& crypto_options) {
|
| + return worker_thread_->Invoke<bool>(Bind(
|
| + &ChannelManager::SetCryptoOptions_w, this, crypto_options));
|
| +}
|
| +
|
| +bool ChannelManager::SetCryptoOptions_w(
|
| + const rtc::CryptoOptions& crypto_options) {
|
| + if (!video_channels_.empty() || !voice_channels_.empty() ||
|
| + !data_channels_.empty()) {
|
| + LOG(LS_WARNING) << "Not changing crypto options in existing channels.";
|
| + }
|
| + crypto_options_ = crypto_options;
|
| + return true;
|
| +}
|
| +
|
| void ChannelManager::GetSupportedAudioCodecs(
|
| std::vector<AudioCodec>* codecs) const {
|
| codecs->clear();
|
| @@ -230,6 +247,7 @@ VoiceChannel* ChannelManager::CreateVoiceChannel_w(
|
| VoiceChannel* voice_channel =
|
| new VoiceChannel(worker_thread_, media_engine_.get(), media_channel,
|
| transport_controller, content_name, rtcp);
|
| + voice_channel->SetCryptoOptions(crypto_options_);
|
| if (!voice_channel->Init()) {
|
| delete voice_channel;
|
| return nullptr;
|
| @@ -288,6 +306,7 @@ VideoChannel* ChannelManager::CreateVideoChannel_w(
|
|
|
| VideoChannel* video_channel = new VideoChannel(
|
| worker_thread_, media_channel, transport_controller, content_name, rtcp);
|
| + video_channel->SetCryptoOptions(crypto_options_);
|
| if (!video_channel->Init()) {
|
| delete video_channel;
|
| return NULL;
|
| @@ -346,6 +365,7 @@ DataChannel* ChannelManager::CreateDataChannel_w(
|
|
|
| DataChannel* data_channel = new DataChannel(
|
| worker_thread_, media_channel, transport_controller, content_name, rtcp);
|
| + data_channel->SetCryptoOptions(crypto_options_);
|
| if (!data_channel->Init()) {
|
| LOG(LS_WARNING) << "Failed to init data channel.";
|
| delete data_channel;
|
|
|