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

Side by Side Diff: webrtc/video/video_send_stream.cc

Issue 2657863002: Move more calls to webrtc::field_trial::FindFullName into ctor (Closed)
Patch Set: . Created 3 years, 10 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 | « webrtc/modules/congestion_controller/transport_feedback_adapter.cc ('k') | 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 #include "webrtc/video/video_send_stream.h" 10 #include "webrtc/video/video_send_stream.h"
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 285
286 pad_up_to_bitrate_bps = 286 pad_up_to_bitrate_bps =
287 std::max(pad_up_to_bitrate_bps, min_transmit_bitrate_bps); 287 std::max(pad_up_to_bitrate_bps, min_transmit_bitrate_bps);
288 288
289 return pad_up_to_bitrate_bps; 289 return pad_up_to_bitrate_bps;
290 } 290 }
291 291
292 uint32_t CalculateOverheadRateBps(int packets_per_second, 292 uint32_t CalculateOverheadRateBps(int packets_per_second,
293 size_t overhead_bytes_per_packet, 293 size_t overhead_bytes_per_packet,
294 uint32_t max_overhead_bps) { 294 uint32_t max_overhead_bps) {
295 if (webrtc::field_trial::FindFullName("WebRTC-SendSideBwe-WithOverhead") !=
296 "Enabled")
297 return 0;
298 uint32_t overhead_bps = 295 uint32_t overhead_bps =
299 static_cast<uint32_t>(8 * overhead_bytes_per_packet * packets_per_second); 296 static_cast<uint32_t>(8 * overhead_bytes_per_packet * packets_per_second);
300 return std::min(overhead_bps, max_overhead_bps); 297 return std::min(overhead_bps, max_overhead_bps);
301 } 298 }
302 299
303 int CalculatePacketRate(uint32_t bitrate_bps, size_t packet_size_bytes) { 300 int CalculatePacketRate(uint32_t bitrate_bps, size_t packet_size_bytes) {
304 size_t packet_size_bits = 8 * packet_size_bytes; 301 size_t packet_size_bits = 8 * packet_size_bytes;
305 // Ceil for int value of bitrate_bps / packet_size_bits. 302 // Ceil for int value of bitrate_bps / packet_size_bits.
306 return static_cast<int>((bitrate_bps + packet_size_bits - 1) / 303 return static_cast<int>((bitrate_bps + packet_size_bits - 1) /
307 packet_size_bits); 304 packet_size_bits);
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 const RTPFragmentationHeader* fragmentation) override; 388 const RTPFragmentationHeader* fragmentation) override;
392 389
393 // Implements VideoBitrateAllocationObserver. 390 // Implements VideoBitrateAllocationObserver.
394 void OnBitrateAllocationUpdated(const BitrateAllocation& allocation) override; 391 void OnBitrateAllocationUpdated(const BitrateAllocation& allocation) override;
395 392
396 void ConfigureProtection(); 393 void ConfigureProtection();
397 void ConfigureSsrcs(); 394 void ConfigureSsrcs();
398 void SignalEncoderTimedOut(); 395 void SignalEncoderTimedOut();
399 void SignalEncoderActive(); 396 void SignalEncoderActive();
400 397
398 const bool send_side_bwe_with_overhead_;
399
401 SendStatisticsProxy* const stats_proxy_; 400 SendStatisticsProxy* const stats_proxy_;
402 const VideoSendStream::Config* const config_; 401 const VideoSendStream::Config* const config_;
403 std::map<uint32_t, RtpState> suspended_ssrcs_; 402 std::map<uint32_t, RtpState> suspended_ssrcs_;
404 403
405 ProcessThread* module_process_thread_; 404 ProcessThread* module_process_thread_;
406 rtc::ThreadChecker module_process_thread_checker_; 405 rtc::ThreadChecker module_process_thread_checker_;
407 rtc::TaskQueue* const worker_queue_; 406 rtc::TaskQueue* const worker_queue_;
408 407
409 rtc::CriticalSection encoder_activity_crit_sect_; 408 rtc::CriticalSection encoder_activity_crit_sect_;
410 CheckEncoderActivityTask* check_encoder_activity_task_ 409 CheckEncoderActivityTask* check_encoder_activity_task_
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after
751 CongestionController* congestion_controller, 750 CongestionController* congestion_controller,
752 PacketRouter* packet_router, 751 PacketRouter* packet_router,
753 BitrateAllocator* bitrate_allocator, 752 BitrateAllocator* bitrate_allocator,
754 SendDelayStats* send_delay_stats, 753 SendDelayStats* send_delay_stats,
755 VieRemb* remb, 754 VieRemb* remb,
756 ViEEncoder* vie_encoder, 755 ViEEncoder* vie_encoder,
757 RtcEventLog* event_log, 756 RtcEventLog* event_log,
758 const VideoSendStream::Config* config, 757 const VideoSendStream::Config* config,
759 int initial_encoder_max_bitrate, 758 int initial_encoder_max_bitrate,
760 std::map<uint32_t, RtpState> suspended_ssrcs) 759 std::map<uint32_t, RtpState> suspended_ssrcs)
761 : stats_proxy_(stats_proxy), 760 : send_side_bwe_with_overhead_(webrtc::field_trial::FindFullName(
761 "WebRTC-SendSideBwe-WithOverhead") == "Enabled"),
762 stats_proxy_(stats_proxy),
762 config_(config), 763 config_(config),
763 suspended_ssrcs_(std::move(suspended_ssrcs)), 764 suspended_ssrcs_(std::move(suspended_ssrcs)),
764 module_process_thread_(nullptr), 765 module_process_thread_(nullptr),
765 worker_queue_(worker_queue), 766 worker_queue_(worker_queue),
766 check_encoder_activity_task_(nullptr), 767 check_encoder_activity_task_(nullptr),
767 call_stats_(call_stats), 768 call_stats_(call_stats),
768 congestion_controller_(congestion_controller), 769 congestion_controller_(congestion_controller),
769 packet_router_(packet_router), 770 packet_router_(packet_router),
770 bitrate_allocator_(bitrate_allocator), 771 bitrate_allocator_(bitrate_allocator),
771 remb_(remb), 772 remb_(remb),
(...skipping 447 matching lines...) Expand 10 before | Expand all | Expand 10 after
1219 uint32_t VideoSendStreamImpl::OnBitrateUpdated(uint32_t bitrate_bps, 1220 uint32_t VideoSendStreamImpl::OnBitrateUpdated(uint32_t bitrate_bps,
1220 uint8_t fraction_loss, 1221 uint8_t fraction_loss,
1221 int64_t rtt, 1222 int64_t rtt,
1222 int64_t probing_interval_ms) { 1223 int64_t probing_interval_ms) {
1223 RTC_DCHECK_RUN_ON(worker_queue_); 1224 RTC_DCHECK_RUN_ON(worker_queue_);
1224 RTC_DCHECK(payload_router_.IsActive()) 1225 RTC_DCHECK(payload_router_.IsActive())
1225 << "VideoSendStream::Start has not been called."; 1226 << "VideoSendStream::Start has not been called.";
1226 1227
1227 // Substract overhead from bitrate. 1228 // Substract overhead from bitrate.
1228 rtc::CritScope lock(&overhead_bytes_per_packet_crit_); 1229 rtc::CritScope lock(&overhead_bytes_per_packet_crit_);
1229 uint32_t payload_bitrate_bps = 1230 uint32_t payload_bitrate_bps = bitrate_bps;
1230 bitrate_bps - 1231 if (send_side_bwe_with_overhead_) {
1231 CalculateOverheadRateBps( 1232 payload_bitrate_bps -= CalculateOverheadRateBps(
1232 CalculatePacketRate(bitrate_bps, 1233 CalculatePacketRate(bitrate_bps,
1233 config_->rtp.max_packet_size + 1234 config_->rtp.max_packet_size +
1234 transport_overhead_bytes_per_packet_), 1235 transport_overhead_bytes_per_packet_),
1235 overhead_bytes_per_packet_ + transport_overhead_bytes_per_packet_, 1236 overhead_bytes_per_packet_ + transport_overhead_bytes_per_packet_,
1236 bitrate_bps); 1237 bitrate_bps);
1238 }
1237 1239
1238 // Get the encoder target rate. It is the estimated network rate - 1240 // Get the encoder target rate. It is the estimated network rate -
1239 // protection overhead. 1241 // protection overhead.
1240 encoder_target_rate_bps_ = protection_bitrate_calculator_.SetTargetRates( 1242 encoder_target_rate_bps_ = protection_bitrate_calculator_.SetTargetRates(
1241 payload_bitrate_bps, stats_proxy_->GetSendFrameRate(), fraction_loss, 1243 payload_bitrate_bps, stats_proxy_->GetSendFrameRate(), fraction_loss,
1242 rtt); 1244 rtt);
1243 1245
1244 uint32_t encoder_overhead_rate_bps = CalculateOverheadRateBps( 1246 uint32_t encoder_overhead_rate_bps =
1245 CalculatePacketRate(encoder_target_rate_bps_, 1247 send_side_bwe_with_overhead_
1246 config_->rtp.max_packet_size + 1248 ? CalculateOverheadRateBps(
1247 transport_overhead_bytes_per_packet_ - 1249 CalculatePacketRate(encoder_target_rate_bps_,
1248 overhead_bytes_per_packet_), 1250 config_->rtp.max_packet_size +
1249 overhead_bytes_per_packet_ + transport_overhead_bytes_per_packet_, 1251 transport_overhead_bytes_per_packet_ -
1250 bitrate_bps - encoder_target_rate_bps_); 1252 overhead_bytes_per_packet_),
1253 overhead_bytes_per_packet_ +
1254 transport_overhead_bytes_per_packet_,
1255 bitrate_bps - encoder_target_rate_bps_)
1256 : 0;
1251 1257
1252 // When the field trial "WebRTC-SendSideBwe-WithOverhead" is enabled 1258 // When the field trial "WebRTC-SendSideBwe-WithOverhead" is enabled
1253 // protection_bitrate includes overhead. 1259 // protection_bitrate includes overhead.
1254 uint32_t protection_bitrate = 1260 uint32_t protection_bitrate =
1255 bitrate_bps - (encoder_target_rate_bps_ + encoder_overhead_rate_bps); 1261 bitrate_bps - (encoder_target_rate_bps_ + encoder_overhead_rate_bps);
1256 1262
1257 encoder_target_rate_bps_ = 1263 encoder_target_rate_bps_ =
1258 std::min(encoder_max_bitrate_bps_, encoder_target_rate_bps_); 1264 std::min(encoder_max_bitrate_bps_, encoder_target_rate_bps_);
1259 vie_encoder_->OnBitrateUpdated(encoder_target_rate_bps_, fraction_loss, rtt); 1265 vie_encoder_->OnBitrateUpdated(encoder_target_rate_bps_, fraction_loss, rtt);
1260 stats_proxy_->OnSetEncoderTargetRate(encoder_target_rate_bps_); 1266 stats_proxy_->OnSetEncoderTargetRate(encoder_target_rate_bps_);
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
1328 std::min(config_->rtp.max_packet_size, 1334 std::min(config_->rtp.max_packet_size,
1329 kPathMTU - transport_overhead_bytes_per_packet_); 1335 kPathMTU - transport_overhead_bytes_per_packet_);
1330 1336
1331 for (RtpRtcp* rtp_rtcp : rtp_rtcp_modules_) { 1337 for (RtpRtcp* rtp_rtcp : rtp_rtcp_modules_) {
1332 rtp_rtcp->SetMaxRtpPacketSize(rtp_packet_size); 1338 rtp_rtcp->SetMaxRtpPacketSize(rtp_packet_size);
1333 } 1339 }
1334 } 1340 }
1335 1341
1336 } // namespace internal 1342 } // namespace internal
1337 } // namespace webrtc 1343 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/congestion_controller/transport_feedback_adapter.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698