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

Unified Diff: webrtc/call/call.cc

Issue 2880323002: Move ownership of RtpTransportControllerSendInterface from Call to PeerConnection.
Patch Set: Delete shadowing member variables in BitrateEstimatorTest. Created 3 years, 7 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/call/call.h ('k') | webrtc/call/call_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/call/call.cc
diff --git a/webrtc/call/call.cc b/webrtc/call/call.cc
index a1aa1de5f725c0b47f278df4cf4b2919d59a32c7..5f4c276a22923c61ae506837097a6c9ef4d643bd 100644
--- a/webrtc/call/call.cc
+++ b/webrtc/call/call.cc
@@ -155,8 +155,7 @@ class Call : public webrtc::Call,
public SendSideCongestionController::Observer,
public BitrateAllocator::LimitObserver {
public:
- Call(const Call::Config& config,
- std::unique_ptr<RtpTransportControllerSendInterface> transport_send);
+ explicit Call(const Call::Config& config);
virtual ~Call();
// Implements webrtc::Call.
@@ -331,7 +330,6 @@ class Call : public webrtc::Call,
std::map<std::string, rtc::NetworkRoute> network_routes_;
- std::unique_ptr<RtpTransportControllerSendInterface> transport_send_;
ReceiveSideCongestionController receive_side_cc_;
const std::unique_ptr<SendDelayStats> video_send_delay_stats_;
const int64_t start_ms_;
@@ -358,21 +356,12 @@ std::string Call::Stats::ToString(int64_t time_ms) const {
}
Call* Call::Create(const Call::Config& config) {
- return new internal::Call(config,
- rtc::MakeUnique<RtpTransportControllerSend>(
- Clock::GetRealTimeClock(), config.event_log));
-}
-
-Call* Call::Create(
- const Call::Config& config,
- std::unique_ptr<RtpTransportControllerSendInterface> transport_send) {
- return new internal::Call(config, std::move(transport_send));
+ return new internal::Call(config);
}
namespace internal {
-Call::Call(const Call::Config& config,
- std::unique_ptr<RtpTransportControllerSendInterface> transport_send)
+Call::Call(const Call::Config& config)
: clock_(Clock::GetRealTimeClock()),
num_cpu_cores_(CpuInfo::DetectNumberOfCores()),
module_process_thread_(ProcessThread::Create("ModuleProcessThread")),
@@ -393,7 +382,11 @@ Call::Call(const Call::Config& config,
configured_max_padding_bitrate_bps_(0),
estimated_send_bitrate_kbps_counter_(clock_, nullptr, true),
pacer_bitrate_kbps_counter_(clock_, nullptr, true),
- receive_side_cc_(clock_, transport_send->packet_router()),
+ // TODO(nisse): Always uses the video transport for now.
+ // receive_side_cc_ ownership should be moved to the
+ // corresponding RtpTransportControllerReceiveInterface.
+ receive_side_cc_(clock_,
+ config.video_rtp_transport_send->packet_router()),
video_send_delay_stats_(new SendDelayStats(clock_)),
start_ms_(clock_->TimeInMilliseconds()),
worker_queue_("call_worker_queue") {
@@ -407,23 +400,21 @@ Call::Call(const Call::Config& config,
config.bitrate_config.start_bitrate_bps);
}
Trace::CreateTrace();
- transport_send->send_side_cc()->RegisterNetworkObserver(this);
- transport_send_ = std::move(transport_send);
- transport_send_->send_side_cc()->SignalNetworkState(kNetworkDown);
- transport_send_->send_side_cc()->SetBweBitrates(
- config_.bitrate_config.min_bitrate_bps,
- config_.bitrate_config.start_bitrate_bps,
- config_.bitrate_config.max_bitrate_bps);
+ config.send_side_cc->RegisterNetworkObserver(this);
+ config.send_side_cc->SignalNetworkState(kNetworkDown);
+ // TODO(nisse): Move this to caller.
+ config.send_side_cc->SetBweBitrates(
+ config.bitrate_config.min_bitrate_bps,
+ config.bitrate_config.start_bitrate_bps,
+ config.bitrate_config.max_bitrate_bps);
call_stats_->RegisterStatsObserver(&receive_side_cc_);
- call_stats_->RegisterStatsObserver(transport_send_->send_side_cc());
+ call_stats_->RegisterStatsObserver(config.send_side_cc);
module_process_thread_->Start();
module_process_thread_->RegisterModule(call_stats_.get(), RTC_FROM_HERE);
module_process_thread_->RegisterModule(&receive_side_cc_, RTC_FROM_HERE);
- module_process_thread_->RegisterModule(transport_send_->send_side_cc(),
- RTC_FROM_HERE);
- pacer_thread_->RegisterModule(transport_send_->send_side_cc()->pacer(),
- RTC_FROM_HERE);
+ module_process_thread_->RegisterModule(config.send_side_cc, RTC_FROM_HERE);
+ pacer_thread_->RegisterModule(config.send_side_cc->pacer(), RTC_FROM_HERE);
pacer_thread_->RegisterModule(
receive_side_cc_.GetRemoteBitrateEstimator(true), RTC_FROM_HERE);
@@ -440,18 +431,18 @@ Call::~Call() {
RTC_CHECK(video_receive_streams_.empty());
pacer_thread_->Stop();
- pacer_thread_->DeRegisterModule(transport_send_->send_side_cc()->pacer());
+ pacer_thread_->DeRegisterModule(config_.send_side_cc->pacer());
pacer_thread_->DeRegisterModule(
receive_side_cc_.GetRemoteBitrateEstimator(true));
- module_process_thread_->DeRegisterModule(transport_send_->send_side_cc());
+ module_process_thread_->DeRegisterModule(config_.send_side_cc);
module_process_thread_->DeRegisterModule(&receive_side_cc_);
module_process_thread_->DeRegisterModule(call_stats_.get());
module_process_thread_->Stop();
call_stats_->DeregisterStatsObserver(&receive_side_cc_);
- call_stats_->DeregisterStatsObserver(transport_send_->send_side_cc());
+ call_stats_->DeregisterStatsObserver(config_.send_side_cc);
int64_t first_sent_packet_ms =
- transport_send_->send_side_cc()->GetFirstPacketTimeMs();
+ config_.send_side_cc->GetFirstPacketTimeMs();
// Only update histograms after process threads have been shut down, so that
// they won't try to concurrently update stats.
{
@@ -577,7 +568,8 @@ webrtc::AudioSendStream* Call::CreateAudioSendStream(
}
AudioSendStream* send_stream = new AudioSendStream(
- config, config_.audio_state, &worker_queue_, transport_send_.get(),
+ config, config_.audio_state, &worker_queue_,
+ config_.audio_rtp_transport_send,
bitrate_allocator_.get(), event_log_, call_stats_->rtcp_rtt_stats(),
suspended_rtp_state);
{
@@ -633,7 +625,8 @@ webrtc::AudioReceiveStream* Call::CreateAudioReceiveStream(
RTC_DCHECK_RUN_ON(&configuration_thread_checker_);
event_log_->LogAudioReceiveStreamConfig(CreateRtcLogStreamConfig(config));
AudioReceiveStream* receive_stream =
- new AudioReceiveStream(transport_send_->packet_router(), config,
+ new AudioReceiveStream(config_.audio_rtp_transport_send->packet_router(),
+ config,
config_.audio_state, event_log_);
{
WriteLockScoped write_lock(*receive_crit_);
@@ -704,7 +697,8 @@ webrtc::VideoSendStream* Call::CreateVideoSendStream(
std::vector<uint32_t> ssrcs = config.rtp.ssrcs;
VideoSendStream* send_stream = new VideoSendStream(
num_cpu_cores_, module_process_thread_.get(), &worker_queue_,
- call_stats_.get(), transport_send_.get(), bitrate_allocator_.get(),
+ call_stats_.get(), config_.video_rtp_transport_send,
+ bitrate_allocator_.get(),
video_send_delay_stats_.get(), event_log_, std::move(config),
std::move(encoder_config), suspended_video_send_ssrcs_);
@@ -763,7 +757,8 @@ webrtc::VideoReceiveStream* Call::CreateVideoReceiveStream(
RTC_DCHECK_RUN_ON(&configuration_thread_checker_);
VideoReceiveStream* receive_stream =
- new VideoReceiveStream(num_cpu_cores_, transport_send_->packet_router(),
+ new VideoReceiveStream(num_cpu_cores_,
+ config_.video_rtp_transport_send->packet_router(),
std::move(configuration),
module_process_thread_.get(), call_stats_.get());
@@ -882,7 +877,7 @@ Call::Stats Call::GetStats() const {
Stats stats;
// Fetch available send/receive bitrates.
uint32_t send_bandwidth = 0;
- transport_send_->send_side_cc()->GetBitrateController()->AvailableBandwidth(
+ config_.send_side_cc->GetBitrateController()->AvailableBandwidth(
&send_bandwidth);
std::vector<unsigned int> ssrcs;
uint32_t recv_bandwidth = 0;
@@ -891,7 +886,7 @@ Call::Stats Call::GetStats() const {
stats.send_bandwidth_bps = send_bandwidth;
stats.recv_bandwidth_bps = recv_bandwidth;
stats.pacer_delay_ms =
- transport_send_->send_side_cc()->GetPacerQueuingDelayMs();
+ config_.send_side_cc->GetPacerQueuingDelayMs();
stats.rtt_ms = call_stats_->rtcp_rtt_stats()->LastProcessedRtt();
{
rtc::CritScope cs(&bitrate_crit_);
@@ -924,7 +919,7 @@ void Call::SetBitrateConfig(
config_.bitrate_config.start_bitrate_bps = bitrate_config.start_bitrate_bps;
config_.bitrate_config.max_bitrate_bps = bitrate_config.max_bitrate_bps;
RTC_DCHECK_NE(bitrate_config.start_bitrate_bps, 0);
- transport_send_->send_side_cc()->SetBweBitrates(
+ config_.send_side_cc->SetBweBitrates(
bitrate_config.min_bitrate_bps, bitrate_config.start_bitrate_bps,
bitrate_config.max_bitrate_bps);
}
@@ -1021,7 +1016,7 @@ void Call::OnNetworkRouteChanged(const std::string& transport_name,
<< " bps, max: " << config_.bitrate_config.start_bitrate_bps
<< " bps.";
RTC_DCHECK_GT(config_.bitrate_config.start_bitrate_bps, 0);
- transport_send_->send_side_cc()->OnNetworkRouteChanged(
+ config_.send_side_cc->OnNetworkRouteChanged(
network_route, config_.bitrate_config.start_bitrate_bps,
config_.bitrate_config.min_bitrate_bps,
config_.bitrate_config.max_bitrate_bps);
@@ -1057,13 +1052,13 @@ void Call::UpdateAggregateNetworkState() {
LOG(LS_INFO) << "UpdateAggregateNetworkState: aggregate_state="
<< (aggregate_state == kNetworkUp ? "up" : "down");
- transport_send_->send_side_cc()->SignalNetworkState(aggregate_state);
+ config_.send_side_cc->SignalNetworkState(aggregate_state);
}
void Call::OnSentPacket(const rtc::SentPacket& sent_packet) {
video_send_delay_stats_->OnSentPacket(sent_packet.packet_id,
clock_->TimeInMilliseconds());
- transport_send_->send_side_cc()->OnSentPacket(sent_packet);
+ config_.send_side_cc->OnSentPacket(sent_packet);
}
void Call::OnNetworkChanged(uint32_t target_bitrate_bps,
@@ -1116,7 +1111,7 @@ void Call::OnNetworkChanged(uint32_t target_bitrate_bps,
void Call::OnAllocationLimitsChanged(uint32_t min_send_bitrate_bps,
uint32_t max_padding_bitrate_bps) {
- transport_send_->send_side_cc()->SetAllocatedSendBitrateLimits(
+ config_.send_side_cc->SetAllocatedSendBitrateLimits(
min_send_bitrate_bps, max_padding_bitrate_bps);
rtc::CritScope lock(&bitrate_crit_);
min_allocated_send_bitrate_bps_ = min_send_bitrate_bps;
« no previous file with comments | « webrtc/call/call.h ('k') | webrtc/call/call_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698