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

Unified Diff: webrtc/pc/peerconnection.cc

Issue 2794943002: Delete MediaController class, move Call ownership to PeerConnection. (Closed)
Patch Set: Move Call ownership to PeerConnection, and pass pointer to WebRtcSession constructor. 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
« no previous file with comments | « webrtc/pc/peerconnection.h ('k') | webrtc/pc/peerconnectionfactory.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/pc/peerconnection.cc
diff --git a/webrtc/pc/peerconnection.cc b/webrtc/pc/peerconnection.cc
index a3981039e6cfe89554092b4c14d7f2f7b0f175e4..65203fdc731f1ef8e861e3971800d811fa2c61cc 100644
--- a/webrtc/pc/peerconnection.cc
+++ b/webrtc/pc/peerconnection.cc
@@ -426,7 +426,10 @@ PeerConnection::~PeerConnection() {
session_.reset(nullptr);
// port_allocator_ lives on the network thread and should be destroyed there.
network_thread()->Invoke<void>(RTC_FROM_HERE,
- [this] { port_allocator_.reset(nullptr); });
+ [this] { port_allocator_.reset(); });
+ // call_ must be destroyed on the worker thread.
+ factory_->worker_thread()->Invoke<void>(RTC_FROM_HERE,
+ [this] { call_.reset(); });
}
bool PeerConnection::Initialize(
@@ -457,11 +460,15 @@ bool PeerConnection::Initialize(
return false;
}
- media_controller_.reset(factory_->CreateMediaController(
- configuration.media_config, event_log_.get()));
+ // Call must be constructed on the worker thread.
+ factory_->worker_thread()->Invoke<void>(
+ RTC_FROM_HERE, rtc::Bind(&PeerConnection::CreateCall_w,
+ this));
session_.reset(new WebRtcSession(
- media_controller_.get(), factory_->network_thread(),
+ call_.get(), factory_->channel_manager(), configuration.media_config,
+ event_log_.get(),
+ factory_->network_thread(),
factory_->worker_thread(), factory_->signaling_thread(),
port_allocator_.get(),
std::unique_ptr<cricket::TransportController>(
@@ -1287,6 +1294,9 @@ void PeerConnection::Close() {
RTC_FROM_HERE,
rtc::Bind(&cricket::PortAllocator::DiscardCandidatePool,
port_allocator_.get()));
+
+ factory_->worker_thread()->Invoke<void>(RTC_FROM_HERE,
+ [this] { call_.reset(); });
}
void PeerConnection::OnSessionStateChange(WebRtcSession* /*session*/,
@@ -2314,4 +2324,22 @@ void PeerConnection::StopRtcEventLog_w() {
event_log_->StopLogging();
}
}
+
+void PeerConnection::CreateCall_w() {
the sun 2017/05/02 20:30:20 DCHECK thread affinity?
nisse-webrtc 2017/05/04 09:24:01 Done.
+ RTC_DCHECK(!call_);
+
+ const int kMinBandwidthBps = 30000;
+ const int kStartBandwidthBps = 300000;
+ const int kMaxBandwidthBps = 2000000;
+
+ webrtc::Call::Config call_config(event_log_.get());
+ call_config.audio_state =
+ factory_->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));
+}
+
} // namespace webrtc
« no previous file with comments | « webrtc/pc/peerconnection.h ('k') | webrtc/pc/peerconnectionfactory.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698