Chromium Code Reviews| Index: webrtc/ortc/rtptransportcontrolleradapter.cc |
| diff --git a/webrtc/ortc/rtptransportcontrolleradapter.cc b/webrtc/ortc/rtptransportcontrolleradapter.cc |
| index ad5d8b5d68f813f890e9f99e1d9b3f001f6583b2..b482e475fdd508f58da4753888cf6140bb9e580b 100644 |
| --- a/webrtc/ortc/rtptransportcontrolleradapter.cc |
| +++ b/webrtc/ortc/rtptransportcontrolleradapter.cc |
| @@ -121,6 +121,10 @@ RtpTransportControllerAdapter::~RtpTransportControllerAdapter() { |
| // been destroyed. This isn't safe (see error log above). |
| DestroyVideoChannel(); |
| } |
| + // Call must be destroyed on the worker thread. |
| + worker_thread_->Invoke<void>( |
| + RTC_FROM_HERE, |
| + rtc::Bind(&RtpTransportControllerAdapter::Close_w, this)); |
| } |
| RTCErrorOr<std::unique_ptr<RtpTransportInterface>> |
| @@ -584,14 +588,11 @@ RtpTransportControllerAdapter::RtpTransportControllerAdapter( |
| rtc::Thread* worker_thread) |
| : signaling_thread_(signaling_thread), |
| worker_thread_(worker_thread), |
| - media_controller_(MediaControllerInterface::Create(config, |
| - worker_thread, |
| - channel_manager, |
| - event_log)) { |
| + media_config_(config), |
| + channel_manager_(channel_manager), |
| + event_log_(event_log) { |
| RTC_DCHECK_RUN_ON(signaling_thread_); |
| - RTC_DCHECK(channel_manager); |
| - // MediaControllerInterface::Create should never fail. |
| - RTC_DCHECK(media_controller_); |
| + RTC_DCHECK(channel_manager_); |
| // Add "dummy" codecs to the descriptions, because the media engines |
| // currently reject empty lists of codecs. Note that these codecs will never |
| // actually be used, because when parameters are set, the dummy codecs will |
| @@ -603,6 +604,33 @@ RtpTransportControllerAdapter::RtpTransportControllerAdapter( |
| remote_audio_description_.AddCodec(dummy_audio); |
| local_video_description_.AddCodec(dummy_video); |
| remote_video_description_.AddCodec(dummy_video); |
| + |
| + worker_thread_->Invoke<void>( |
| + RTC_FROM_HERE, |
| + rtc::Bind(&RtpTransportControllerAdapter::Init_w, this)); |
| +} |
| + |
| +// TODO(nisse): Duplicates corresponding method in PeerConnection (used |
| +// to be in MediaController). |
|
stefan-webrtc
2017/05/05 08:47:05
I think this TODO should say when these duplicates
stefan-webrtc
2017/05/05 08:53:50
Talked offline, and duplicates are needed since th
nisse-webrtc
2017/05/05 09:02:37
I'm afraid I'm not at all familiar with the new or
Taylor Brandstetter
2017/05/05 16:32:01
I wouldn't worry about reducing this duplication.
|
| +void RtpTransportControllerAdapter::Init_w() { |
| + RTC_DCHECK(worker_thread_->IsCurrent()); |
| + RTC_DCHECK(!call_); |
| + |
| + const int kMinBandwidthBps = 30000; |
| + const int kStartBandwidthBps = 300000; |
| + const int kMaxBandwidthBps = 2000000; |
| + |
| + webrtc::Call::Config call_config(event_log_); |
| + call_config.audio_state = channel_manager_->media_engine()->GetAudioState(); |
| + call_config.bitrate_config.min_bitrate_bps = kMinBandwidthBps; |
| + call_config.bitrate_config.start_bitrate_bps = kStartBandwidthBps; |
| + call_config.bitrate_config.max_bitrate_bps = kMaxBandwidthBps; |
| + |
| + call_.reset(webrtc::Call::Create(call_config)); |
| +} |
| + |
| +void RtpTransportControllerAdapter::Close_w() { |
| + call_.reset(); |
| } |
| RTCError RtpTransportControllerAdapter::AttachAudioSender( |
| @@ -818,8 +846,8 @@ void RtpTransportControllerAdapter::OnVideoReceiverDestroyed() { |
| } |
| void RtpTransportControllerAdapter::CreateVoiceChannel() { |
| - voice_channel_ = media_controller_->channel_manager()->CreateVoiceChannel( |
| - media_controller_.get(), |
| + voice_channel_ = channel_manager_->CreateVoiceChannel( |
| + call_.get(), media_config_, |
| inner_audio_transport_->GetRtpPacketTransport()->GetInternal(), |
| inner_audio_transport_->GetRtcpPacketTransport() |
| ? inner_audio_transport_->GetRtcpPacketTransport()->GetInternal() |
| @@ -830,8 +858,8 @@ void RtpTransportControllerAdapter::CreateVoiceChannel() { |
| } |
| void RtpTransportControllerAdapter::CreateVideoChannel() { |
| - video_channel_ = media_controller_->channel_manager()->CreateVideoChannel( |
| - media_controller_.get(), |
| + video_channel_ = channel_manager_->CreateVideoChannel( |
| + call_.get(), media_config_, |
| inner_video_transport_->GetRtpPacketTransport()->GetInternal(), |
| inner_video_transport_->GetRtcpPacketTransport() |
| ? inner_video_transport_->GetRtcpPacketTransport()->GetInternal() |
| @@ -843,14 +871,14 @@ void RtpTransportControllerAdapter::CreateVideoChannel() { |
| void RtpTransportControllerAdapter::DestroyVoiceChannel() { |
| RTC_DCHECK(voice_channel_); |
| - media_controller_->channel_manager()->DestroyVoiceChannel(voice_channel_); |
| + channel_manager_->DestroyVoiceChannel(voice_channel_); |
| voice_channel_ = nullptr; |
| inner_audio_transport_ = nullptr; |
| } |
| void RtpTransportControllerAdapter::DestroyVideoChannel() { |
| RTC_DCHECK(video_channel_); |
| - media_controller_->channel_manager()->DestroyVideoChannel(video_channel_); |
| + channel_manager_->DestroyVideoChannel(video_channel_); |
| video_channel_ = nullptr; |
| inner_video_transport_ = nullptr; |
| } |