Increase RTP send buffer size from 64kb to 256kb.

Assuming 15Mbps video bitrate at 30fps, a single frame is 62500 bytes.
Add to that some fluctuations in encoder output rate and capture fps,
and frames can easily become larger than 64kb.
Given enough bandwidth and the bursty pacer, it will not be uncommon to
send the entire frame in one batch - and if the send buffer is at 64kb
then you will likely get packetloss already in the IPC packet socket,
even before the packet has reached the network card!

It's not entirely clear what the optimal size is, but given that the
receive buffer size was increased from 64kb to 256kb for high bandwidth
receive scenarios and had negligible negative effects I think it's
pretty safe to bump the send buffer to match.

There is a field trial available that can be used as circuit breaker
in case things turn south: WebRTC-SendBufferSizeBytes

Bug: webrtc:14780
Change-Id: I6c786d993181a882e6dce832ff56dc92d2a8a341
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/290985
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#39942}
This commit is contained in:
Erik Språng 2023-01-16 12:41:48 +01:00 committed by WebRTC LUCI CQ
parent 6a34c75d5d
commit 031ebc42e6

View File

@ -15,7 +15,7 @@ namespace cricket {
const int kVideoCodecClockrate = 90000;
const int kVideoMtu = 1200;
const int kVideoRtpSendBufferSize = 65536;
const int kVideoRtpSendBufferSize = 262144;
const int kVideoRtpRecvBufferSize = 262144;
const float kHighSystemCpuThreshold = 0.85f;