Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(807)

Unified Diff: webrtc/pc/webrtcsession.cc

Issue 2794943002: Delete MediaController class, move Call ownership to PeerConnection. (Closed)
Patch Set: Hack for injecting a FakeCall, and re-enable TestPacketOptionsAndOnPacketSent test. Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webrtc/pc/webrtcsession.cc
diff --git a/webrtc/pc/webrtcsession.cc b/webrtc/pc/webrtcsession.cc
index c6046e905fd48e3a57b98315d49bebe091b56dfd..54ef1a923e7fb20cb37ffc9516238c3773d5da53 100644
--- a/webrtc/pc/webrtcsession.cc
+++ b/webrtc/pc/webrtcsession.cc
@@ -461,7 +461,9 @@ bool CheckForRemoteIceRestart(const SessionDescriptionInterface* old_desc,
}
WebRtcSession::WebRtcSession(
- webrtc::MediaControllerInterface* media_controller,
+ cricket::ChannelManager* channel_manager,
+ const cricket::MediaConfig& media_config,
+ RtcEventLog* event_log,
rtc::Thread* network_thread,
rtc::Thread* worker_thread,
rtc::Thread* signaling_thread,
@@ -477,8 +479,9 @@ WebRtcSession::WebRtcSession(
sid_(rtc::ToString(rtc::CreateRandomId64() & LLONG_MAX)),
transport_controller_(std::move(transport_controller)),
sctp_factory_(std::move(sctp_factory)),
- media_controller_(media_controller),
- channel_manager_(media_controller_->channel_manager()),
+ media_config_(media_config),
+ event_log_(event_log),
+ channel_manager_(channel_manager),
ice_observer_(NULL),
ice_connection_state_(PeerConnectionInterface::kIceConnectionNew),
ice_connection_receiving_(true),
@@ -525,6 +528,11 @@ WebRtcSession::~WebRtcSession() {
}
#endif
+ // Make sure Call is destructed on the worker thread.
+ if (state() != STATE_CLOSED) {
+ worker_thread_->Invoke<void>(RTC_FROM_HERE,
+ rtc::Bind(&WebRtcSession::Close_w, this));
+ }
LOG(LS_INFO) << "Session: " << id() << " is destroyed.";
}
@@ -620,9 +628,29 @@ bool WebRtcSession::Initialize(
webrtc_session_desc_factory_->SetSdesPolicy(cricket::SEC_DISABLED);
}
+ worker_thread_->Invoke<void>(RTC_FROM_HERE,
+ rtc::Bind(&WebRtcSession::Init_w, this));
+
return true;
}
+void WebRtcSession::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 WebRtcSession::Close() {
SetState(STATE_CLOSED);
RemoveUnusedChannels(nullptr);
@@ -630,7 +658,14 @@ void WebRtcSession::Close() {
RTC_DCHECK(!video_channel_);
RTC_DCHECK(!rtp_data_channel_);
RTC_DCHECK(!sctp_transport_);
- media_controller_->Close();
+
+ worker_thread_->Invoke<void>(RTC_FROM_HERE,
+ rtc::Bind(&WebRtcSession::Close_w, this));
+}
+
+void WebRtcSession::Close_w() {
+ RTC_DCHECK(worker_thread_->IsCurrent());
+ call_.reset();
}
cricket::BaseChannel* WebRtcSession::GetChannel(
@@ -1757,7 +1792,7 @@ bool WebRtcSession::CreateVoiceChannel(const cricket::ContentInfo* content,
}
voice_channel_.reset(channel_manager_->CreateVoiceChannel(
- media_controller_, rtp_dtls_transport, rtcp_dtls_transport,
+ call(), media_config_, rtp_dtls_transport, rtcp_dtls_transport,
transport_controller_->signaling_thread(), content->name, SrtpRequired(),
audio_options_));
if (!voice_channel_) {
@@ -1799,7 +1834,7 @@ bool WebRtcSession::CreateVideoChannel(const cricket::ContentInfo* content,
}
video_channel_.reset(channel_manager_->CreateVideoChannel(
- media_controller_, rtp_dtls_transport, rtcp_dtls_transport,
+ call(), media_config_, rtp_dtls_transport, rtcp_dtls_transport,
transport_controller_->signaling_thread(), content->name, SrtpRequired(),
video_options_));
@@ -1864,7 +1899,7 @@ bool WebRtcSession::CreateDataChannel(const cricket::ContentInfo* content,
}
rtp_data_channel_.reset(channel_manager_->CreateRtpDataChannel(
- media_controller_, rtp_dtls_transport, rtcp_dtls_transport,
+ media_config_, rtp_dtls_transport, rtcp_dtls_transport,
transport_controller_->signaling_thread(), content->name,
SrtpRequired()));
@@ -2313,7 +2348,7 @@ void WebRtcSession::ReportNegotiatedCiphers(
void WebRtcSession::OnSentPacket_w(const rtc::SentPacket& sent_packet) {
RTC_DCHECK(worker_thread()->IsCurrent());
- media_controller_->call_w()->OnSentPacket(sent_packet);
+ call()->OnSentPacket(sent_packet);
}
const std::string WebRtcSession::GetTransportName(

Powered by Google App Engine
This is Rietveld 408576698