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

Side by Side Diff: webrtc/call/call.cc

Issue 2795693003: Make RtpTransportControllerSend::send_side_cc_ a direct member. (Closed)
Patch Set: Fixed nullptr error in initialization. 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 } 85 }
86 86
87 bool UseSendSideBwe(const FlexfecReceiveStream::Config& config) { 87 bool UseSendSideBwe(const FlexfecReceiveStream::Config& config) {
88 return UseSendSideBwe(config.rtp_header_extensions, config.transport_cc); 88 return UseSendSideBwe(config.rtp_header_extensions, config.transport_cc);
89 } 89 }
90 90
91 class RtpTransportControllerSend : public RtpTransportControllerSendInterface { 91 class RtpTransportControllerSend : public RtpTransportControllerSendInterface {
92 public: 92 public:
93 RtpTransportControllerSend(Clock* clock, webrtc::RtcEventLog* event_log); 93 RtpTransportControllerSend(Clock* clock, webrtc::RtcEventLog* event_log);
94 94
95 void InitCongestionControl(SendSideCongestionController::Observer* observer); 95 void RegisterNetworkObserver(
96 SendSideCongestionController::Observer* observer);
97
98 // Implements RtpTransportControllerSendInterface
96 PacketRouter* packet_router() override { return &packet_router_; } 99 PacketRouter* packet_router() override { return &packet_router_; }
97 SendSideCongestionController* send_side_cc() override { 100 SendSideCongestionController* send_side_cc() override {
98 return send_side_cc_.get(); 101 return &send_side_cc_;
99 } 102 }
100 TransportFeedbackObserver* transport_feedback_observer() override { 103 TransportFeedbackObserver* transport_feedback_observer() override {
101 return send_side_cc_.get(); 104 return &send_side_cc_;
102 } 105 }
103 RtpPacketSender* packet_sender() override { return send_side_cc_->pacer(); } 106 RtpPacketSender* packet_sender() override { return send_side_cc_.pacer(); }
104 107
105 private: 108 private:
106 Clock* const clock_;
107 webrtc::RtcEventLog* const event_log_;
108 PacketRouter packet_router_; 109 PacketRouter packet_router_;
109 // Construction delayed until InitCongestionControl, since the 110 SendSideCongestionController send_side_cc_;
110 // CongestionController wants its observer as a construction time
111 // argument, and setting it later seems non-trivial.
112 std::unique_ptr<SendSideCongestionController> send_side_cc_;
113 }; 111 };
114 112
115 RtpTransportControllerSend::RtpTransportControllerSend( 113 RtpTransportControllerSend::RtpTransportControllerSend(
116 Clock* clock, 114 Clock* clock,
117 webrtc::RtcEventLog* event_log) 115 webrtc::RtcEventLog* event_log)
118 : clock_(clock), event_log_(event_log) {} 116 : send_side_cc_(clock, nullptr /* observer */, event_log, &packet_router_) {
117 }
119 118
120 void RtpTransportControllerSend::InitCongestionControl( 119 void RtpTransportControllerSend::RegisterNetworkObserver(
121 SendSideCongestionController::Observer* observer) { 120 SendSideCongestionController::Observer* observer) {
122 // Must be called only once. 121 // Must be called only once.
123 RTC_CHECK(!send_side_cc_); 122 send_side_cc_.RegisterNetworkObserver(observer);
124 send_side_cc_.reset(new SendSideCongestionController(
125 clock_, observer, event_log_, &packet_router_));
126 } 123 }
127 124
128 } // namespace 125 } // namespace
129 126
130 namespace internal { 127 namespace internal {
131 128
132 class Call : public webrtc::Call, 129 class Call : public webrtc::Call,
133 public PacketReceiver, 130 public PacketReceiver,
134 public RecoveredPacketReceiver, 131 public RecoveredPacketReceiver,
135 public SendSideCongestionController::Observer, 132 public SendSideCongestionController::Observer,
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
303 // TODO(holmer): Remove this lock once BitrateController no longer calls 300 // TODO(holmer): Remove this lock once BitrateController no longer calls
304 // OnNetworkChanged from multiple threads. 301 // OnNetworkChanged from multiple threads.
305 rtc::CriticalSection bitrate_crit_; 302 rtc::CriticalSection bitrate_crit_;
306 uint32_t min_allocated_send_bitrate_bps_ GUARDED_BY(&bitrate_crit_); 303 uint32_t min_allocated_send_bitrate_bps_ GUARDED_BY(&bitrate_crit_);
307 uint32_t configured_max_padding_bitrate_bps_ GUARDED_BY(&bitrate_crit_); 304 uint32_t configured_max_padding_bitrate_bps_ GUARDED_BY(&bitrate_crit_);
308 AvgCounter estimated_send_bitrate_kbps_counter_ GUARDED_BY(&bitrate_crit_); 305 AvgCounter estimated_send_bitrate_kbps_counter_ GUARDED_BY(&bitrate_crit_);
309 AvgCounter pacer_bitrate_kbps_counter_ GUARDED_BY(&bitrate_crit_); 306 AvgCounter pacer_bitrate_kbps_counter_ GUARDED_BY(&bitrate_crit_);
310 307
311 std::map<std::string, rtc::NetworkRoute> network_routes_; 308 std::map<std::string, rtc::NetworkRoute> network_routes_;
312 309
313 std::unique_ptr<RtpTransportControllerSend> transport_send_; 310 std::unique_ptr<RtpTransportControllerSendInterface> transport_send_;
314 VieRemb remb_; 311 VieRemb remb_;
315 ReceiveSideCongestionController receive_side_cc_; 312 ReceiveSideCongestionController receive_side_cc_;
316 const std::unique_ptr<SendDelayStats> video_send_delay_stats_; 313 const std::unique_ptr<SendDelayStats> video_send_delay_stats_;
317 const int64_t start_ms_; 314 const int64_t start_ms_;
318 // TODO(perkj): |worker_queue_| is supposed to replace 315 // TODO(perkj): |worker_queue_| is supposed to replace
319 // |module_process_thread_|. 316 // |module_process_thread_|.
320 // |worker_queue| is defined last to ensure all pending tasks are cancelled 317 // |worker_queue| is defined last to ensure all pending tasks are cancelled
321 // and deleted before any other members. 318 // and deleted before any other members.
322 rtc::TaskQueue worker_queue_; 319 rtc::TaskQueue worker_queue_;
323 320
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
362 event_log_(config.event_log), 359 event_log_(config.event_log),
363 first_packet_sent_ms_(-1), 360 first_packet_sent_ms_(-1),
364 received_bytes_per_second_counter_(clock_, nullptr, true), 361 received_bytes_per_second_counter_(clock_, nullptr, true),
365 received_audio_bytes_per_second_counter_(clock_, nullptr, true), 362 received_audio_bytes_per_second_counter_(clock_, nullptr, true),
366 received_video_bytes_per_second_counter_(clock_, nullptr, true), 363 received_video_bytes_per_second_counter_(clock_, nullptr, true),
367 received_rtcp_bytes_per_second_counter_(clock_, nullptr, true), 364 received_rtcp_bytes_per_second_counter_(clock_, nullptr, true),
368 min_allocated_send_bitrate_bps_(0), 365 min_allocated_send_bitrate_bps_(0),
369 configured_max_padding_bitrate_bps_(0), 366 configured_max_padding_bitrate_bps_(0),
370 estimated_send_bitrate_kbps_counter_(clock_, nullptr, true), 367 estimated_send_bitrate_kbps_counter_(clock_, nullptr, true),
371 pacer_bitrate_kbps_counter_(clock_, nullptr, true), 368 pacer_bitrate_kbps_counter_(clock_, nullptr, true),
372 transport_send_(std::move(transport_send)),
373 remb_(clock_), 369 remb_(clock_),
374 receive_side_cc_(clock_, &remb_, transport_send_->packet_router()), 370 receive_side_cc_(clock_, &remb_, transport_send->packet_router()),
375 video_send_delay_stats_(new SendDelayStats(clock_)), 371 video_send_delay_stats_(new SendDelayStats(clock_)),
376 start_ms_(clock_->TimeInMilliseconds()), 372 start_ms_(clock_->TimeInMilliseconds()),
377 worker_queue_("call_worker_queue") { 373 worker_queue_("call_worker_queue") {
378 RTC_DCHECK(configuration_thread_checker_.CalledOnValidThread()); 374 RTC_DCHECK(configuration_thread_checker_.CalledOnValidThread());
379 RTC_DCHECK(config.event_log != nullptr); 375 RTC_DCHECK(config.event_log != nullptr);
380 RTC_DCHECK_GE(config.bitrate_config.min_bitrate_bps, 0); 376 RTC_DCHECK_GE(config.bitrate_config.min_bitrate_bps, 0);
381 RTC_DCHECK_GT(config.bitrate_config.start_bitrate_bps, 377 RTC_DCHECK_GT(config.bitrate_config.start_bitrate_bps,
382 config.bitrate_config.min_bitrate_bps); 378 config.bitrate_config.min_bitrate_bps);
383 if (config.bitrate_config.max_bitrate_bps != -1) { 379 if (config.bitrate_config.max_bitrate_bps != -1) {
384 RTC_DCHECK_GE(config.bitrate_config.max_bitrate_bps, 380 RTC_DCHECK_GE(config.bitrate_config.max_bitrate_bps,
385 config.bitrate_config.start_bitrate_bps); 381 config.bitrate_config.start_bitrate_bps);
386 } 382 }
387 Trace::CreateTrace(); 383 Trace::CreateTrace();
388 transport_send_->InitCongestionControl(this); 384 transport_send->RegisterNetworkObserver(this);
385 transport_send_ = std::move(transport_send);
389 transport_send_->send_side_cc()->SignalNetworkState(kNetworkDown); 386 transport_send_->send_side_cc()->SignalNetworkState(kNetworkDown);
390 transport_send_->send_side_cc()->SetBweBitrates( 387 transport_send_->send_side_cc()->SetBweBitrates(
391 config_.bitrate_config.min_bitrate_bps, 388 config_.bitrate_config.min_bitrate_bps,
392 config_.bitrate_config.start_bitrate_bps, 389 config_.bitrate_config.start_bitrate_bps,
393 config_.bitrate_config.max_bitrate_bps); 390 config_.bitrate_config.max_bitrate_bps);
394 call_stats_->RegisterStatsObserver(&receive_side_cc_); 391 call_stats_->RegisterStatsObserver(&receive_side_cc_);
395 call_stats_->RegisterStatsObserver(transport_send_->send_side_cc()); 392 call_stats_->RegisterStatsObserver(transport_send_->send_side_cc());
396 393
397 module_process_thread_->Start(); 394 module_process_thread_->Start();
398 module_process_thread_->RegisterModule(call_stats_.get(), RTC_FROM_HERE); 395 module_process_thread_->RegisterModule(call_stats_.get(), RTC_FROM_HERE);
(...skipping 926 matching lines...) Expand 10 before | Expand all | Expand 10 after
1325 (use_send_side_bwe && header.extension.hasTransportSequenceNumber)) { 1322 (use_send_side_bwe && header.extension.hasTransportSequenceNumber)) {
1326 receive_side_cc_.OnReceivedPacket( 1323 receive_side_cc_.OnReceivedPacket(
1327 packet.arrival_time_ms(), packet.payload_size() + packet.padding_size(), 1324 packet.arrival_time_ms(), packet.payload_size() + packet.padding_size(),
1328 header); 1325 header);
1329 } 1326 }
1330 } 1327 }
1331 1328
1332 } // namespace internal 1329 } // namespace internal
1333 1330
1334 } // namespace webrtc 1331 } // namespace webrtc
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698