From b47da9f8cc64c1e4355d3c13233df3288bedd879 Mon Sep 17 00:00:00 2001 From: Harsh Maniar Date: Wed, 2 Sep 2020 22:03:02 -0700 Subject: [PATCH] Adding field trial to control send buffer size MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug: webrtc:11905 Change-Id: I81eaaff4157d9859d826db94ee6fceda89f5d2fd Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/183341 Reviewed-by: Erik Språng Reviewed-by: Johannes Kron Commit-Queue: Johannes Kron Cr-Commit-Position: refs/heads/master@{#32058} --- media/engine/webrtc_video_engine.cc | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/media/engine/webrtc_video_engine.cc b/media/engine/webrtc_video_engine.cc index 8f150cedca..fa46e92f58 100644 --- a/media/engine/webrtc_video_engine.cc +++ b/media/engine/webrtc_video_engine.cc @@ -1759,13 +1759,14 @@ void WebRtcVideoChannel::SetInterface(NetworkInterface* iface) { // The group should be a positive integer with an explicit size, in // which case that is used as UDP recevie buffer size. All other values shall // result in the default value being used. - const std::string group_name = + const std::string group_name_recv_buf_size = webrtc::field_trial::FindFullName("WebRTC-IncreasedReceivebuffers"); int recv_buffer_size = kVideoRtpRecvBufferSize; - if (!group_name.empty() && - (sscanf(group_name.c_str(), "%d", &recv_buffer_size) != 1 || + if (!group_name_recv_buf_size.empty() && + (sscanf(group_name_recv_buf_size.c_str(), "%d", &recv_buffer_size) != 1 || recv_buffer_size <= 0)) { - RTC_LOG(LS_WARNING) << "Invalid receive buffer size: " << group_name; + RTC_LOG(LS_WARNING) << "Invalid receive buffer size: " + << group_name_recv_buf_size; recv_buffer_size = kVideoRtpRecvBufferSize; } @@ -1776,8 +1777,19 @@ void WebRtcVideoChannel::SetInterface(NetworkInterface* iface) { // In b/15152257, we are seeing a significant number of packets discarded // due to lack of socket buffer space, although it's not yet clear what the // ideal value should be. + const std::string group_name_send_buf_size = + webrtc::field_trial::FindFullName("WebRTC-SendBufferSizeBytes"); + int send_buffer_size = kVideoRtpSendBufferSize; + if (!group_name_send_buf_size.empty() && + (sscanf(group_name_send_buf_size.c_str(), "%d", &send_buffer_size) != 1 || + send_buffer_size <= 0)) { + RTC_LOG(LS_WARNING) << "Invalid send buffer size: " + << group_name_send_buf_size; + send_buffer_size = kVideoRtpSendBufferSize; + } + MediaChannel::SetOption(NetworkInterface::ST_RTP, rtc::Socket::OPT_SNDBUF, - kVideoRtpSendBufferSize); + send_buffer_size); } void WebRtcVideoChannel::SetFrameDecryptor(